Name: Shilpashree Srinivasamurthy Subject: ACS 560- Software Engineering Term: Fall 2010 Chapter 5: Software Life Cycle and Methods Textbook: Designing Concurrent, Distributed, and Real-Time Applications with UML This chapter describes various software life cycle models starting from the famous Waterfall life cycle model through Spiral model and Unified Software Development Process. This chapter takes a software life cycle perspective on software development. The first section discuss about various Software Life Cycle Approaches. - Waterfall Life Cycle Model: The waterfall model is an idealized process model in which each phase is completed before the next phase is started, and the project moves from one phase to the next without iteration or overlap. Limitations of Waterfall model: 1. Problem: Software requirements, a key factor in any software development project, are not properly tested until a working system is available to demonstrate to the end-users. Solution: Throwaway Prototypes can be used to help clarify user requirements. This approach is useful for getting feedback on the user interface and can be used for systems that have a complex user interface. 2. Problem: A working system becomes available only late in the life cycle. Thus a major design or performance problem might be undetected till the system is almost operational, at which time it is too late to take effective action. Solution: Evolutionary prototyping is a form of incremental development in which the prototype evolves through several intermediate operational systems into the delivered system. - Spiral Model: Spiral model is risk-driven. In the spiral model, the radial coordinate represents cost and the angular coordinate represents progress in completion of a cycle of the model. The spiral model consists of the four quadrants namely Define Objectives, Alternatives and Constraints (I quadrant), Analyze Risks (II quadrant), Develop Product (III quadrant) and Plan Next Cycle (IV quadrant). Each cycle of the spiral model iterates through these four quadrants. The number of cycles is project-specific. - The Unified Software Development Process: The Unified Software Development Process (USDP) is a use case –driven software process that uses the UML notation. The USDP consists of five core workflows and four phases and is iterative. Each cycle goes through all four phases and addresses the development of a core workflow. The workflows of USDP are Requirements, Analysis, Design, Implementation and Test. The life cycle phases of USDP are Inception, Elaboration, Construction and Transition. The next section talks about Design Verification and Validation by briefly discussing about software quality assurance and performance analysis of software designs. - Software Quality Assurance: Software quality assurance is a set of activities whose goal is to ensure the quality of the software product. Software verification and validation are important goals of software quality assurance. - Performance Analysis of Software Designs: Analyzing the performance of the real-time design before implementation of the real-time applications, to estimate whether the design will meet its performance goals is known as performance analysis. The next section of the chapter describes various types of Software Testing for concurrent and real-time systems. - Unit Testing: In unit testing, an individual component is tested before it is combined with other components. Unit Testing is a white box testing approach that requires the knowledge of the internals of the software - Integration Testing: Integration testing involves combining tested components into progressively more complex groupings of components and then testing these groupings until the whole software system has been put together and the interfaces tested. Integration testing is also a white box testing. - System Testing: System testing is the process of testing an integrated hardware and software system to verify that the system meets its specified requirements. During system testing several aspects of concurrent or real-time system need to ne tested which includes Functional Testing, Load (stress) Testing and Performance Testing. This is a black box testing approach based on the software requirements specification. - Acceptance Testing: The organization usually carries out acceptance testing, typically at the user installation, prior to acceptance of the system. The chapter then briefly describes the evolution of software design methods, object oriented analysis and design methods, and real-time design methods.