software development models

WHAT IS A MODEL?

A model is seen as a process or approach to something.  When the word ‘model’ is used in conjunction with software development, we open our eyes to a number of software development models that are used frequently and there are some that are specialised in various industry sectors.

The models we shall look at in this article, are probably the commonly used ones, but we shall also take a look at new developments too.  The principles surrounding each of the methods can be classed as ‘different’, because some use the word ‘phases’ or ‘stages’ or ‘iterations’ to explain the activities and deliverables. In general terms they all start with ‘information gathering’ better known as ‘requirements gathering’. You can’t start a project or a software development without knowing: why am I doing this and what is my objective.

When you start to understand each of the models in more detail, you should be able to discern which model is going to fit with your software development activity along with its suitability within your organisation.

For example, you may want the SDM to deliver fast results, or you may want a model that is very structured in its execution.  Take into consideration the cost aspect of your implementation, which doesn’t just include the financial spent, but the cost of time as well. Investigate if there is a SDM that is in use already.

THE MODELS

Rational Unified Model (RUP)

  1. Requirements discipline
  2. Analysis and design discipline
  3. Implementation discipline
  4. Test discipline
  5. Deployment discipline

An iterative process, tailored towards development organisations, or larger software development teams, it is a software product in itself, has a knowledge base and documentation archive, incorporates UML, has roles, work products & tasks, management intensive, has Lifecycle Objective Milestones, has 4 project lifecycle phases, 6 engineering disciplines, 3 supporting disciplines, very clearly defined specifications, architecture and designs as outputs to your stakeholders. Software needs to be purchased and operationally supported & maintained. Unless you: run large software development projects in your organisation on a regular basis, can recoup the investment over a short to medium timeframe, have medium/large software development teams, need to keep the risk and associated costs to a minimum this software package may be of interest.

Agile

  1. planning
  2. requirements analysis
  3. design
  4. coding
  5. unit testing
  6. acceptance testing

Minimal planning, one BRM (business relationship manager or team member) face-2-face with stakeholders, smaller development teams, low risk, focused more on the deliverable with less documentation, smaller development teams, if time-constrained advantages, best suited to small-small medium size software development projects.

Dynamic Systems Development Method (DSDM)

  1. Study
  2. Functional Model Iteration
  3. Design and Build Iteration
  4. Implementation

Iterative, most in common with RUP, issues raised at an early stage, more documentation, better time management and budget management, some core techniques used (timeboxing, MoSCoW, prototyping, testing, workshops, modelling, config mgmt), 12 roles, best suited to medium/large size software development projects.

Scrum

  1. Product backlog
  2. Sprint backlog
  3. Sprint
  4. Working increment of the software

Iterative, can be used to run software maintenance activities, 3 roles, easy to understand and manage, delivery is quick, respond to possible new customer requirements during the process, 3 main document deliverables, possibly used when all other models have been exhausted or taking over from a failed software development activity where you may want to get something out of the door to your stakeholders.

V-Model

  1. Requirements analysis
  2. System design
  3. Architecture design
  4. Module design
  5. Coding
  6. Unit testing
  7. Integration testing
  8. System testing
  9. Acceptance testing

Similar to the waterfall model, testing starts in the early stages, testing at each stage brings with it risks, problems and issues and could be a time consuming exercise, although on the other side of the coin it could save time at the end of the development phase,

THE ‘USEFUL’ LIST

Maybe you want to take the best of some models and tailor-design it for your organisation. This is a good idea if you have to focus on a certain aspect of software development, for instance if the requirements and specification phase of your lifecycle are of greater importance to you/organisation, you may have more artefacts for this particular area. Remember that the steps and activities for each of the above models doesn’t change a great deal.

The important 6 activities in your software development process will be similar to:-

  1. Requirements
  2. Design
  3. Implementation
  4. Testing
  5. Deployment
  6. Maintenance

The above 6 points should ideally incorporate documentation/artefacts in each of the activities. It’s a valuable way of capturing the lessons learned in each of the software development processes. For instance, your team may want to use Agile over the organisation’s standard RUP method, so it might be useful for you as the new project leader to identify whether your new software development project should run the long way round or the shorter way round by looking at another development project that was run previously. Remember to take into consideration the budget, time, resources and quality at all times before embarking on such a decision.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: