Chapter 1. Introduction
Some slides are adopted from Kung D., “Object-Oriented “Ob ject-Oriented Software Engineering: An Agile Unified Methodology”
Key Takeaway Points • Software engineering aims to t o significantly improve software productivity and software quality while reducing software costs and time to market. • Softw Softwar aree engi engine neer erin ing g con consi sist stss of of thre threee trac tracks ks of of interacting life cycle activities: – software development development process – software quality assurance, and – software project management
• Objec Objectt-or orie ient nted ed (O (OO) O) sof softw tware are engi engine neer erin ing g is is a specialization of software engineering. It views the world and systems as consisting of objects that interact with each other. 1-2
What Is Software Engineering?
Software engineering as a discipline is focused on • research, education, and application of engineering processes and methods • to significantly increase software productivity (P) and software quality (Q) while reducing software costs (C) and time to market (T) – software PQCT.
• What is the focus of data base systems? • What is the focus of operating systems?
1-3
Why Software Engineering? 1.
Software is expanding into all sectors of our society: • • • •
Companies rely on software to run and expand their businesses. Software systems are getting larger and more complex – millions of lines of code. Software costs are 90 – 95% of total system costs (software costs were only 5 – 10% of total system costs two decades ago.) Embedded systems contain application specific integrated circuits (ASIC), which are costly to replace – software quality is critical.
We need an engineering approach to software development. 1-4
Why Software Engineering? 2. Large software systems development requires teamwork and software engineering supports teamwork. • A typical software engineer produces an average 50–100 lines of source code per day. • A small system of 10,000 lines of code requires one software engineer to work between 100 and 200 days or 5 to 10 months. • A medium-size system of 500,000 lines of code requires a software engineer to work 5,000 to 10,000 days or 20 to 40 years. ⇒
Real-world software systems require many software engineers to work together to jointly develop a software system. 1-5
Why Software Engineering?
To work together, the software engineers must overcome three challenges, among others:
Conceptualization
Communication
Coordination
Solution: • Processes and methodologies for analysis and design • UML for communication and coordination • Tools that automate or support methodology steps. 1-6
Software Life Cycle Activities
• Software processes and methodologies consist of life cycle activities: Productivity
Software Development Process
Quality
Cost
Time to Market
Software Software Quality Project Assurance Management
1-7
1. Software Development Process
• A software development process transforms the initial system concept into the operational system running in the target environment. • It identifies the business needs, conducts a feasibility study, and formulates the requirements or capabilities that the system must deliver. • It also designs, implements, tests, and deploys the system to the target environment. 1-8
The Waterfall Process System Engineering
Software Requirements Analysis
Software Design
Coding & Unit Testing
Integration & Integration Testing
Acceptance Testing
Maintenance 1-9
Example System Development – A Radio Communication System (RCS) • The system is similar to a cellular network except that it has only one high-power base station that serves an area much larger than a cell in a cellular network. The system requirements specify the capabilities for the whole system. 4 of the many system requirements identified: – R1. The RCS shall allow mobile subscribers to initiate calls to other mobile subscribers and land-line telephones. – R2. The RCS shall allow mobile subscribers to answer calls from other subscribers. – R3. The RCS shall provide call accounting to capture and record mobile calls and bill to the subscriber accounts. – R4. The RCS shall allow authorized account administrators to 1-10 manage subscriber accounts.
System design using a block diagram
• An architectural design of the RCS using a block diagram. • 3 subsystems: mobile unit, base station, and account management.
1-11
Decomposition
• Requirement R1 involves mobile unit and base station as well as hardware and software functions. Sending a call request to the base station is the function of a mobile unit. Intercepting the request is a hardware function. Checking the call request to ensure that it is a subscriber-to-subscriber call is a software function. Therefore, the requirement R1 is decomposed into the following:
1-12
Decomposition • R1.1. Mobile units shall include automatic number identification (ANI) numbers when sending a call request. • R1.2. The base station shall verify the caller and callee using the ANI numbers before setting up a call. – R1.2.1. The software controller shall verify the caller and callee, and instruct the hardware controller to set up a connection when the verification is successful. – R1.2.2. The hardware controller shall instruct the high power transceivers to establish an air-link connection under the software control.
1-13
Decomposition • After decomposition, R1.1 is assigned to the mobile unit. • R1.2.1 is assigned to the base station software controller. • Requirement R1.2.2 is assigned to the base station hardware controller. • Similarly, R3 may be decomposed and assigned to the appropriate subsystems. • R4 is assigned to the account management subsystem because it is a software-only requirement. 1-14
Software Requirements Analysis • Refines the system requirements allocated to the software system. It also identifies other capabilities for the software system. These and the refined system requirements are specified in a software requirements specification (SRS). • For example, requirement R4 does not specify what an authorized account administrator can do to manage the accounts. Thus, the requirement is refined:
1-15
Refined Requirement R4 • R4.1. The RCS shall allow an authorized account administrator to create a sub- scriber account. • R4.2. The RCS shall allow an authorized account administrator to activate a subscriber account. • R4.3. The RCS shall allow an authorized account administrator to deactivate a subscriber account. • R4.4. The RCS shall allow an authorized account administrator to close a sub- scriber account. • R4.5. The RCS shall allow an authorized account administrator to delete a sub- scriber account that is already closed. 1-16
Software Design • Determines the software architecture, or the overall structure, of the software system. It specifies the subsystems, their relationships, the subsystems' functions, interfaces, and how the subsystems interact with each other. • Designs the user interface. • Specifies the information processing algorithms.
1-17
Architectural design for the RCS • N-tier architecture for the account management system.
1-18
Implementation, Testing, and Maintenance • During the implementation and unit testing phase, programs are written to implement the design. The programs are tested, and reviewed by peers to ensure correctness and compliance to coding standards. • During the integration phase, the program modules are integrated, and tested to ensure that they work with each other. • During acceptance testing, test cases are designed and run to check that the software indeed satisfies the software requirements. The software system is then installed in the target environment and tested by users. The software enters the maintenance phase. • During the maintenance phase, corrections, improvements, and enhancements are made continually until the system is replaced. 1-19
2. Software Quality Assurance
Software quality assurance (SQA) ensures that • the development activities are performed properly, and • the software artifacts produced by the development activities meet the software requirements and desired quality standards.
1-20
SQA Activities
1-21
3. Software Project Management • Software project management oversees the control and administration of the development and SQA activities. • Project management activities include – effort estimation – project planning and scheduling – risk management – project administration, and – others.
These activities ensure that the software system is delivered on time and within budget. 1-22
Object-Oriented Software Engineering
• Object-oriented software engineering (OOSE) is a specialization of software engineering. • The object-oriented paradigm views the world and systems as consisting of objects that relate and interact with each other. • OOSE encompasses: – – – –
OO processes OO methodologies OO modeling languages OO tools 1-23
Software Engineering and Computer Science Computer Science
Software Engineering
• Pursue optimal solutions
• Good enough is enough
• $$$ is not an important consideration
• $$$ is an important factor (PQCT – Productivity, Quality, Cost, Time to market)
• Programming in the small • Technical issues • Dealing with tame problems • Foundations of software engineering
• Programming in the large • All issues and aspects • Dealing with wicked problems • Building on top of computer science and other disciplines 1-24