1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves...

32
1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition System design Program design Program implementation (writing the program) Unit testing Integration testing System testing System delivery Maintenance

Transcript of 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves...

Page 1: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

1 EE29B Feisal Mohammed

Modeling the Process and Life CycleSoftware development usually involves the

following stages:

Requirements analysis and definition

System design

Program design

Program implementation (writing the program)

Unit testing

Integration testing

System testing

System delivery

Maintenance

Page 2: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

2 EE29B Feisal Mohammed

What is a process?

A process prescribes all of the major process activities

The process uses resources, subject to a set of constraints and produces intermediate and final resultsA process may be composed of sub-processes that are linked in some way.Each process has an entry and exit criteria, so we know when each activity begins and ends

Page 3: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

3 EE29B Feisal Mohammed

What is a process? (continued)

The activities are organises in a sequence, so that it is clear when one activity is performed relative to the other activities

Each process has guiding principles that explain the goals of each activityConstraints or controls may apply to an activity, resource or product.

Page 4: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

4 EE29B Feisal Mohammed

Reasons for modeling a processCommon understanding of the activities, resources and constraints

Helps in the finding of inconsistencies, redundancies and omissionsThe model should reflect the goals of development, such as building high-quality software. These have to be factored into the modelEvery process should be tailored for the special situation in which it will be used. Building a model helps the team understand where that tailoring is to occur

Page 5: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

5 EE29B Feisal Mohammed

Waterfall model

Page 6: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

6 EE29B Feisal Mohammed

Waterfall model: disadvantages

Failure to treat software as a problem solving process. Software is a creation process not a manufacturing process. Software evolves as the problem is understood and the alternatives are evaluated.

In particular, creation involves trying a little of this or that, developing and evaluating prototypes, assessing the feasibility of requirements, contrasting several designs, learning from failure and eventually settling on a satisfactory solution to the problem

Page 7: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

7 EE29B Feisal Mohammed

Waterfall model: disadvantages

It provides no guidance of how each activity transforms one artifact into another, such as requirements to design. Thus the model provides no guidance to manageres and developers on how to handle changes to products and activities that are likely to occur during development.

If requirements change during coding, what changes do we make to design and code?

Page 8: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

8 EE29B Feisal Mohammed

Software development in reality

Page 9: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

9 EE29B Feisal Mohammed

Process models

The software development process can help control the thrashing by including activities and sub-processes that enhance understanding.

Prototyping is such a sub-process; a prototype is a partially developed product that enables customers and developers to examine some aspect of the proposed system and decide it is suitable or appropriate for the finished product.

Page 10: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

10 EE29B Feisal Mohammed

Prototyping model

Page 11: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

11 EE29B Feisal Mohammed

Prototyping model

Prototyping can be the basis of an effective process model. This model allows all or part of the system to be constructed quickly to understand or clarify issues.

The overall goal is to reduce risk and uncertainty in development.

Page 12: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

12 EE29B Feisal Mohammed

Phased development model

Page 13: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

13 EE29B Feisal Mohammed

Phased development model

This is used to reduce cycle time. The system is designed so that it can be delivered in pieces, enabling users to have some functionality while the rest is being developed. There are usually two systems functioning in parallel: the production system and the development system

Page 14: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

14 EE29B Feisal Mohammed

Incremental model

In the incremental model, the system as specified in the requirements is partitioned into sub-systems by funtionality. The releases are defined by beginning with one small functional sub-system and then adding functionality with each new release.

Page 15: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

15 EE29B Feisal Mohammed

Iterative model

This model delivers a full system at the very beginning and then changes the functionality of each sub-system with each new release.

Page 16: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

16 EE29B Feisal Mohammed

Phased development: advantages

Training can begin on an early release. The training process allows developers to observe how certain functions are executed, suggesting enhancements for later releases.

In this way, the developers can be very responsive to the users

Page 17: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

17 EE29B Feisal Mohammed

Phased development: advantages

Markets can be created early for functionality that has never before been offered

Frequent releases allow developers to fix unanticipated problems as they are reportedThe development team can focus on different areas of expertise with different releases.

Page 18: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

18 EE29B Feisal Mohammed

Question

Should a development organisation adopt a single process model for all of its software development? Discuss the pros and cons.

Page 19: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

19 EE29B Feisal Mohammed

Answer

Pros:

Standardization of training, terminology, the collection of process metrics, planning and estimation. Works well if the projects are very similar in nature.

Cons:Adopting a single standard process may unecessarily constrain some projects from using the process that is best suited to the problem and the solution.

Page 20: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

20 EE29B Feisal Mohammed

Question

Suppose your contract with the customer specifies that you use a particular software development process. How can work be monitored to enforce the use of theis process?

Page 21: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

21 EE29B Feisal Mohammed

Answer

Conformance to a particular process is often checked with the use of milestones. That is, the process is defined in such a way that there are tangible products in the process whose existence indicates that particular process steps have been carried out.

For example, when using the waterfall process. These intermediate products, or milestones, could be a requirement document, a design documant, the code itself, test documents etc. The timing of these products indicate whether or not the process was being followed as planned.

Page 22: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

22 EE29B Feisal Mohammed

Answer (continued)

Another way to monitor use of a process is by measuring effort. Developers working on the project could be required to report the effort they spent on different process activities. By tracking when effort is spent on which activities, progress through the steps of the process could be monitored.

Page 23: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

23 EE29B Feisal Mohammed

The Rational Unified Process

The Rational Unified Process is also a process framework that can be adapted and extended to suit the needs of an adopting organization. It is general and comprehensive enough to be used "as is," i.e., out-of-the-box, by many small-to-medium software development organizations, especially those that do not have a very strong process culture.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 24: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

24 EE29B Feisal Mohammed

The Rational Unified Process

The adopting organization can also modify, adjust, and expand the Rational Unified Process to accommodate the specific needs, characteristics, constraints, and history of its organization, culture, and domain.

A process should not be followed blindly, generating useless work and producing artifacts that are of little added value. Instead, the process must be made as lean as possible while still fulfilling its mission to help developers rapidly produce predictably high-quality software.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 25: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

25 EE29B Feisal Mohammed

The RUP Captures Software Development Best PracticesThe Rational Unified Process captures many of modern software development's best practices in a form suitable for a wide range of projects and organizations:

Develop software iteratively. Manage requirements. Use component-based architectures. Visually model software. Continuously verify software quality. Control changes to software.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 26: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

26 EE29B Feisal Mohammed

Develop Software Iteratively

Most software teams still use a waterfall process for development projects, completing in strict sequence the phases of requirement analysis, design, implementation/integration, and test.

This inefficient approach idles key team members for extended periods and defers testing until the end of the project lifecycle, when problems tend to be tough and expensive to resolve, and pose a serious threat to release deadlines. By contrast, RUP represents an iterative approach that is superior

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 27: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

27 EE29B Feisal Mohammed

Manage Requirements

Requirements management is a systematic approach to eliciting, organizing, communicating, and managing the changing requirements of a software-intensive system or application.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 28: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

28 EE29B Feisal Mohammed

Continuously Verify Quality

Often people ask why there is no worker in charge of quality in the Rational Unified Process. The answer is that quality is not added to a product by a few people. Instead, quality is the responsibility of every member of the development organization. In software development, our concern about quality is focused on two areas: product quality and process quality.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 29: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

29 EE29B Feisal Mohammed

Continuously Verify Quality (continued)

Product quality -- The quality of the principal product being produced (the software or system) and all the elements it comprises (for example, components, subsystems, architecture, and so on).

Process quality -- The degree to which an acceptable process (including measurements and criteria for quality) was implemented and adhered to during the manufacturing of the product.

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 30: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

30 EE29B Feisal Mohammed

Rational Unified Process

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 31: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

31 EE29B Feisal Mohammed

From an article by Philippe Kruchtenin http://www.therationaledge.com/

Page 32: 1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition.

32 EE29B Feisal Mohammed

New Topic: State Machines

See notes online on my webpage