Abdelghani Bellaachia Page: 1 Software Life Cycle Processes ª Objective: • Establish a work plan to coordinate effectively a set of tasks. • Improves software quality. • Allows us to manage projects more easily. • Status of projects is more easily tracked. • Provides a baseline for improvement and measurement. ª Build-and-Fix Model: • Build a product without specs or any attempt at design • Rework the product to satisfy the client • It is not practical for product of reasonable size. • Approach: Build first versionModify until customer is satisfied MaintenanceAbdelghani Bellaachia Page: 2 ª Definition: “A life cycle is the course of development changes through which a project passes from its inception as a project request to the mature state as characterized by a stable production environment.” ª According to IEEE Std 12207 (ISO/IEC 12207), Standard for Information Technology -- Software life cycle processes: • Establishes a common framework for software life cycle processes that can be referenced by the software industry. • Lists processes that can be applied during the acquisition, supply, development, operation and maintenance of software and systems containing software. ª Development Process • Note that development often accounts for less than a third of the total project! • Once a system has been built, the time spent on maintenance will be greater than the time spent on all other phases • Maintenance takes around 60% of total cost. • But note that for a very successful system (say, Unix, or Microsoft Word), maintenance can continue for a very long time. • In fact, some describe developing software as the process of maintaining a blank sheet of paper!Abdelghani Bellaachia Page: 3 ª Different Processes: z Problem identification: someone identifies a problem, which needs addressing and might be susceptible to a computerized solution. z Requirements analysis: z It is much harder than people think. z Required features that should be included in a computerized solution to provide a cost-effective solution to the problem. z Capture what the customer wants. z Develop test plan: Develop test procedures to determine if a completed product correctly provides all of required features. z Develop software design: z Analyze the required features to identify existing software that can be reused in this product. z Changes needed in reused Components. z Create high level design for new components z For each component in high level design, develop detailed design. z Also develop unit test plan for each component.Abdelghani Bellaachia Page: 4 z Built and Document: z Develop code for each module. z Develop user documentation; help text, and operations manuals to support the use and operation of the system. z Validation: Test each module z Integration and comprehensive testing: Combine different modules into completed system and test the whole system. z Maintenance: Once a system has been built, the time spent on maintenance will be greater than the time spent on all other phases. z Production: Roll out the system to the users and monitor its performance.Abdelghani Bellaachia Page: 5 ª Examples of life cycle models: • Waterfall: development done in stages. Customer signs off on each stage before continuing to the next. This addresses the expense of changing requirements in later stages. • Evolutionary: interleave activities until it's decided that any new features would cost more than justified. • Formal transformation: produce formal, mathematical specification and transform this to create running system Advantages: if transformations are correct, final system is guaranteed to meet its specification Disadvantage: we can't apply these solutions to any reasonably sized system. • Assembly from reusable components: all new systems are just constructed from existing components requires large library of components • Spiral Model: build system in phases; each phase is divided into stages including (informally) planning, review, risk analysis, construction, and evaluation.Abdelghani Bellaachia Page: 6 ª The Waterfall Model • Royce, 1970 • Consists of a set of sequential steps that a project progresses through. • Each step must be completed before the project can progress to the next step. • At the end of each step is some form of gateway, usually a formal review where that decision is made. • There is no overlap between steps. • Straightforward, simple to understand and use. • Deliverables are frozen at the end of each phase and serve as the baseline for the following phases. • You do not see the software until the end of the project.Abdelghani Bellaachia Page: 7 • Approach: Requirements analysis and specification Design and Specification Integration and System Testing Coding and Module Testing Delivery MaintenanceAbdelghani Bellaachia Page: 8 • Description of each waterfall step: 1. Requirements analysis and specifications: • Qualities required for the product: ease of use, performance, portability, etc. • Goals: an understandable, precise, complete, and consistent specification document which all people involved in the realization of the product can understand 2. Design and specification: • Partition system into modules • Establish overall system architecture and the relationship between different modules (i.e., IS_COMPOSED_OF, USES, etc.) • It should be straightforward to transform design into working program • Result: a design specification document 3. Coding and module testing: • Code and test the pieces • Module testing is the main control quality carried in this step.Abdelghani Bellaachia Page: 9 4. Integration and system testing: • Part of the previous step in case of incremental development • Integrate modules • Test complete system: alpha testing 5. Delivery • Delivery for beta testing • Delivery for customer for production • Maintenance includes fixing errors, improving existing implementation, and adding new features 6. Maintenance • Cost of the maintenance is more than 60% of the total cost. • It consists of three categories: • Corrective maintenance: correction of any remaining errors • Adaptive maintenance: due to
View Full Document