Professional Documents
Culture Documents
Introduction
Process models are abstract representations of software process – they don't contain all the small
details.
There are many different processes but all include:
Specification – defining what the system should do
Design and implementation – defining the organization of the system and implementing it
Validation – checking that it does what the customer wants
Evolution – changing the system in response to changing customer needs
A step that is often forgotten is decommission – getting rid of the system when it's no longer needed – a
system is likely to contain a lot of personal data that must be disposed of in appropriate way
In a plan driven process everything is organized upfront and the progress is measured against the plan.
In agile process planning is incremental and it is easier to change to reflect the changing needs. In
practice, most processes involve a mixture of both approaches. People have preferences but usually as
long as the process works, it is not a wrong one.
Process models
Main process models are:
Waterfall model:
Plan-driven – everything is planned in advance
Separate phases – you move to the next step after the previous one is completed
Not a very good way but used by some companies
Incremental delivery
Can be plan-driven or agile
Specification, development and validation are interleaved
Integration and configuration
The system is assembled from existing configurable elements
Can be plan-driven or agile
Waterfall model
Characteristics:
Difficult to accommodate change after the process is underway
Works best with software that has stable requirements
Good for big and complicated systems, but not the only way to develop them (Linux was
developed using agile)
Process model:
Incremental delivery
Characteristics:
Starts with a rough
description of the system
and builds on that
Specification, development
and validation happen at the
same time
The cost of change is
reduced – fewer things will
require to be changed
Customers get something
useful as early as possible – it's also easier to get feedback in this way
Problems:
Process is not visible – managers like to know what the team is doing
System structure tends to degrade as you add things
The system is integrated from existing components that are configured to adapt to the requirements
Standard approach for many business systems
Types of reusable software:
Stand-alone application systems that are configured for use in a particular environment
Collections of objects that are developed as a package to be integrated with a component
framework
Web services that are developed according to service standards and which are available for
remote invocation
Advantages:
o Reduced cost and risks as less software is developed
o Faster delivery
Disadvantages:
o There is always some requirement compromise
o Loss of control over evolution of reused system elements
Process activities
Real software processes are inter-leaved sequences of technical, collaborative and managerial activities
with the overall goal of specifying, designing, implementing and testing a software system.
The basic process activities are organized differently in different development processes.
Software specification – establishing what services are required and the constraints on the system's
operations and development
Software evolution – as requirements change through changing business circumstance, the software
supporting the business must also evolve and change.
There is increasingly less difference between software evolution and developing the new software
A prototype is an initial version of a system used to demonstrate concepts and try out design options.
Benefits of prototyping:
Improved system usability
Better match to users' needs
Improved design quality
Improved maintainability
Reduced development effort – but only if you don't throw the prototype away as you should
when it is no longer needed
Prototype development:
May be based on rapid prototyping languages (e.g. visual basic)
May involve leaving out functionality – focus on individual bits
Often don't have error checking and recovery
Focus on functional requirements but reliability and security are also good to test in prototype
Prototypes should be discarded after development (but often that doesn't happen) because:
They're not good basis for production
It may be impossible to meet non-functional requirements
Normally they have no associated documentation
They don't usually meet organizational coding standards
Prototyping allows you to create good quality products quickly with conjunction with customers.
Incremental delivery
Development and delivery broken down into increments
Highest priority requirements included in early increments
Early increments act as prototypes to help elicit requirements for later increments
Functionality available earlier
Process improvement
Process improvement means understanding existing processes and changing these processes to
increase product quality and/or reduce costs and development time. You need to understand what
already exists and whether change will improve it.
Enhancing quality, reducing costs or accelerating development process are ways of improvement.
Process maturity focuses on improving process and project management and introduce good
software engineering practice
Process metrics:
Time taken for process activities to be
completed
Resources required
Number of occurrences of particular event
Summary
Software processes are the activities
involved in producing a software system.
Software process models are abstract
representations of these processes.
General process models describe the organization of software processes. Examples of these
general models include the waterfall model, incremental delivery and reuse-oriented
development.
Requirements engineering is the process of developing a software specification. Specifications
are intended to communicate the system needs of the customer to the system developers.
Design and implementation processes are concerned with transforming a requirements
specification into an executable software system. Systematic design methods may be used as
part of this transformation.
Software validation is the process of checking that the system conforms to its specification and
that it meets the real needs of the users of the system.
Software evolution takes place when you change existing software systems to meet new
requirements. Changes are continuous and the software must evolve to remain useful.
Processes should involve activities to cope with change. This may involve a prototyping phases
that helps avoid poor decisions on requirements and design. Processes may be structured for
iterative development and delivery so that changes may be made without disrupting the system
as a whole.