220 likes | 485 Views
Software Development The Five Phases. Requirements analysis and definition ( Specification ) System and software design Implementation Integration and testing ( Validation ) Operation and maintenance ( Evolution ). Software Development The Five Phases.
E N D
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
Software specification • The process of establishing what services are required and the constraints on the system’s operation and development • Requirements engineering process • Feasibility study (“Can we do it on time and effectively?”) • Requirements elicitation and analysis (“What does it need to do?”) • Requirements specification (Write it all down.) • Requirements validation (“Does it all make sense?”) Chapter 3-III: Phases of Software Development
Requirements Engineering Chapter 3-III: Phases of Software Development
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
Software Design • The process of converting the system specification into an executable system • Software design • Design a software structure that realizes the specification • Implementation • Translate design into an executable program • Design and implementation are closely related and may be interleaved Chapter 3-III: Phases of Software Development
Design process activities • Architectural design • Abstract specification • Interface design • Component design • Data structure design • Algorithm design Chapter 3-III: Phases of Software Development
The Software Design Process Chapter 3-III: Phases of Software Development
Design methods • Systematic approaches to developing a software design • The design is usually documented as a set of graphical models • Possible models • Data-flow model • Entity-relation-attribute model • Structural model • Object models Chapter 3-III: Phases of Software Development
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
Implementation and debugging • Translating a design into a program and removing errors from that program • Programming is a personal activity - there is no generic programming process • Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process Chapter 3-III: Phases of Software Development
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
The testing process Chapter 3-III: Phases of Software Development
Testing stages • Unit testing • Individual components are tested • Module testing • Related collections of dependent components are tested • Sub-system testing • Modules are integrated into sub-systems and tested. The focus here should be on interface testing • System testing • Testing of the system as a whole. Testing of emergent properties • Acceptance testing • Testing with customer data to check that it is acceptable Chapter 3-III: Phases of Software Development
Testing phases Chapter 3-III: Phases of Software Development
Unit/Module Testing • Smoke testing • Light-weight test of each interface in a unit (module). Test that all components exist, not that they operate correction • Black-box testing (a.k.a. functional testing) • Test unit (module) strictly according to its specifications (interface description), not its implementation. • White-box testing (a.k.a. structural testing) • Testing using knowledge of implementation. Useful for exploring boundary cases. Often includes code inspection. Chapter 3-III: Phases of Software Development
Other mechanisms Other process mechanisms to improve quality: • Design reviews • Wherein the design and specification (of your system) is subjected to peer review • Can assist testing team (if distinct from design/programming team) in developing testing plans • Code reviews • Wherein the implementation is subjected to peer review • Presentation forces programmers to justify decisions • A surprisingly good way to find programming errors • Can assist testing team in developing white-box tests Chapter 3-III: Phases of Software Development
Software DevelopmentThe Five Phases • Requirements analysis and definition (Specification) • System and software design • Implementation • Integration and testing (Validation) • Operation and maintenance (Evolution) Chapter 3-III: Phases of Software Development
Software Evolution • Software is inherently flexible and can change • As requirements change through changing business circumstances, the software that supports the business must also evolve and change • Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new Chapter 3-III: Phases of Software Development
Software Evolution (con’t) • Need to revisit design and implementation decisions provide further justification for creation/maintenance of process documentation Chapter 3-III: Phases of Software Development
Automated process support (CASE) • Computer-aided software engineering (CASE) is software to support software development and evolution processes • Activity automation • Graphical editors for system model development • Data dictionary to manage design entities • Graphical UI builder for user interface construction • Debuggers to support program fault finding • Automated translators to generate new versions of a program Chapter 3-III: Phases of Software Development
CASE technology • Some improvements, but not as substantial as predicted • Software engineering requires creative thought - this is not readily automatable • Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not (yet) target group activities (groupware) Chapter 3-III: Phases of Software Development