22
1 Software Development Methodologies ن الرحيم الرحم بسمPrepared By: Eng.\ Tarig Ahmed Khalid, M.Sc., PMP , CEC, CBAP , MIEEE General Manager, Financial & Banking Systems Co. (FBS)

07 - SW Development Methodologies

Embed Size (px)

Citation preview

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 70’s till today;

▫ Aims to predict all aspects (requirements, risks...),

▫ The solution is accomplished at the end of the process

Iterative: since 80’s (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 90’s 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