Software Development Methodologies Lecture 4 PDF
Document Details
Uploaded by RetractableBromeliad
Faculty of Computer Science and Information Technology
Dr. Marwa Hussien Mohamed
Tags
Summary
This document provides an overview of various software development methodologies, including Waterfall, Parallel, RAD, Iterative, Prototyping, Throwaway Prototyping, and Agile/Scrum. It describes the advantages and disadvantages of each approach.
Full Transcript
System Analysis and Design By Dr. Marwa Hussien Mohamed Information Systems dept. Faculty of Computer Science and Information Systems 1 Lecture 4 Systems Development Methodologies 2 Learning Objectives Descr...
System Analysis and Design By Dr. Marwa Hussien Mohamed Information Systems dept. Faculty of Computer Science and Information Systems 1 Lecture 4 Systems Development Methodologies 2 Learning Objectives Describe various approaches to the SDLC that can be used to structure a development project. Explain how to select a project methodology based on project characteristics. 3 Systems Development Methodologies Systems development methodology is a formalized approach to implementing the SDLC (i.e., it is a list of steps and deliverables). There are many different system development methodologies, and they vary in terms of the progression that is followed through the phases of the SDLC. 4 1. Waterfall Development With waterfall development, analysts and users proceed sequentially from one phase to the next. Once the work produced in one phase is approved, the phase ends and the next phase begins. 5 1. Waterfall Development Advantages: Identifying requirements long before programming begins and limiting changes to the requirements as the project proceeds. Disadvantages: The design must be completely specified before programming begins, a long time elapses between the completion of the system proposal in the analysis phase and the delivery of system. If the project team misses an important requirement, expensive post- implementation programming may be needed. This rework requires going back to the initial phase and making needed changes through each of the subsequent phases in turn. 6 Parallel Development The parallel development methodologies evolved to address the lengthy time frame of waterfall development. Then the project is divided into a series of subprojects that can be designed and implemented in parallel. Once all subprojects are complete, there is a final integration of the separate pieces, and the system is delivered. 7 Parallel Development 8 Parallel Development Advantages: reduces the time required to deliver a system, so changes in the business environment are less likely to produce the need for rework. Disadvantages: voluminous deliverables and if the subprojects are not completely independent, design decisions in one subproject may affect another, and at the project end, integrating the subprojects may be quite challenging. 9 2. Rapid Application Development (RAD) A collection of methodologies that emerged in response to the weaknesses of waterfall development and its variations. RAD incorporates special techniques and computer tools to speed up the analysis, design, and implementation phases in order to get some portion of the system developed quickly and into the hands of the users for evaluation and feedback. 10 2. Rapid Application Development (RAD) Advantages: RAD can improve the speed and quality of systems development. Disadvantages: may also introduce a problem in managing user expectations. As systems are developed more quickly and users gain a better understanding of information technology, user expectations may dramatically increase, and system requirements may expand during the project. 11 Iterative development Breaks the overall project into a series of versions that are developed sequentially. The most important and fundamental requirements are bundled into the first version of the system. This version is developed quickly by a mini-waterfall process, and once implemented, the users can provide valuable feedback to be incorporated into the next version of the system. 12 Iterative development 13 Iterative development Advantages: gets a preliminary version of the system to the users quickly. Since users are working with the system, important additional requirements may be identified and incorporated into subsequent versions. Disadvantage: users begin to work with a system that is intentionally incomplete. Users must accept that only the most critical requirements of the system will be available in the early versions and must be patient with the repeated introduction of new system versions. 14 System prototyping Performs the analysis, design, and implementation phases concurrently in order to quickly develop a simplified version of the proposed system and give it to the users for evaluation and feedback. The system prototype is a “quick and dirty” version of the system and provides minimal features. Following reaction and comments from the users, the developers reanalyze, redesign, and reimplement a second prototype that corrects deficiencies and adds more features. This cycle continues until the analysts, users, and sponsor agree that the prototype provides enough functionality to be installed and used in the organization. 15 System prototyping 16 System prototyping Advantages: very useful when users have difficulty expressing requirements for the system. Disadvantage: the lack of careful, methodical analysis prior to making design and implementation decisions. System prototypes may have some fundamental design limitations that are a direct result of an inadequate understanding of the system’s true requirements early in the project. 17 Throwaway prototyping A system that is developed by this type of methodology probably requires several design prototypes during the analysis and design phases. Each of the prototypes is used to minimize the risk associated with the system by confirming that important issues are understood before the real system is built. Once the issues are resolved, the project moves into design and implementation. At this point, the design prototypes are thrown away, which is an important difference between this approach and system prototyping, in which the prototypes evolve into the final system. For example, suppose that users are not completely clear on how an order entry system should work. The analyst team might build a series of HTML pages to be viewed on a Web browser to help the users visualize such a system. 18 Throwaway prototyping 19 Throwaway prototyping Advantages: Throwaway prototyping balances the benefits of well-thought- out analysis and design phases with the advantages of using prototypes to refine key issues before a system is built. The approach usually produces more stable and reliable systems. Disadvantages: It may take longer to deliver the final system compared with system prototyping (because the prototypes do not become the final system). 20 3. Agile development A group of programming-centric methodologies that focus on streamlining the SDLC. Much of the modeling and documentation overhead is eliminated; instead, face-to-face communication is preferred. A project emphasizes simple, iterative application development in which every iteration is a complete software project, including planning, requirements analysis, design, coding, testing, and documentation. Cycles are kept short (one to four weeks), and the development team focuses on adapting to the current business environment. 21 Extreme programming (XP) Emphasizes customer satisfaction, teamwork Communication, simplicity, and feedback. Developers communicate with customers and fellow programmers. Designs are kept simple and clean. Early and frequent testing provides feedback, and developers are able to courageously respond to changing requirements and technology. Project teams are kept small. An XP project begins with user stories that describe what the system needs to do. Then, programmers code in small, simple modules and test to meet those needs. XP projects deliver results sooner than even the RAD approaches, and they rarely spend more time in gathering requirements for the system. For small projects with highly motivated, cohesive, stable, and experienced teams, XP should work just fine. However, if the project is not small or the teams aren’t clever then the likelihood of success for the XP project is reduced. 22 Extreme programming (XP) 23 Scrum A popular Agile framework used for managing complex projects, particularly in software development. It emphasizes iterative development, collaboration, and flexibility to deliver high-quality products. Sprint: A time-boxed iteration (typically 2-4 weeks) during which a specific set of features is developed and delivered. Sprint Goal: A concise statement that describes what the Development Team intends to achieve during the Sprint. Sprint Backlog: A list of tasks that the Development Team commits to completing during the Sprint. 24 Scrum 25 Scrum Events Sprint Planning: A meeting where the Development Team plans the work for the upcoming Sprint. Daily Scrum: A brief daily meeting where the Development Team updates each other on their progress and identifies any difficulties. Sprint Review: A meeting where the Development Team demonstrates the completed work to stakeholders and gathers feedback. Sprint Retrospective: A meeting where the team reflects on the Sprint and identifies areas for improvement. 26 Agile Principles 27 How to Select a Development Methodology 28