2-processes
2-processes
Feasibility study
Is it technically and financially feasible to build the system?
This may involve the development of one or more system models and
Specification
Database design, where you design the system data structures and
how these are to be represented in a database. Again, the work here
depends on whether an existing database is to be reused or a new
database is to be created.
Software validation
Verification and validation (V & V) is intended to show
that a system conforms to its specification and meets
the requirements of the system customer.
Involves checking and review processes and system
testing.
System testing involves executing the system with test
cases that are derived from the specification of the real
data to be processed by the system.
Testing is the most commonly used V & V activity.
Stages of testing
Testing stages
Development or component testing
The components making up the system are tested by the people developing the
system.
Individual components are tested independently;
Test automation tools, such as JUnit that can re-run component tests when new
versions of the component are created, are commonly used.
System testing
Testing of the system as a whole.
Finding errors that result from unexpected interactions between components and
component interface problems.
Acceptance testing/alpha testing
Testing with customer data to check that the system meets the customer’s needs.
Beta testing
When a system is to be marketed as a software product, a testing process called
‘beta testing’ is often used. Beta testing involves delivering a system to several
potential customers who agree to use that system. They report problems to the
system developers. This exposes the product to real use and detects errors that
may not have been anticipated by the system builders. After this feedback, the
system is modified and released either for further beta testing or for general sale.
Testing phases in a plan-driven software
process
Software evolution
Software is inherently flexible and can change.
As requirements change through changing business
circumstances, the software that supports the
business must also evolve and change.
Although there has been a differentiation between
development and evolution (maintenance) this is
increasingly irrelevant as fewer and fewer systems
are completely new.
System evolution
Key points
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
development, and reuse-oriented
development.
Key points
Requirements engineering is the process of
developing a software specification.
Design and implementation processes are concerned
with transforming a requirements specification into an
executable software system.
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.
The software must evolve to remain useful.
Coping with change
Coping with change
Change is inevitable in all large software projects.
Business changes lead to new and changed system
requirements.
New technologies open up new possibilities for improving
implementations.
Changing platforms require application changes.
Therefore, whatever software process model is used, it is
essential that it can accommodate changes to the software
being developed.
Change adds to the costs of software development
because it usually means that work that has been
completed has to be redone. This is called rework.
Change leads to rework so the costs of change include
both rework (e.g., re-analyzing requirements) as well as
the costs of implementing new functionality.
Reducing the costs of rework
Change avoidance, where the software process
includes activities that can anticipate possible changes
before significant rework is required.
For example, a prototype system may be developed
to show some key features of the system to
customers.
This supports change avoidance as it allows users to
experiment with the system before delivery and so
refine their requirements.
Change tolerance, where the process is designed so
that changes can be accommodated at relatively low
cost.
This normally involves some form of incremental
development.
Two ways of coping with change
and changing system
requirements.
System prototyping, where a version of the
system or part of the system is developed
quickly to check the customer’s requirements
and the feasibility of some design decisions.
Incremental delivery, where system
increments are delivered to the customer for
comment and experimentation.
Software prototyping
A prototype is an initial version of a system used to
demonstrate concepts and try out design options.
A prototype can be used in:
The requirements engineering process to help
with requirements elicitation and validation;
In design processes to explore options and
develop a UI design;
Benefits of prototyping
Improved system usability.
A closer match to users’ real needs.
Improved design quality
Improved maintainability.
Reduced development effort.
The process of prototype development
that will interact with the system and define these interactions
Elaboration
Develop an understanding of the problem domain, requirement
model, key project risks, project plan, development plan and the
system architecture.
On completion of this phase, you should have a requirements
model for the system, which may be a set of UML use-cases, an
architectural description, and a development plan for the software.
Construction
It involves system design, programming and testing. On completion
of this phase, you should have a working software system and
associated documentation that is ready for delivery to users.
Transition
Deploy the system in its operating environment. On completion of
this phase, you should have a documented software system that is
working correctly in its operational environment.
RUP iteration
In-phase iteration
Each phase is iterative with results
developed incrementally.
Cross-phase iteration
As shown by the loop in the RUP model,
the whole set of phases may be passed
incrementally.
Static View of RUP
The static view of the RUP focuses on
the activities that take place during the
development process.
These are called workflows in the RUP
description.
There are six core process workflows