3 Software Process Models Software Process Process consists

  • Slides: 40
Download presentation
3 - Software Process Models

3 - Software Process Models

Software Process • Process consists of activities/steps to be carried out in a particular

Software Process • Process consists of activities/steps to be carried out in a particular order • Software process deals with both technical and management issues • Consists of different types of process • Process for software development: produces software as endresult – multiple such processes may exist – a project follows a particular process • SP defines the approach that is taken as software is engineered. • Is not equal to software engineering, which also encompasses technologies that populate the process– technical methods and automated tools.

Characteristics of a Good Process • Should be precisely defined – no ambiguity about

Characteristics of a Good Process • Should be precisely defined – no ambiguity about what is to be done, when, how, etc. • It must be predictable – can be repeated in other projects with confidence about its outcome – Predictable with respect to effort, cost: Project A: Web-based library applications done by 3 persons in 4 months another project B (guest house bookings), similar in complexity should also take about 12 person months.

A Good Process … • Facilitates early detection of and removal of defects –

A Good Process … • Facilitates early detection of and removal of defects – Defects add to project cost – Late detection/correction is costly • It should facilitate monitoring and improvement – Based on feedback – Permit use of new tools, technologies – Permit measurements

What / who / why is Process Models? n What: Go through a series

What / who / why is Process Models? n What: Go through a series of predictable steps--- a road map that helps you create a timely, high-quality results. n Who: Software engineers and their managers, clients also. People adapt the process to their needs and follow it. n Why: Provides stability, control, and organization to an activity that can if left uncontrolled, become quite chaotic. However, modern software engineering approaches must be agile and demand ONLY those activities, controls and work products that are appropriate. n What Work products: Programs, documents, and data n What are the steps: The process you adopt depends on the software that you are building. One process might be good for aircraft avionic system, while an entirely different process would be used for website creation. n How to ensure right: A number of software process assessment mechanisms that enable us to determine the maturity of the software process. However, the quality, timeliness and long-term viability of the software the best indicators of the efficiency of the process you use. 6

A General Process Model n As we discussed before, a general process framework for

A General Process Model n As we discussed before, a general process framework for software engineering defines five framework activities-communication, planning, modeling, construction, and deployment. n Next question is: how are the framework activities and the actions and tasks that occur within each activity organized with respect to sequence and time? See the process flow for answer. 7

Process Flow 8

Process Flow 8

Process Flow n Linear process flow executes each of the five activities in sequence.

Process Flow n Linear process flow executes each of the five activities in sequence. n An iterative process flow repeats one or more of the activities before proceeding to the next. n An evolutionary process flow executes the activities in a circular manner. Each circuit leads to a more complete version of the software. n A parallel process flow executes one or more activities in parallel with other activities ( modeling for one aspect of the software in parallel with construction of another aspect of the software. 9

Software Process Model Software engineers have several choices for the selection of software process

Software Process Model Software engineers have several choices for the selection of software process models. The models are : • Linear Sequential Model • The Incremental Model • The Prototype Model • The (Boehm) Spiral Model • The Rapid Application Development Model (RAD) • Etc. • In all models, core activities are Analysis, Design, Code, Test are common. However their execution differs from model to -deployment; make changes for model. -Errors, performance -changes in requirement

Software Process Model description • A software process model is an abstract representation of

Software Process Model description • A software process model is an abstract representation of a process. It presents a description of the process. • When we describe processes, we usually talk about the activities in these processes and the ordering of these activities. • Process descriptions may also include: – Products, which are the outcomes of a process activity; – Roles, which reflect the responsibilities of the people involved in the process; – Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced.

The Linear Sequential Model (LSM) • It is one of the earliest development models.

The Linear Sequential Model (LSM) • It is one of the earliest development models. • The linear sequential model provides a systematic approach to software development. • In this approach, the process of software development is represented by a sequence of steps. • The sequential phases are what make this model linear, simple and systematic in nature. • Each phase must be completed before moving to next phase. • This model is also known as the Waterfall Model or the Classical life cycle.

The Waterfall Model It is the oldest paradigm for SE. When requirements are well

The Waterfall Model It is the oldest paradigm for SE. When requirements are well defined and reasonably stable, it leads to a linear fashion. (problems: 1. rarely linear, iteration needed. 2. hard to state all requirements explicitly. Blocking state. 3. code will not be released until very late. ) The classic life cycle suggests a systematic, sequential approach to software development. 13

Advantages of Linear Sequential Model • It is easy to understand implement. • It

Advantages of Linear Sequential Model • It is easy to understand implement. • It prohibits skipping any phase in the sequence. • It is ideal for small projects and when the requirements and goals of the project are well established in advance.

Disadvantages of Linear Sequential Model • In practical conditions, software projects are seldom sequential.

Disadvantages of Linear Sequential Model • In practical conditions, software projects are seldom sequential. Iteration and overlapping often occur. This model is not suitable for such projects. • The working version of the software is available to the customer after testing. Therefore, if there is any major error during the coding it will not be found till end of the testing. • Due to linear nature if any phase is not completed , the software analyst and developers cannot proceed further. The waterfall model is unrealistic for many reasons: • requirements must be frozen too early in the life-cycle • requirements are validated too late

Problems with the Waterfall Lifecycle 1. “Real projects rarely follow the sequential flow that

Problems with the Waterfall Lifecycle 1. “Real projects rarely follow the sequential flow that the model proposes. Iteration always occurs and creates problems in the application of the paradigm” 2. “It is often difficult for the customer to state all requirements explicitly. The classic life cycle requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects. ” 3. “The customer must have patience. A working version of the program(s) will not be available until late in the project timespan. A major blunder, if undetected until the working program is reviewed, can be disastrous. ” — Pressman, SE

The Incremental Model 18

The Incremental Model 18

The Incremental Model • • • When initial requirements are reasonably well defined, but

The Incremental Model • • • When initial requirements are reasonably well defined, but the overall scope of the development effort prevents a purely linear process. A compelling need to expand a limited set of new functions to a later system release. It combines elements of linear and parallel process flows. Each linear sequence produces deliverable increments of the software. The software is developed and delivered in small increments and the linear sequential model is applied to each increment. The first increment is often a core product with many supplementary features. Users use it and evaluate it with more modifications to better meet the needs. The core product addresses the primary needs of the final product. 19

Incremental Model (INM) 1 -1 1 -2 1 -3 1 -4 Final System Basic

Incremental Model (INM) 1 -1 1 -2 1 -3 1 -4 Final System Basic process 1 Increment process Req. Analysis S/w Solution Design Coding Test Next Increment

Advantages of using the Incremental Model • It requires less human resources, especially for

Advantages of using the Incremental Model • It requires less human resources, especially for the first few increments. • It guarantees early delivery of the final product, each increment leads to the development of the software. • If any resource staff is unavailable, it does not affect or delay the project. • The incremental model is therefore ideal for those projects in which sufficient manpower is not available to meet difficult project deadlines.

Disadvantages of Using Incremental Model • Software quality is sometimes compromised in the rush

Disadvantages of Using Incremental Model • Software quality is sometimes compromised in the rush to finish the software earlier than planned.

Evolutionary Models • Software system evolves over time as requirements often change as development

Evolutionary Models • Software system evolves over time as requirements often change as development proceeds. Thus, a straight line to a complete end product is not possible. However, a limited version must be delivered to meet competitive pressure. • Usually a set of core product or system requirements is well understood, but the details and extension have yet to be defined. • You need a process model that has been explicitly designed to accommodate a product that evolved over time. • It is iterative that enables you to develop increasingly more complete version of the software. • Two types are introduced, namely Prototyping and Spiral models. 23

Prototyping • When to use: Customer defines a set of general objectives but does

Prototyping • When to use: Customer defines a set of general objectives but does not identify detailed requirements for functions and features. Or Developer may be unsure of the efficiency of an algorithm, the form that human computer interaction should take. • What step: Begins with communication by meeting with stakeholders to define the objective, identify whatever requirements are known, outline areas where further definition is mandatory. A quick plan for prototyping and modeling (quick design) occur. Quick design focuses on a representation of those aspects the software that will be visible to end users. ( interface and output). Design leads to the construction of a prototype which will be deployed and evaluated. Stakeholder’s comments will be used to refine requirements . • Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for the actual system, and developers get to build something immediately. However, engineers may make compromises in order to get a prototype working quickly. The less-than-ideal choice may be adopted forever after you get used to it. 24

Prototyping Quick plan communication Modeling Quick design Deployment delivery & feedback Construction of prototype

Prototyping Quick plan communication Modeling Quick design Deployment delivery & feedback Construction of prototype 25

Prototyping Model • • In this model the developer and client interact to established

Prototyping Model • • In this model the developer and client interact to established the requirements of the software. Define the broad set of objectives. This is followed up by the quick design, in which the visible elements of the software, the input and the output are designed. The quick design stresses the clients view of the software. The final product of the design is a prototype. The client then evaluates the prototype and provides its recommendations and suggestion to the analyst. The process continues in an iterative manner until the all the user requirements are met.

Advantages of Prototyping Model • Due the interaction between the client and developer right

Advantages of Prototyping Model • Due the interaction between the client and developer right from the beginning , the objectives and requirements of the software is well established. • Suitable for the projects when client has not clear idea about his requirements. • The client can provide its input during development of the prototype. • The prototype serves as an aid for the development of the final product.

Disadvantages of Prototyping Model • The quality of the software development is compromised in

Disadvantages of Prototyping Model • The quality of the software development is compromised in the rush to present a working version of the software to the client. • The client look at the working version of the product at the outset and expect the final version of the product to be delivered immediately. This cause additional pressure over the developers to adopt shortcut in order to meet the final product deadline.

Evolutionary Models: The Spiral • It couples the iterative nature of prototyping with the

Evolutionary Models: The Spiral • It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of software intensive systems. • Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of definition and implementation while decreasing its degree of risk. The other is a set of anchor point milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions. • A series of evolutionary releases are delivered. During the early iterations, the release might be a model or prototype. During later iterations, increasingly more complete version of the engineered system are produced. 29

Evolutionary Models: The Spiral • The first circuit in the clockwise direction might result

Evolutionary Models: The Spiral • The first circuit in the clockwise direction might result in the product specification; subsequent passes around the spiral might be used to develop a prototype and then progressively more sophisticated versions of the software. Each pass results in adjustments to the project plan. Cost and schedule are adjusted based on feedback. Also, the number of iterations will be adjusted by project manager. • Good to develop large-scale system as software evolves as the process progresses and risk should be understood and properly reacted to. Prototyping is used to reduce risk. • However, it may be difficult to convince customers that it is controllable as it demands considerable risk assessment expertise.

Evolutionary Models: The Spiral 31

Evolutionary Models: The Spiral 31

Boehm’s Spiral Lifecycle Planning = determination of objectives, alternatives and constraints Risk Analysis =

Boehm’s Spiral Lifecycle Planning = determination of objectives, alternatives and constraints Risk Analysis = Analysis of alternatives and identification/ resolution of risks Risk = something that will delay project or increase its cost initial requirements go, no-go decision completion first prototype alpha demo Customer Evaluation = Assessment of the results of engineering © Oscar Nierstrasz evolving system ESE — Introduction Engineering = Development of the next level product ESE 1. 32

The Spiral Model • The spiral model developed by Boehm combines the philosophy of

The Spiral Model • The spiral model developed by Boehm combines the philosophy of INM and LSM models with the use of prototyping. • The spiral model is recommended where the requirements and solution call for developing full-fledge, large, complicated system with lots of features and facilities from the scratch. • It is used when experimenting on technology, trying out new skills and when the user is not able to offer requirements in clear terms. • It emphasises the quick development of the software, which is released in increments.

Advantages of Using Spiral Model The spiral model has the following advantages : •

Advantages of Using Spiral Model The spiral model has the following advantages : • This model is more in tune with large real-life project development. • Prototyping can be applied at any level in evaluation process. • This helps to reduce technical risk. • It is suitable for application that can use an object oriented approach to develop software.

Disadvantages of Using Spiral Model The spiral model has the following disadvantages: • It

Disadvantages of Using Spiral Model The spiral model has the following disadvantages: • It can cause problems in negotiating a development contract with the client. • It requires considerable experience in risk management for the project to be successful. • It requires a lot of patience and time in years before this model’s effectiveness can be assessed accurately.

Three Concerns on Evolutionary Processes • First concern is that prototyping poses a problem

Three Concerns on Evolutionary Processes • First concern is that prototyping poses a problem to project planning because of the uncertain number of cycles required to construct the product. • Second, it does not establish the maximum speed of the evolution. If the evolution occur too fast, without a period of relaxation, it is certain that the process will fall into chaos. On the other hand if the speed is too slow then productivity could be affected. • Third, software processes should be focused on flexibility and extensibility rather than on high quality. We should prioritize the speed of the development over zero defects. Extending the development in order to reach high quality could result in a late delivery of the product when the opportunity niche has disappeared. 36

Rapid Application Development: • RAD is a high speed version of linear sequential model.

Rapid Application Development: • RAD is a high speed version of linear sequential model. It is characterized by a very short development life cycle, in which the objective is to accelerate the development. • The RAD model follows a component based approach. • In this approach individual components developed by different people are assembled to develop a large software system.

Advantages of Using RAD Model: The RAD has following advantages: • Due to emphasis

Advantages of Using RAD Model: The RAD has following advantages: • Due to emphasis on rapid development , it results in the delivery of fully functional project in short time period. • It encourages the development of program component that is reusable.

Disadvantages of Using RAD Model: The RAD model has following disadvantages : • It

Disadvantages of Using RAD Model: The RAD model has following disadvantages : • It requires dedication and commitment on the part of the developers as well as the client to meet the deadline. If either party is indifferent in needs of other, the project will run into serious problem. • Its application area is restricted to system that are modular and reusable in nature. • It is not suitable for the applications that have a high degree of technical risk. • It is not suitable for large projects because they require more manpower for creating multiple RAD groups.

Still Other Process Models • Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software

Still Other Process Models • Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML) to model and develop object-oriented system iteratively and incrementally. 40

The Unified Process (UP) elaboration inception 41

The Unified Process (UP) elaboration inception 41

UP Phases 42

UP Phases 42