Prepared By: Eng.\ Tarig Ahmed Khalid, M.Sc., PMP, CEC, CBAP , MI EEE General Manager, Financial & Banking Systems Co. (FBS)
2 1. Introduction 2. Waterfall Model 3. V-Model 4. Top-Down Model 5. Bottom-Up Model 6. Rapid Prototyping 7. Spiral Model 8. Agile Model
3 1. Introduction A software development methodology or system development methodology in software engineering is used to structure, plan, and control the process of developing an information system.
The software development methodology framework didn't emerge until the 1960s. SDLC The main idea of the SDLC has been "to pursue the development of information systems in a very deliberate, structured and methodical way, requiring each stage of the life cycle from inception of the idea to delivery of the final system, to be carried out in rigidly and sequentially.
4 ISO 12207 is an ISO standard for software lifecycle processes. It aims to be the standard that defines all the tasks required for developing and maintaining software.
Primary Lifecycle Processes: According to ISO 12207, the processes are divided into five different main processes: 1. Acquisition 2. Supply 3. Development 4. Operation 5. Maintenance 5 Adaptive vs. Predictive Approach Agile Iterative / Spiral Waterfall Adaptive Predictive Waterfall: since 70s till today; Aims to predict all aspects (requirements, risks...), The solution is accomplished at the end of the process Iterative: since 80s (as opposed to Waterfall) till today; The solution features are developed incrementally, Components of the solution may be ready at the complition of the first iterations E.g: RUP, UP Agile: since 90s till today; Similar to Iterative, but the iteration duration is few weeks Each iteration may be managed according the waterfall approach E.g: Agile UP, Scrum, Crystal Clear, Extreme Programming, etc 6 2. Waterfall Model Is a sequential process in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of Requirements, Design, Construction, Testing and Maintenance. The waterfall development model originates in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development. 7 Criticism Many argue the waterfall model is a bad idea in practice It impossible for any non-trivial project to finish a phase of a software product's lifecycle perfectly before moving to the next phases and learning from them. For example, clients may not know exactly what requirements they need before reviewing a working prototype and commenting on it. They may change their requirements constantly. Designers and programmers may have little control over this. If clients change their requirements after the design is finalized, the design must be modified to accommodate the new requirements. This effectively means invalidating a good deal of working hours, which means increased cost, especially if a large amount of the project's resources has already been invested in Big Design Up Front. 8 3. V-Model The V-model is a software/ hardware development process which may be considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. 9 4. Top-Down Model Popularized by IBM in the 1970s, and its concepts are used in other SDLC models such as the Waterfall and Spiral Models. High-level requirements are documented, and programs are built to meet these requirements. Then, the next level is designed and built. Ex: Think of a menu-driven application. The top level menu items would be designed and coded, and then each sublevel would be added after the top level was finished. Each menu item represents a subsystem of the total application. The Top-down model is a good fit when the application is a new one and there is no existing functionality that can be incorporated into the new system. A major problem with the Top-down model is that real system functionality is not added and cannot be tested until late in the development process. If problems are not detected early in the project, they can be costly to remedy later. 10 5. Bottom-Up Model The lowest level of functionality is designed and programmed first, and finally all the pieces are integrated together into the finished application. The most complex components are developed and tested first. Any project show-stoppers will surface early in the project. It encourages the development and use of reusable software components that can be used multiple times across many software development projects. Ex: Again, think of a menu driven system where the development starts with the lowest level menu items. Disadvantage: An extreme amount of coordination is required to be sure that the individual software components work together correctly in the finished system. 11 6. Rapid Prototyping (Evolutionary) With the demand for faster software development, and because of many well-documented failures of traditional SDLC models, Rapid Application Development (RAD) was introduced as a better way to add functionality to an application. After a quick requirements gathering phase, a prototype is built and presented to the application users. Feedback from the user provides a loop to improve or add functionality to the application. Early RAD models did not involve the use of real data in the prototype, but new RAD implementations do use real data. The advantage of Rapid Prototyping Models is that time-to- market is greatly reduced. It skips many of the steps in traditional SDLC models in favor of fast and low-cost software development. 12 The big disadvantage of the Rapid Prototyping Model is that the process can be to fast, and, therefore, proper testing (especially security testing) may not be done. The Rapid Prototyping Model is used for graphical user interface (GUI) applications such as web-based applications. Extreme Programming (XP) is a modern incarnation of the Rapid Prototyping Model.
13 7. Spiral Model The development team starts with a small set of requirements and goes through each development phase (except Installation and Maintenance) for those set of requirements. Based on lesson learned from the initial iteration (via a risk analysis process), the development team adds functionality for additional requirements in ever-increasing "spirals" until the application is ready for the Installation and Maintenance phase. Iteration Prototype The advantage of the Spiral Model over the Waterfall Model is that the iterative approach allows development to begin even when all the system requirements are not known or understood by the development team. 14 Advantage: the iterative approach allows development to begin even when all the system requirements are not known or understood by the development team. As each prototype is tested, user feedback is used to make sure the project is on track. The risk analysis step provides a formal method to ensure the project stays on track even if requirements do change. If new techniques or business requirements make the project unnecessary, it can be canceled before too many resources are wasted. In today's business environment, the Spiral Model is the most used SDLC model. The Spiral Model combines elements of the Top-down and Bottom-up SDLC models 15 8. Agile Development Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
In February 2001 software developers [ met at a ski resort in Snowbird, Utah, to discuss lightweight development methods. They published the "Manifesto for Agile Software Development to define the approach now known as agile software development.
Some of the manifesto's authors formed the Agile Alliance, a non- profit organization that promotes software development according to the manifesto's principles. 16 Twelve principles underlie the Agile Manifesto. See: www.agilemanifesto.org www.agilealliance.org www.agilejournal.org
17 1. Customer satisfaction by rapid delivery of useful software 2. Welcome changing requirements, even late in development. 3. Working software is delivered frequently (weeks rather than months) 4. Working software is the principal measure of progress 5. Sustainable development, able to maintain a constant pace 6. Close, daily cooperation between businesspeople and developers 7. Face-to-face conversation is the best form of communication (co- location) 8. Projects are built around motivated individuals, who should be trusted 9. Continuous attention to technical excellence and good design 10. Simplicity 11. Self-organizing teams 12. Regular adaptation to changing circumstances 18 Agile approach is adopted by the modern software industry In the agile world, software requirements are developed through continual exploration of the business need. Agile offers the opportunity for getting the maximum benefit from the frequent feedback provided by the business. Wish List Priorities 19 20
21 Scrum Scrum is an agile software development framework for managing software projects / application development. Its focus is on "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal" as opposed to a "traditional, sequential approach". Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication among all team members and disciplines in the project. Scrum Team: 1. Product Owner 2. Development Team 3. Scrum Master Reference: www.scrum.org/ 22