UEU Rekayasa Perangkat Lunak 2
UEU Rekayasa Perangkat Lunak 2
SESI 2
SW Process
www.esaunggul.ac.id
Topics covered
• Software process models
• Process activities
• Coping with change
• Process improvement
www.esaunggul.ac.id
The software process
• A structured set of activities required to develop a
software system.
• Many different software processes but all involve:
– Specification – defining what the system should
do;
– Design and implementation – defining the
organization of the system and implementing the
system;
– Validation – checking that it does what the
customer wants;
– Evolution – changing the system in response to
www.esaunggul.ac.id
Software process descriptions
• When we describe and discuss processes, we usually
talk about the activities in these processes such as
specifying a data model, designing a user interface,
etc. and the ordering of these activities.
• Process descriptions may also include:
– Products, which are the outcomes of a process
activity;
– Roles, which reflect the responsibilities of the
people involved in the process;
– Pre- and post-conditions, which are statements
that are true before and after a process activity
www.esaunggul.ac.id
Plan-driven and agile processes
• Plan-driven processes are processes where all of the
process activities are planned in advance and
progress is measured against this plan.
• In agile processes, planning is incremental and it is
easier to change the process to reflect changing
customer requirements.
• In practice, most practical processes include
elements of both plan-driven and agile approaches.
• There are no right or wrong software processes.
www.esaunggul.ac.id
Software process models
www.esaunggul.ac.id
Software process models
• The waterfall model
– Plan-driven model. Separate and distinct phases of
specification and development.
• Incremental development
– Specification, development and validation are
interleaved. May be plan-driven or agile.
• Integration and configuration
– The system is assembled from existing
configurable components. May be plan-driven or
agile.
• In practice, most large systems are developed using
www.esaunggul.ac.id
The waterfall model
www.esaunggul.ac.id
Waterfall model phases
• There are separate identified phases in the waterfall
model:
– Requirements analysis and definition
– System and software design
– Implementation and unit testing
– Integration and system testing
– Operation and maintenance
• The main drawback of the waterfall model is the
difficulty of accommodating change after the
process is underway. In principle, a phase has to be
complete before moving onto the next phase.
www.esaunggul.ac.id
Waterfall model problems
• Inflexible partitioning of the project into distinct
stages makes it difficult to respond to changing
customer requirements.
– Therefore, this model is only appropriate when
the requirements are well-understood and
changes will be fairly limited during the design
process.
– Few business systems have stable requirements.
• The waterfall model is mostly used for large systems
engineering projects where a system is developed at
several sites.
www.esaunggul.ac.id
Incremental development
www.esaunggul.ac.id
Incremental development benefits
• The cost of accommodating changing customer
requirements is reduced.
– The amount of analysis and documentation that
has to be redone is much less than is required
with the waterfall model.
• It is easier to get customer feedback on the
development work that has been done.
– Customers can comment on demonstrations of
the software and see how much has been
implemented.
• More rapid delivery and deployment of useful
www.esaunggul.ac.id
Incremental development
problems
• The process is not visible.
– Managers need regular deliverables to measure
progress. If systems are developed quickly, it is not
cost-effective to produce documents that reflect
every version of the system.
• System structure tends to degrade as new
increments are added.
– Unless time and money is spent on refactoring to
improve the software, regular change tends to
corrupt its structure. Incorporating further
software changes becomes increasingly difficult
www.esaunggul.ac.id
Integration and configuration
• Based on software reuse where systems are
integrated from existing components or application
systems (sometimes called COTS -Commercial-off-
the-shelf) systems).
• Reused elements may be configured to adapt their
behaviour and functionality to a user’s requirements
• Reuse is now the standard approach for building
many types of business system
– Reuse covered in more depth in Chapter 15.
www.esaunggul.ac.id
Types of reusable software
• Stand-alone application systems (sometimes called
COTS) 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 such as .NET or J2EE.
• Web services that are developed according to
service standards and which are available for remote
invocation.
www.esaunggul.ac.id
Reuse-oriented software
engineering
www.esaunggul.ac.id
Key process stages
• Requirements specification
• Software discovery and evaluation
• Requirements refinement
• Application system configuration
• Component adaptation and integration
www.esaunggul.ac.id
Advantages and disadvantages
• Reduced costs and risks as less software is
developed from scratch
• Faster delivery and deployment of system
• But requirements compromises are inevitable so
system may not meet real needs of users
• Loss of control over evolution of reused system
elements
www.esaunggul.ac.id
Process activities
www.esaunggul.ac.id
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 four basic process activities of specification,
development, validation and evolution are organized
differently in different development processes.
• For example, in the waterfall model, they are
organized in sequence, whereas in incremental
development they are interleaved.
www.esaunggul.ac.id
The requirements engineering
process
www.esaunggul.ac.id
Software specification
• The process of establishing what services are required
and the constraints on the system’s operation and
development.
• Requirements engineering process
– Requirements elicitation and analysis
• What do the system stakeholders require or expect from
the system?
– Requirements specification
• Defining the requirements in detail
– Requirements validation
• Checking the validity of the requirements
www.esaunggul.ac.id
Software design and
implementation
• The process of converting the system specification
into an executable system.
• Software design
– Design a software structure that realises the
specification;
• Implementation
– Translate this structure into an executable
program;
• The activities of design and implementation are
closely related and may be inter-leaved.
www.esaunggul.ac.id
A general model of the design
process
www.esaunggul.ac.id
Design activities
• Architectural design, where you identify the overall
structure of the system, the principal components
(subsystems or modules), their relationships and
how they are distributed.
• Database design, where you design the system data
structures and how these are to be represented in a
database.
• Interface design, where you define the interfaces
between system components.
• Component selection and design, where you search
for reusable components. If unavailable, you design
www.esaunggul.ac.id
System implementation
• The software is implemented either by developing a
program or programs or by configuring an
application system.
• Design and implementation are interleaved activities
for most types of software system.
• Programming is an individual activity with no
standard process.
• Debugging is the activity of finding program faults
and correcting these faults.
www.esaunggul.ac.id
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.
www.esaunggul.ac.id
Stages of testing
www.esaunggul.ac.id
Testing stages
• Component testing
– Individual components are tested independently;
– Components may be functions or objects or
coherent groupings of these entities.
• System testing
– Testing of the system as a whole. Testing of
emergent properties is particularly important.
• Customer testing
– Testing with customer data to check that the
system meets the customer’s needs.
www.esaunggul.ac.id
Testing phases in a plan-driven
software process (V-model)
www.esaunggul.ac.id
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 demarcation between
development and evolution (maintenance) this is
increasingly irrelevant as fewer and fewer systems
are completely new.
www.esaunggul.ac.id
System evolution
www.esaunggul.ac.id
Coping with change
www.esaunggul.ac.id
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
• Change leads to rework so the costs of change
include both rework (e.g. re-analysing requirements)
as well as the costs of implementing new
functionality
www.esaunggul.ac.id
Reducing the costs of rework
• Change anticipation, 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.
• 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. Proposed changes may be
www.esaunggul.ac.id
Coping with changing
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
design decisions. This approach supports change
anticipation.
• Incremental delivery, where system increments are
delivered to the customer for comment and
experimentation. This supports both change
avoidance and change tolerance.
www.esaunggul.ac.id
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;
– In the testing process to run back-to-back tests.
www.esaunggul.ac.id
Benefits of prototyping
• Improved system usability.
• A closer match to users’ real needs.
• Improved design quality.
• Improved maintainability.
• Reduced development effort.
www.esaunggul.ac.id
The process of prototype
development
www.esaunggul.ac.id
Prototype development
• May be based on rapid prototyping languages or
tools
• May involve leaving out functionality
– Prototype should focus on areas of the product
that are not well-understood;
– Error checking and recovery may not be included
in the prototype;
– Focus on functional rather than non-functional
requirements such as reliability and security
www.esaunggul.ac.id
Throw-away prototypes
• Prototypes should be discarded after development
as they are not a good basis for a production system:
– It may be impossible to tune the system to meet
non-functional requirements;
– Prototypes are normally undocumented;
– The prototype structure is usually degraded
through rapid change;
– The prototype probably will not meet normal
organisational quality standards.
www.esaunggul.ac.id
Incremental delivery
• Rather than deliver the system as a single delivery,
the development and delivery is broken down into
increments with each increment delivering part of
the required functionality.
• User requirements are prioritised and the highest
priority requirements are included in early
increments.
• Once the development of an increment is started,
the requirements are frozen though requirements
for later increments can continue to evolve.
www.esaunggul.ac.id
Incremental development and
delivery
• Incremental development
– Develop the system in increments and evaluate
each increment before proceeding to the
development of the next increment;
– Normal approach used in agile methods;
– Evaluation done by user/customer proxy.
• Incremental delivery
– Deploy an increment for use by end-users;
– More realistic evaluation about practical use of
software;
– Difficult to implement for replacement systems as
www.esaunggul.ac.id
Incremental delivery
www.esaunggul.ac.id
Incremental delivery advantages
• Customer value can be delivered with each
increment so system functionality is available earlier.
• Early increments act as a prototype to help elicit
requirements for later increments.
• Lower risk of overall project failure.
• The highest priority system services tend to receive
the most testing.
www.esaunggul.ac.id
Incremental delivery problems
• Most systems require a set of basic facilities that are
used by different parts of the system.
– As requirements are not defined in detail until an
increment is to be implemented, it can be hard to
identify common facilities that are needed by all
increments.
• The essence of iterative processes is that the
specification is developed in conjunction with the
software.
– However, this conflicts with the procurement
model of many organizations, where the complete
www.esaunggul.ac.id
Process improvement
www.esaunggul.ac.id
Process improvement
• Many software companies have turned to software
process improvement as a way of enhancing the
quality of their software, reducing costs or
accelerating their development processes.
• Process improvement means understanding existing
processes and changing these processes to increase
product quality and/or reduce costs and
development time.
www.esaunggul.ac.id
Approaches to improvement
• The process maturity approach, which focuses on
improving process and project management and
introducing good software engineering practice.
– The level of process maturity reflects the extent to
which good technical and management practice
has been adopted in organizational software
development processes.
• The agile approach, which focuses on iterative
development and the reduction of overheads in the
software process.
– The primary characteristics of agile methods are
www.esaunggul.ac.id
The process improvement cycle
www.esaunggul.ac.id
Process improvement activities
• Process measurement
– You measure one or more attributes of the
software process or product. These measurements
forms a baseline that helps you decide if process
improvements have been effective.
• Process analysis
– The current process is assessed, and process
weaknesses and bottlenecks are identified.
Process models (sometimes called process maps)
that describe the process may be developed.
• Process change
www.esaunggul.ac.id
Process measurement
• Wherever possible, quantitative process data
should be collected
– However, where organisations do not have clearly defined process
standards this is very difficult as you don’t know what to measure. A
process may have to be defined before any measurement is possible.
• Process measurements should be used to
assess process improvements
– But this does not mean that measurements should drive the
improvements. The improvement driver should be the organizational
objectives.
www.esaunggul.ac.id
Process metrics
• Time taken for process activities to be
completed
– E.g. Calendar time or effort to complete an activity
or process.
• Resources required for processes or activities
– E.g. Total effort in person-days.
• Number of occurrences of a particular event
– E.g. Number of defects discovered.
www.esaunggul.ac.id
Capability maturity levels
www.esaunggul.ac.id
The SEI capability maturity model
• Initial
– Essentially uncontrolled
• Repeatable
– Product management procedures defined and
used
• Defined
– Process management procedures and strategies
defined
and used
• Managed
– Quality management strategies definedwww.esaunggul.ac.id
and used
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.
• Requirements engineering is the process of
developing a software specification.
www.esaunggul.ac.id
Key points
• 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.
• Processes should include activities such as
www.esaunggul.ac.id
Key points
• Processes may be structured for iterative
development and delivery so that changes may be
made without disrupting the system as a whole.
• The principal approaches to process improvement
are agile approaches, geared to reducing process
overheads, and maturity-based approaches based
on better process management and the use of good
software engineering practice.
• The SEI process maturity framework identifies
maturity levels that essentially correspond to the
use of good software engineering practice.
www.esaunggul.ac.id
Terima kasih
www.esaunggul.ac.id