Presentation on theme: "1 EE29B Feisal Mohammed Modeling the Process and Life Cycle Software development usually involves the following stages: Requirements analysis and definition."— Presentation transcript:
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
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 results A 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
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 activity Constraints or controls may apply to an activity, resource or product.
4 EE29B Feisal Mohammed Reasons for modeling a process Common understanding of the activities, resources and constraints Helps in the finding of inconsistencies, redundancies and omissions The model should reflect the goals of development, such as building high-quality software. These have to be factored into the model Every 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
5 EE29B Feisal Mohammed Waterfall model
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
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?
8 EE29B Feisal Mohammed Software development in reality
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.
10 EE29B Feisal Mohammed Prototyping model
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.
12 EE29B Feisal Mohammed Phased development model
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
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.
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.
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
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 reported The development team can focus on different areas of expertise with different releases.
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.
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.
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?
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.
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.
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 Kruchten in
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 Kruchten in
25 EE29B Feisal Mohammed The RUP Captures Software Development Best Practices The 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 Kruchten in
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 Kruchten in
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 Kruchten in
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 Kruchten in
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 Kruchten in
30 EE29B Feisal Mohammed Rational Unified Process From an article by Philippe Kruchten in
31 EE29B Feisal Mohammed From an article by Philippe Kruchten in
32 EE29B Feisal Mohammed New Topic: State Machines See notes online on my webpage