30
Software development Taxonomy

Software Development Taxonomy

Embed Size (px)

Citation preview

Page 1: Software Development Taxonomy

Software development

Taxonomy

Page 2: Software Development Taxonomy

Taxonomy Overview

Core Activities

Process Models

Methodologies & Frameworks

Supporting Disciplines

Tools

Standards & BOKs

2 o f 3 0

Page 3: Software Development Taxonomy

Core Activities

Requirements

Design

Construction

Testing

Debugging

Deployment

Maintenance

3 o f 3 0

Page 4: Software Development Taxonomy

Process Models

Waterfall: a sequential (non-iterative) design process in which progress is seen as flowing steadily downwards.

Incremental: the product is designed, implemented and tested incrementally until the product is finished.

V-Model: It’s like the waterfall model but Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape.

Spiral: The spiral model is similar to the incremental model, with more emphasis placed on risk analysis.

Agile: Agile development model is also a type of Incremental model. small incremental releases with each release building on previous functionality.

Concurrent Development: Focuses on concurrent engineering activities in a software engineering process such as prototyping, analysis modeling, requirements specification and design.

Prototyping: instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements.

4 o f 3 0

Page 5: Software Development Taxonomy

Waterfall Model

Source: www.mbaskool.com

5 o f 3 0

Page 6: Software Development Taxonomy

Waterfall Model - Advantages

This model is simple and easy to understand and use.

It is easy to manage due to the rigidity of the model – each phase has specific deliverablesand a review process.

In this model phases are processed and completed one at a time. Phases do not overlap.

Waterfall model works well for smaller projects where requirements a-re very wellunderstood.

6 o f 3 0

Page 7: Software Development Taxonomy

Waterfall Model – Disadvantages

Once an application is in the testing stage, it is very difficult to go back and changesomething that was not well-thought out in the concept stage.

No working software is produced until late during the life cycle.

High amounts of risk and uncertainty.

Not a good model for complex and object-oriented projects.

Poor model for long and ongoing projects.

Not suitable for the projects where requirements are at a moderate to high risk ofchanging.

7 o f 3 0

Page 8: Software Development Taxonomy

Waterfall Model – When To Use

This model is used only when the requirements are very well known, clear and fixed.

Product definition is stable.

Technology is understood.

There are no ambiguous requirements.

Ample resources with required expertise are available freely.

The project is short.

8 o f 3 0

Page 9: Software Development Taxonomy

Incremental Model

The product is decomposed into anumber of components, each ofwhich is designed and built separately(termed as builds).

Each component is delivered to theclient when it is complete. This allowspartial utilization of the product andavoids a long development time. Italso avoids a large initial capital outlayand subsequent long waiting period.

Source: www.bbci.co.uk

9 o f 3 0

Page 10: Software Development Taxonomy

Incremental Model - Advantages

Generates working software quickly and early during the software life cycle.

This model is more flexible – less costly to change scope and requirements.

It is easier to test and debug during a smaller iteration.

In this model customer can respond to each built.

Lowers initial delivery cost.

Easier tomanage risk because risky pieces are identified and handled during it’d iteration.

1 0 o f 3 0

Page 11: Software Development Taxonomy

Incremental Model – Disadvantages & When To Use

Needs good planning and design.

Needs a clear and complete definition of the whole system before it can be broken downand built incrementally.

Total cost is higher than waterfall.

There is a need to get a product to the market early.

Resources with needed skill set are not available.

A new technology is being used and There are some high risk features and goals.

1 1 o f 3 0

Page 12: Software Development Taxonomy

V-Model

Requirements

Detailed Design

Implementation

Test & Integration

Operation & Maintenance

Project Definition

Time

Project Test & Integration

Verification & Validation1 2 o f 3 0

Page 13: Software Development Taxonomy

V-Model - Advantages

Simple and easy to use.

Testing activities like planning, test designing happens well before coding.

This saves a lot of time.

Hence higher chance of success over the waterfall model.

Avoids the downward flow of the defects.

Works well for small projects where requirements are easily understood.

1 3 o f 3 0

Page 14: Software Development Taxonomy

V-Model – Disadvantages & When To Use

Very rigid and least flexible.

Software is developed during the implementation phase, so no early prototypes of thesoftware are produced.

If any changes happen in midway, then the test documents along with requirementdocuments has to be updated.

The V-shaped model should be used for small to medium sized projects whererequirements are clearly defined and fixed.

The V-Shaped model should be chosen when ample technical resources are available withneeded technical expertise.

1 4 o f 3 0

Page 15: Software Development Taxonomy

Spiral Model 1 5 o f 3 0

Page 16: Software Development Taxonomy

Spiral Model - Advantages

High amount of risk analysis hence, avoidance of Risk is enhanced.

Good for large and mission-critical projects.

Strong approval and documentation control.

Additional Functionality can be added at a later date.

Software is produced early in the software life cycle.

1 6 o f 3 0

Page 17: Software Development Taxonomy

Spiral Model - Disadvantages

Can be a costlymodel to use.

Risk analysis requires highly specific expertise.

Project’s success is highly dependent on the risk analysis phase.

Doesn’t work well for smaller projects.

1 7 o f 3 0

Page 18: Software Development Taxonomy

Spiral Model – Where To Use

When costs and risk evaluation is important

For medium to high-risk projects

unwise because of potential changes to economic priorities

Users are unsure of their needs

Requirements are complex

New product line

Significant changes are expected (research and exploration)

1 8 o f 3 0

Page 19: Software Development Taxonomy

Agile Model 1 9 o f 3 0

Page 20: Software Development Taxonomy

Agile Model - Advantages

Customer satisfaction by rapid, continuous delivery of useful software.

People and interactions are emphasized rather than process and tools.

Customers, developers and testers constantly interact with each other.

Working software is delivered frequently (weeks rather than months).

Face-to-face conversation is the best form of communication.

Close, daily cooperation between business people and developers.

Even late changes in requirements are welcomed

2 0 o f 3 0

Page 21: Software Development Taxonomy

Agile Model - Disadvantages

In case of some software deliverables, especially the large ones, it is difficult to assess theeffort required at the beginning of the software development life cycle.

There is lack of emphasis on necessary designing and documentation.

The project can easily get taken off track if the customer representative is not clear whatfinal outcome that they want.

Only senior programmers are capable of taking the kind of decisions required during thedevelopment process.

Hence it has no place for newbie programmers, unless combined with experiencedresources.

2 1 o f 3 0

Page 22: Software Development Taxonomy

Agile Model – When To Use

When new changes are needed to be implemented. The freedom agile gives to change isvery important.

New changes can be implemented at very little cost because of the frequency of newincrements that are produced.

To implement a new feature the developers need to lose only the work of a few days, oreven only hours, to roll back and implement it.

This effectively gives the customer the finished system they want or need.

Both system developers and stakeholders alike, find they also get more freedom of timeand options than if the software was developed in a more rigid sequential way.

2 4 o f 3 0

Page 23: Software Development Taxonomy

Concurrent Development 2 3 o f 3 0

Page 24: Software Development Taxonomy

Concurrent Development – How to Achieve Concurrency

1. System and component activities occur simultaneously and can be modeling using thestate-oriented approach

2. A typical client/server application is implemented with many components,each can bedesigned and realized concurrently.

2 4 o f 3 0

Page 25: Software Development Taxonomy

Concurrent Development – Why to Use

Rather than confining software engineering activities to a sequence of events, itdefines a network of activities.

Each activity on the network exists simultaneously with other activities.

Events generated within a given activity or at some other place in the activity networktrigger transitions among the states of an activity.

2 5 o f 3 0

Page 26: Software Development Taxonomy

Concurrent Development – Example

Source: http://www.manockdesign.com

2 6 o f 3 0

Page 27: Software Development Taxonomy

Prototyping – How it Works? 2 7 o f 3 0

Page 28: Software Development Taxonomy

Prototyping – Advantages

Users are actively involved in the development.

Since in this methodology a working model of the system is provided, the users get a

better understanding of the system being developed.

Errors can be detected much earlier.

Quicker user feedback is available leading to better solutions.

Missing functionality can be identified easily.

Confusing or difficult functions can be identified.

Requirements validation, Quick implementation of, incomplete, but functional, application.

2 8 o f 3 0

Page 29: Software Development Taxonomy

Prototyping – Disadvantages

Leads to implementing and then repairing way of building systems.

Practically, this methodology may increase the complexity of the system as scope of the

system may expand beyond original plans.

Incomplete application may cause application not to be used as the full system was

designed.

Incomplete or inadequate problem analysis.

2 9 o f 3 0

Page 30: Software Development Taxonomy

Made with <3

By Ali Gholami

@ Amirkabir University of Technology