190 likes | 208 Views
Teaching slides Chapter 2. Chapter 2 Software Engineering Methodologies. Contents Introduction Why a methodology? Agile methodologies Waterfall model Rational Unified Process Spiral model Incremental iteration model eXtreme programming Scrum
E N D
Teaching slides Chapter 2
Chapter 2Software Engineering Methodologies Contents • Introduction • Why a methodology? • Agile methodologies • Waterfall model • Rational Unified Process • Spiral model • Incremental iteration model • eXtreme programming • Scrum • Methodology for implementing SaaS products • A discussion on the usage of the models • Popular process standards • Process standards and software engineering methodologies • Software process activities
Chapter 2Software Engineering Methodologies Introduction Methods of using software engineering to build a software product can differ from one software project to another. It all depends on factors like difficulty in getting user software requirements, marketing strategy for the software product, size of the software product, and speed at which the software product needs to be built. There are many popular software engineering methodologies which can be used to build a software product. Some of them include Waterfall, Scrum, eXtreme Programming, Boehm’s Spiral model, Rational Unified Process etc. Depending on the needs, a software project team can choose the right methodology to develop the software product. Waterfall model is also known as plan driven methodology. Scrum and eXtreme Programming are examples of Agile methodologies. These methodologies are also known as incremental iteration models.
Chapter 2Software Engineering Methodologies Introduction Any software engineering methodology will always include software engineering core processes of requirement management, software design, software construction, software testing, software maintenance and software release. The peripheral software engineering processes include project management, feasibility study, configuration management etc. The difference in all of these software engineering methodologies lie in the way these software engineering processes are executed.
Chapter 2Software Engineering Methodologies Waterfall model with quality gates
Chapter 2Software Engineering Methodologies Waterfall model evolved when the USA military in 1970s found that the software being developed for their needs often used to exceed the budget. Often these software projects also used to take more time than expectations of the USA military. In Waterfall model, each software engineering process follows after the previous process ends. As the name suggests, in Waterfall model, the upstream processes feed the downstream processes much like in a waterfall; a downstream body of water is fed from a upstream body of water.
Chapter 2Software Engineering Methodologies Rational Unified Process Model (RUP)
Chapter 2Software Engineering Methodologies In waterfall model it is assumed that all software requirements are available and are fixed before software design can be made. In reality it is not always the case. Rational Unified Process (RUP) model overcomes this limitation by allowing iterations over any of the phase in the Waterfall model. If software requirements are not clear or complete in the first pass then using one more iteration, software requirements can be elaborated one more time to make them clear and complete. If they are still not clear then one more iteration can be taken. The RUP model has phases on X axis and workflows on Y axis. Based on the amount of work required in a phase, a heap is shown in a RUP diagram.
Chapter 2Software Engineering Methodologies Boehm’s Spiral Model
Chapter 2Software Engineering Methodologies Barry Boehm had postulated that software development work is inherently risky. Risk mitigation strategies must be built inside the software development project along side software engineering processes. This thinking resulted in evolution of Spiral model. There are 4 quadrants in this model. In each quadrant a prototype is designed, developed and tested based on user software requirements. Once the prototype is ready then next prototype is built. You keep moving from one quadrant to another using an iteration to keep building prototypes. Once complete prototype is ready then the software product can be built based on the fully deigned, developed and tested prototype.
Chapter 2Software Engineering Methodologies Incremental building of a software product using iterations
Chapter 2Software Engineering Methodologies Agile methodologies (eXtreme Programming, Scrum etc.) are named so because they help in achieving agility in the software development process. In Waterfall model it takes a long time to develop a software product. During development time it is very difficult to incorporate any changes in the software product. This makes it difficult to align the software product as per changing user needs. In Agile methodologies software products are built in increments using iterations.
Chapter 2Software Engineering Methodologies eXtreme programming eXtreme Programming (XP) is one of the most commonly used Agile methodology for building software products. Some of the peculiar terminology used in XP include pair programming, test driven development, user stories etc. The name eXtreme suggests that in this methodology software programming is taken seriously and in fact it is taken to the extreme. For example test cases are created even before implementing a business logic to ensure that the business logic can be implemented correctly and there should be no software defects in the business logic implementation.
Chapter 2Software Engineering Methodologies Scrum Scrum is another popular Agile methodology for software product development. Some of the peculiar words used with Scrum include product backlog, sprint, sprint backlog, sprint master, etc. Scrum uses lots of verbal communication among project team members. There are daily meetings where team members discuss about issues and how to tackle them. Project planning includes daily plans, sprint (iteration) plans and major release plans.
Chapter 2Software Engineering Methodologies Project plan for implementing COTS/SaaS product
Chapter 2Software Engineering Methodologies Commercial Off The Shelf (COTS) and Software as a Service (SaaS) products are already developed software products. The standard versions of these products are available in the market. However some product features required by customers may not be available in these standard versions. Custom software product features need to be developed to meet these customer specific needs. Apart from custom software product features, the project team also needs to create / migrate data in the software product. There are many alternate options available in these software products to perform any transaction. The option which suits the needs of the customer needs to be set up in the software product. This activity is known as configuration of the software product. The project planning for the COTS/SaaS products implementation include initiation, blueprinting, realization and go live. Software engineering processes inside these project processes include requirement management, fit gap analysis, solution design, customization, configuration etc.
Chapter 2Software Engineering Methodologies Benefits & drawbacks of various software methodologies Some of the factors which determine which software engineering methodology to be used for building a software product include speed, incremental versus complete, software product size etc. If the customer wants to launch a software product quickly in the market with a bare minimum product features then any agile methodology will be used for developing the software product. If the customer wants to build a large software product in a short span of time then any Waterfall based software engineering methodology will be a better choice.
Chapter 2Software Engineering Methodologies Software engineering standards Software engineering methodologies themselves need to mature over time. Otherwise they will get obsolete over time. When a new methodology is introduced, it is not mature and may have many flaws. These flaws are removed when they are discovered. Software engineering standards have been defined which help in improving software engineering methodologies and their processes. Some popular software engineering standards include Capability Maturity Model (CMM) by Software Engineering Institute at Carnegie Mellon University, ISO 2000 by International Standards Organization etc.
Chapter 2Software Engineering Methodologies Software engineering artifacts Software engineering process activities are performed to produce software project artifacts. When software requirement management activities are performed then a software requirement specification document is generated. A software design document is the result of performing software design activities. A software product build is the result of software construction activities. A tested and defect free software product is the result of software testing activities. A complete implementable version of a software product is the result of software release activities.