cs8494 Notes PDF
cs8494 Notes PDF
cs8494 Notes PDF
net
Software Engineering
UNIT I
t
Software engineering paradigm:
• The framework activit ies will always be applied on every pro ject ... BUT the tasks (and
ne
degree of rigor) for each activity will vary based on:
– the type of project
– characteristics of the project
– common sense judgment; concurrence of the project team
The software process:
.
• A structured set of activities required to develop a software system
pz
– Specification;
– Design;
– Validation;
– Evolution.
• A software process model is an abstract representation of a process. It presents a
description of a process from some particular perspective.
ee
Waterfall model/Linear Sequential Model/classic life cycle :
ad
.p
• Systems Engineering
w
– Software as part of larger system, determine requirem ents for all system
elements, allocate requirements to software.
• Software Requirements Analysis
w
functional detail. Produces (high-level) form that can be checked for quality,
conformance before coding.
• Coding
– Produce machine readable and executable form, match HW, OS and design needs.
• Testing
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Requirements analysis and definition
• System and software design
ne
• Implementation and unit testing
• Integration and system testing
• Operation and maintenance
• The main drawback of the waterfall model is the difficulty of acco mmodat ing change
after the process is underway. One phase has to be complete before moving onto the next
.
phase.
pz
• Each phase terminates only when the documents are complete and approved by the SQA
group.
• Maintenance begins when the client reports an error after having accepted the product. It
could also begin due to a change in requirements after the client has accepted the product
Waterfall model: Advantages:
• Disciplined approach
ee
• Careful checking by the Software Quality Assurance Group at the end of each phase.
• Testing in each phase.
• Documentation available at the end of each phase.
Waterfall model problems:
• It is difficult to respond to changing customer requirements.
ad
• 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 s ystem
is developed at several sites.
• The customer must have patience. A working version of the program will not be available
.p
take
• In this case prototyping paradigm may offer the best approach
• Requirements gathering
• Quick design
w
• Prototype building
• Prototype evaluation by customers
• Prototype may be refined
www.padeepz.net
www.padeepz.net
Software Engineering
• Protot ype thrown away and software developed using formal process{ it is used to define
the requirement} Prototyping
Strengths:
• Requirements can be set earlier and more reliably
• Customer sees results very quickly.
• Customer is educated in what is possible helping to refine requirements.
t
• Requirements can be communicated more clearly and completely
• Between developers and clients Requirements and design options can be
ne
investigated quickly and Cheaply
Weaknesses:
– Requires a rapid prototyping tool and expertise in using it–a cost for the
development organisation
– Smoke and mirrors - looks like a working version, but it is not.
.
The RAD Model:
pz
• Rapid Application Development is a linear sequential software development process
model that emphasizes an extremely short development cycle
• Rapid application achieved by using a component based construction approach
• If requirements are well understood and project scope is constrained the RAD process
enables a development team to create a ―fully functional systemǁ
ee Team # n
M o d e lin g
busin es s m
o d e lin g d a t a m
ode ling
proc es s m o d eli ng
C o n s t ru c t io n
Team # 2 c om ponent r eus
Co m m unicat ion e a u t o m a t ic c
ad
od e
gener a t io n
M o d el i n g t e s t in g
b u si n e ss m o d e li n
g d a t a m o d eli n g
p ro ce ss m o d e li n g
Plan n ing
C o ns t r uc t i o n De p lo ym e nt
Team # 1 co m p o n e n t re u
int egrat ion
se a u t o m a t i c co d
.p
e de liv ery
Mo de ling g e n e ra t i o f ee d b ack
n t e st i n g
b u si ne ss mo d e lin g
d at a mo d elin g
p ro ce ss mo d e l i ng
w
Co n st r uct io n
co mp o n e n t
reu se aut omat ic
co d e
w
g e n e r at i o n
t e st ing
w
6 0 - 9 0 d ays
RAD phases :
• Business modeling
• Data modeling
• Process modeling
www.padeepz.net
www.padeepz.net
Software Engineering
• Application generation
• Testing and turnover
Business modeling:
• What information drives the business process?
• What information is generated?
• Who generates it?
t
Data Modeling:
• The information flow defined as part of the business modeling phase is refined into a set
ne
of data objects that are needed to support the business.
• The characteristics ( called attributes) of each object are ident ified and the relationships
between these objects are defined
Process modeling:
• The data modeling phase are transformed to achieve the inf ormation flow necessary to
.
implement a business function.
pz
• Processing descriptions are created for adding , modifying, deleting, or retrieving a data
object
Application generation:
• RAD assumes the use of 4 generation techniques.
• Rather than creating software using conventional 3 generation programming languages,
the RAD process works to reuse existing program components (when possible) or created
ee
reusable components (when necessary)
Testing and Turnover:
• Since the RAD process emphasizes reuse, many of the program components have already
been testing.
• This reduces over all testing time.
ad
• However, new components must be tested and all interfaces must be fully exercised
Advantages &Disadvantages of RAD:
Advantages
• Extremely short development time.
• Uses component-based construction and emphasises reuse and code generation
Disadvantages
.p
• Large hum an resource requirem ents (to create all of the team s).
• Requires strong commitment between developers and customers for “rapid-fire”
activities.
• High perform ance requirem ents m aybe can’t be m et (requires tuning the com ponents).
w
i nc r em ent # n
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
a n a l y s i s
C o n s t r u c t
i o n
d e s i g n
D e p l o y m e n t
c o d e
d e l i v e r y
t e s t
f e e d b a c k
d e li ve r y of
n t h i n c rem e nt
incr em ent # 2
w
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
a n a l ys is
C o n s t r u c t i o n
d es i g n
c o d e
D e p l o y m e n t
d e li ve r y of
t e s t
d e l i v e r y
f e e d b a c k
C o m m u n i c a t i o n
P l a n n
i n g
M o d e l i n g
a n a l y s i s C o n s t r u c t i o n
d e li ve r y of
d es i g n
c o d e D e p l o y m e n t
t e s t d e l i v e r y
f e e d b a c k
1 st i ncre me nt
www.padeepz.net
www.padeepz.net
Software Engineering
t
early increments
• Once the development of an increment is started, the requirements are frozen though
ne
requirements for later increments can continue to evolve
Incremental development advantages:
• The customer is able to do some useful work after release
• Lower risk of overall project failure
• The highest priority system services tend to receive the most testing
.
Spiral Model:
pz
ee
ad
.p
w
customer
• Planning
The tasks required to define recourses, timelines, and project is reviewed and the
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Focuses attention on reuse options.
• Focuses attention on early error elimination.
ne
• Puts quality objectives up front.
• Integrates development and maintenance.
• Provides a framework for hardware/software Development.
System Engineering
.
• Software engineering occurs as a consequence of a process called system engineering.
pz
• Instead of concentrating so lely on software, s ystem engineering focuses on a variety of
elements, analyzing, designing, and organizing those elements into a s ystem that can be a
product, a service, or a technology for the transformation of information or control.
ee
ad
.p
w
w
w
www.padeepz.net
www.padeepz.net
Software Engineering
• The system engineering process usually begins with a ―world view.ǁ That is, the ent ire
business or product domain is examined to ensure that the proper business or technolog y
context can be established.
• The world view is refined to focus more fully on specific domain of interest. Within a
specific domain, the need for targeted s ystem elements (e.g., data, software, hardware,
people) is analyzed. Finally, the analysis, design, and construction of a targeted system
t
element is initiated.
ne
• At the top of the hierarchy, a very broad context is established and, at the bottom, detailed
technical activities, performed by the relevant engineering discipline (e.g., hardware or
software engineering), are conducted.
• Stated in a slight ly more formal manner, the world view (WV) is co mposed of a set of
domains (Di), which can each be a system or system of systems in its own right.
WV = {D1, D2, D3, . . . , Dn}
.
• Each domain is co mposed of specific elements (Ej) each of which serves some role in
pz
accomplishing the objective and goals of the domain or component:
Di = {E1, E2, E3, . . . , Em}
• Finally, each element is implemented by specifying the technical components (Ck) that
achieve the necessary function for an element:
ee Ej = {C1, C2, C3, . . . , Ck}
data, and electromechanical devices (e.g., sensors, motors, pumps) that provide external
world function.
3. People. Users and operators of hardware and software.
4. Database. A large, organized collection of information that is accessed via software.
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Each is a co mputerbased system in its own right. The elements of the numerical control
machine include electronic and electromechanical hardware (e.g., processor and memor y,
ne
motors, sensors), software (for communications, machine control, interpo lation), people (the
machine operator), a database (the stored NC program), documentation, and procedures.
• A similar decomposition could be applied to the robot and data entry device. Each is a
computer-based system.
• At the next level in the hierarchy, a manufacturing cell is defined. The manufacturing cell is a
.
computer-based system that may have elements of its own (e.g., computers, mechanical
pz
fixtures) and also integrates the macro elements that we have called numerical control
machine, robot, and data entry device.
• technology infrastructure
• The data architecture provides a framework for the information needs of a business or
business function. The individual building blocks of the architecture are the data objects that
are used by the business. A data object contains a set of attributes that define so me aspect,
w
• The technology infrastructure provides the foundation for the data and applicatio n
architectures. The infrastructure encompasses the hardware and software that are used to
support the application and data. This includes computers, operating systems, networks,
telecommunication links, storage technologies, and the architecture (e.g., client/server) that
has been designed to implement these technologies.
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
ee
• The final BPE step—construction and integrati on focuses on implementation detail. The
architecture and infrastructure are implemented by constructing an appropriate database and
internal data structures, by building applications using software components, and by selecting
ad
appropriate elements of a technology infrastructure to support the design created during
BSD. Each of these system co mponents must then be integrated to form a complete
information system or application.
• The integration activity also places the new information system into the business area
context, performing all user training and logistics support to achieve a smooth transition.
.p
control needs, product function and behavior, overall product performance, design and
interfacing constraints, and other special needs.
• Once these requirements are known, the job of requirements engineering is to allocate
funct ion and behavior to each of the four components noted earlier. Once allocat ion has
occurred, system component engineering commences.
www.padeepz.net
www.padeepz.net
Software Engineering
• S ystem component engineering is actually a set of concurrent activit ies that address each of
the system components separately: software engineering, hardware engineering, human
engineering, and database engineering.
t
. ne
pz
ee
ad
• Each of these engineering disciplines takes a do main-specific view, but it is important to note
that the engineering disciplines must establish and maintain active co mmunication with one
another. Part of the ro le of requirements engineering is to establish the interfacing
.p
activities (covered in detail in later chapters) and construction and integration act ivit ies that
encompass code generation, testing, and support steps.
• The analysis step models allocated requirements into representations of data, function, and
w
behavior. Design maps the analysis model into data, architectural, interface, and soft ware
component-level designs.
w
www.padeepz.net
www.padeepz.net
Software Engineering
UNIT II SOFTWARE
REQUIREMENTS
• The process of establishing the services that the customer requires from a s ystem and the
constraints under which it operates and is developed
t
• Requirements may be functional or non-functional
• Functional requirements describe system services or functions
ne
• Non-functional requirements is a constraint on the s ystem or on the development
process
Types of requirements
• User requirements
.
• Statements in natural language (NL) plus diagrams of the services the system
pz
provides and its operational constraints. Written for customers
• System requirements
• A structured document setting out detailed descriptions of the system services.
Written as a contract between client and contractor
• Software specification
ee
• A detailed software description which can serve as a basis for a design or
implementation. Written for developers
Functional requirements
ad
• Functionality or services that the system is expected to provide.
• Functional requirements may also explicitly state what the system shouldn‘t do.
• Functional requirements specification should be:
• Complete: All services required by the user should be defined
• Consistent: should not have contradictory definition (also avo id ambiguity
.p
• The user shall be able to search eit her all o f the initial set of databases or select a subset fro m
it.
• The system shall provide appropriate viewers for the user to read documents in the document
store.
w
• Every order shall be allocated a unique ident ifier (ORDER_ID) which the user shall be able
to copy to the account‘s permanent storage area.
Non-Functional requirements
www.padeepz.net
www.padeepz.net
Software Engineering
• Requirements that are not direct ly concerned with the specific functions delivered by the
system
• Typically relate to the system as a whole rather than the individual system features
• Often could be deciding factor on the survival of the system (e.g. reliability, cost, response
time)
t
Non-Functional requirements classifications:
ne
Non-functional
requir ements
.
Product Organisation External
r equir ements al requir emen r equir ements
pz
ts
Domain requirements
.p
• Domain requirements are derived from the application domain of the system rather than fro m
the specific needs of the system users.
• May be new functional requirements, constrain exist ing requirements or set out how
particular computation must take place.
w
• Example: tolerance level of landing gear on an aircraft (different on dirt, asphalt, water), or
what happens to fiber optics line in case of sever weather during winter Olympics (Onl y
domain-area experts know)
w
Product requirements
• Specify the desired characteristics that a system or subsystem must possess.
• Most NFRs are concerned with specifying constraints on the behaviour of the execut ing
w
system.
Specifying product requirements
• Some product requirements can be formulated precisely, and thus easily quantified
• Performance
• Capacity
www.padeepz.net
www.padeepz.net
Software Engineering
• Others are more difficult to quantify and, consequently, are often stated informally
• Usability
Process requirements
• Process requirements are constraints placed upon the development process of the system
• Process requirements include:
t
• Requirements on development standards and methods which must be followed
ne
• CASE tools which should be used
• The management reports which must be provided
.
• The system must be developed using the XYZ suite of CASE tools
pz
• Management reports setting out the effort expended on each ident ified system co mponent
must be produced every two weeks
• A disaster recovery plan for the system development must be specified
External requirements
ee
• May be placed on both the product and the process
• Derived from the environment in which the system is developed
• External requirements are based on:
• application domain information
• organisational considerations
• the need for the system to work with other systems
ad
• health and safety or data protection regulations
• or even basic natural laws such as the laws of physics
maintained according to data protection legislation before the system is put into operation.
• Train protection s ystem The t ime required to bring the train to a complete halt is co mputed
using the following function:
• The deceleration of the train shall be taken as:
w
of the train.
Software Document
• Should provide for communication among team members
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Easy to change
ne
• Serve as reference tool for maintenance
• Record forethought about the life cycle of the system i.e. predict changes
• Characterise responses to unexpected events
.
Speci fy t he req uiremen ts and
read th em to ch eck t hat t hey meet
pz
Sy st em cus to mers th eir n eeds . Th ey
s pecify ch ang es t o th e
requ iremen ts
Us e t he req ui rement s
ee Manag ers d ocumen t to pl an a bi d for t
he s ys tem an d to pl an th e
sy st em dev elo pmen t p roces s
Us e t he req ui rement s to
ad
Sy st em eng in eers un ders tan d wh at s ys tem i s to
b e dev elo ped
eng in eers
t he s ys tem
Process Documentation
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Product Documentation
ne
• Describes the delivered product
• Must evolve with the development of the software product
• Two main categories:
• System Documentation
• User Documentation
.
Product Documentation
pz
• System Documentation
• Describes how the system works, but not how to operate it
• Examples:
• Requirements Spec
• Architectural Design
ee
• Detailed Design
• Commented Source Code
Including output such as JavaDoc
• Test Plans
Including test cases
• V&V plan and results
ad
• List of Known Bugs
• User Documentation has two main types
• End User
• System Administrator
In some cases these are the same people
.p
be covered thoroughly
• Functional Description of the Software
• Installation Instructions
w
• Introductory Manual
• Reference Manual
• System Administrator‘s Guide
w
Document Quality
• Providing thorough and pro fessional documentation is important for any size product
development team
www.padeepz.net
www.padeepz.net
Software Engineering
• The problem is that many software professionals lack the writ ing skills to create
professional level documents
Document Structure
• All documents for a given product should have a similar structure
• A good reason for product standards
t
• The IEEE Standard for User Documentation lists such a structure
• It is a superset of what most documents need
ne
• The authors ―best practicesǁ are:
• Put a cover page on all documents
• Divide documents into chapters with sections and subsections
• Add an index if there is lots of reference information
• Add a glossary to define ambiguous terms
.
pz
Standards
• Standards play an important role in the development, maintenance and usefulness of
documentation
• Standards can act as a basis for quality documentation
• But are not good enough on their own
ee Usually define high level content and organization
• There are three types of documentation standards
1.Process Standards
• Define the approach that is to be used when creating the documentation
ad
• Don‘t actually define any of the content of the documents
2. Product Standards
• Goal is to have all documents created for a specific product attain a consistent structure and
appearance
• Can be based on organizational or contractually required standards
.p
• One caveat:
w
• Documentation that will be viewed by end users should be created in a way that is
best consumed and is most attractive to them
• Internal development documentation generally does not meet this need
w
3. Interchange Standards
• Deals with the creation of documents in a format that allows others to effectively use
• PDF may be good for end users who don‘t need to edit
• Word may be good for text editing
www.padeepz.net
www.padeepz.net
Software Engineering
Other Standards
t
• IEEE
• Has a published standard for user documentation
ne
• Provides a structure and superset of content areas
• Many organizations probably won‘t create documents that completely match the
standard
• Writing Style
• Ten ―best practicesǁ when writing are provided
.
• Author proposes that group edits of important documents should occur in a similar
pz
fashion to software walkthroughs
Requ irement s
d ocumen t
w
Feasibility Studies
• A feasibility study decides whether or not the proposed system is worthwhile
• A short focused study that checks
w
writing
• Questions for people in the organisation
• What if the system wasn‘t implemented?
• What are current process problems?
• How will the proposed system help?
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Involves technical staff working with customers to find out about
• the application domain
ne
• the services that the system should provide
• the system‘s operational constraints
• May involve end-users, managers, engineers involved in maintenance, domain experts, trade
unions, etc.
• These are called stakeholders
.
pz
Problems of requirements analysis
• Stakeholders don‘t know what they really want
• Stakeholders express requirements in their own terms
• Different stakeholders may have conflicting requirements
• Organisational and political factors may influence the system requirements
ee
• The requirements change during the analysis process
• New stakeholders may emerge and the business environment change
System models
• Different models may be produced during the requirements analysis activity
ad
• Requirements analysis may involve three structuring activit ies which result in these different
models
• Partitioning – Identifies the structural (part-of) relationships between entities
• Abstraction – Identifies generalities among entities
• Projection – Identifies different ways of looking at a problem
• System models will be covered on January 30
.p
Scenarios
• Scenarios are descriptions of how a system is used in practice
• They are helpful in requirements elicitation as people can relate to these more readily than
w
Ethnography
• A social scient ists spends a considerable t ime observing and analysing how people actuall y
work
• People do not have to explain or articulate their work
w
www.padeepz.net
www.padeepz.net
Software Engineering
Requirements validation
• Concerned with demonstrating that the requirements define the system that the customer
really wants
• Requirements error costs are high so validation is very important
• Fixing a requirements error after delivery may cost up to 100 times the cost of fix ing
an implementation error
t
• Requirements checking
ne
• Validity
• Consistency
• Completeness
• Realism
• Verifiability
.
Requirements validation techniques
pz
• Reviews
• Systematic manual analysis of the requirements
• Prototyping
• Using an executable model of the system to check requirements.
• Test-case generation
ee
• Developing tests for requirements to check testability
• Automated consistency analysis
• Checking the consistency of a structured requirements description
Requirements management
• Requirements management is the process of managing changing requirements during the
ad
requirements engineering process and system development
• Requirements are inevitably incomplete and inconsistent
• New requirements emerge during the process as business needs change and a better
understanding of the system is developed
• Different viewpoints have different requirements and these are often contradictory
.p
Software prototyping
Incomplete versions of the software program being developed. Protot yping can also be
used by end users to describe and prove requirements that developers have not considered
w
Benefits:
The software designer and implementer can obtain feedback from the users early in the
project. The client and the contractor can compare if the software made matches the software
w
Process of prototyping
1. Identify basic requirements
Determine basic requirements including the input and output information desired. Details,
such as security, can typically be ignored.
www.padeepz.net
www.padeepz.net
Software Engineering
t
4. Revise and Enhance the Prototype
Using the feedback both the specifications and the protot ype can be improved. Negotiation
ne
about what is wit hin the scope of the contract/product may be necessar y. If changes are
introduced then a repeat of steps #3 and #4 may be needed.
Dimensions of prototypes
1. Horizontal Prototype
.
It provides a broad view of an ent ire s ystem or subsystem, focusing on user interaction more
pz
than low-level system functionalit y, such as database access. Horizontal protot ypes are usefu l
for:
• Confirmation of user interface requirements and system scope
• Develop preliminary estimates of development time, cost and effort.
2 Vertical Prototypes
ee
A vertical prototype is a more complete elaboration of a single subsystem or function. It is
useful for obtaining detailed requirements for a given function, with the following benefits:
• Refinement database design
• Obtain information on data volumes and system interface needs, for network sizing and
performance engineering
ad
Types of prototyping
Software protot yping has many variants. However, all the methods are in so me wa y
based on two major types of prototyping: Throwaway Prototyping and Evolutionary Prototyping.
1. Throwaway prototyping
Also called close ended protot yping. Throwaway refers to the creation of a model that
.p
will eventually be discarded rather than becoming part of the final delivered software. After
preliminary requirements gathering is accomplished, a simple working model of the s ystem is
constructed to visually show the users what their requirements may look like when they are
implemented into a finished system.
w
The most obvious reason for using Throwaway Protot yping is that it can be done quickly.
If the users can get quick feedback on their requirements, they may be able to refine them early
in the development of the software. Making changes early in the development lifecycle is
w
extremely cost effect ive since there is nothing at that point to redo. If a project is changed after a
considerable work has been done then small changes could require large efforts to implement
since software systems have many dependencies. Speed is crucial in implement ing a throwaway
protot ype, since with a limited budget of time and money litt le can be expended on a protot ype
w
www.padeepz.net
www.padeepz.net
Software Engineering
2. Evolutionary prototyping
Evolutionary Prototyping (also known as breadboard prototyping) is quite different from
Throwaway Prototyping. The main goal when using Evo lutionary Prototyping is to build a ver y
robust protot ype in a structured manner and constant ly refine it. "The reason for this is that the
Evolut ionary protot ype, when built, forms the heart of the new s ystem, and the improvements
t
and further requirements will be built.
Evolutionary Protot ypes have an advantage over Throwaway Protot ypes in that they are
ne
functional systems. Although they may not have all t he features the users have planned, the y
may be used on a temporary basis until the final system is delivered.
In Evolutionary Prototyping, developers can focus themselves to develop parts of the
system that they understand instead of working on developing a who le s yst em. To minimize risk,
the developer does not implement poorly understood features. The partial s ystem is sent to
.
customer sites. As users work with the system, they detect opportunities for new features and
pz
give requests for these features to developers. Developers then take these enhancement requests
along wit h their own and use sound configuration-management practices to change the software-
requirements specification, update the design, recode and retest.
3. Incremental prototyping
The final product is built as separate protot ypes. At the end the separate protot ypes are
ee
merged in an overall design.
4. Extreme prototyping
Extreme Prototyping as a development process is used especially for developing web
applications. Basically, it breaks down web development into three phases, each one based on
ad
the preceding one. The first phase is a static protot ype that consists mainly of HTML pages. In
the second phase, the screens are programmed and fully functional using a simulated services
layer. In the third phase the services are implemented. The process is called Extreme Prototyping
to draw attention to the second phase of the pro cess, where a fully-functional UI is developed
with very little regard to the services other than their contract.
.p
Advantages of prototyping
1. Reduced time and costs: Prototyping can improve the quality of requirements and
specifications provided to developers. Because changes cost exponentially more to implement as
w
they are detected later in development, the early determination of what the user really wants can
result in faster and less expensive software.
w
2. Improved and increased user involvement: Prototyping requires user involvement and
allows them to see and interact with a prototype allowing them to provide better and more
complete feedback and specifications. The presence of the protot ype being examined by the user
prevents many misunderstandings and misco mmunications that occur when each side believe the
w
other understands what they said. Since users know the problem domain better than anyo ne on
the development team does, increased interaction can result in final product that has greater
tangible and intangible qualit y. The final product is more likely to satisfy the users‘ desire for
look, feel and performance.
www.padeepz.net
www.padeepz.net
Software Engineering
Disadvantages of prototyping
1. Insufficient analysis: The focus on a limited protot ype can distract developers from properl y
analyzing the complete project. This can lead to overlooking better solutions, preparation o f
incomplete specifications or the conversion of limited protot ypes into poorly engineered final
t
projects that are hard to maintain. Further, since a protot ype is limited in functionality it may not
scale well if the protot ype is used as the basis of a final deliverable, which may not be noticed if
ne
developers are too focused on building a prototype as a model.
2. User confusion of p rototype and finished system: Users can begin to think that a protot ype,
intended to be thrown away, is actually a final system that merely needs to be finished or
polished. (They are, for example, often unaware of the effort needed to add error -checking and
securit y features which a protot ype may not have.) This can lead them to expect the protot ype to
.
accurately model the performance of the final system when this is not the intent of the
pz
developers. Users can also beco me attached to features that were included in a protot ype for
consideration and then removed from the specification for a final s ystem. If users are able to
require all proposed features be included in the final system this can lead to conflict.
3. Developer misunderstanding of user objectives: Developers may assume that users share
their objectives (e.g. to deliver core functionality on t ime and within budget), without
understanding wider commercial issues. For example, user representatives attending Enterprise
ee
software (e.g. PeopleSoft) events may have seen demonstrations of "transaction audit ing" (where
changes are logged and displayed in a difference grid view) without being told that this feature
demands additio nal coding and often requires more hardware to handle extra database accesses.
Users might believe they can demand audit ing on every field, whereas developers might think
this is feature creep because they have made assu mptions about the extent of user requirements.
ad
If the developer has co mmitted delivery before the user requirements were reviewed, developers
are between a rock and a hard place, part icularly if user management derives so me advantage
from their failure to implement requirements.
4. Developer attachment to prototype: Developers can also become attached to protot ypes the y
have spent a great deal of effort producing; this can lead to problems like attempting to convert a
limited protot ype into a final system when it does not have an appropriate underlying
.p
architecture. (This may suggest that throwaway protot yping, rather th an evolutionary
prototyping, should be used.)
5. Excessive develop ment time of the prototype: A key propert y to prototyping is the fact that
it is supposed to be done quickly. If the developers lose sight of this fact, they very well may try
w
to develop a prototype that is too complex. When the protot ype is thrown away the precisel y
developed requirements that it provides may not yield a sufficient increase in productivity to
make up for the time spent developing the prototype. Users can become stuck in debates over
w
details of the prototype, holding up the development team and delaying the final product.
6. Expense of implementing prototyping: the start up costs for building a development team
focused on prototyping may be high. Many companies have development methodologies in
place, and changing them can mean retraining, retooling, or both. Many companies tend to just
w
jump into the prototyping without bothering to retrain their workers as much as they should.
A common problem with adopting prototyping technology is high expectations for productivit y
with insufficient effort behind the learning curve. In addition to training for the use of a
protot yping technique, there is an often overlooked need for developing corporate and project
www.padeepz.net
www.padeepz.net
Software Engineering
specific underlying structure to support the technology. When this underlying structure is
omitted, lower productivity can often result.
t
evidence. The greater the interaction between the computer and the user, the greater the benefit is
that can be obtained from building a quick system and letting the user play with it.
ne
S ystems with little user interact ion, such as batch processing or systems that mostly do
calculations, benefit little from prototyping. Sometimes, the coding needed to perform the system
functions may be too intensive and the potential gains that prototyping could provide are too
small.
Protot yping is especially good for designing good human-co mputer interfaces. "One o f
.
the most productive uses of rapid prototyping to date has been as a tool for iterative user
pz
requirements engineering and human-computer interface design.
Methods
There are few formal prototyping methodologies even though most Agile Methods rel y
heavily upon prototyping techniques.
1. Dynamic systems development method
ee
Dynamic S ystems Development Method (DSDM) is a framework for delivering business
solutions that relies heavily upon prototyping as a core technique, and is itself ISO 9001
approved. It expands upon most understood definitions of a protot ype. According to DSDM the
protot ype ma y be a diagram, a business process, or even a system placed into production. DSDM
protot ypes are intended to be incremental, evolving from simple forms into more comprehensive
ad
ones.
DSDM protot ypes may be throwaway or evolutionar y. Evolutionary protot ypes may be evo lved
horizontally (breadth then depth) or vertically (each section is built in detail with additional
iterations detailing subsequent sections). Evolutionary protot ypes can eventually evolve into
final systems.
.p
functional aspects of the system (transaction rates, data storage volume, response time)
• Capability/technique prototypes – used to develop, demonstrate, and evaluate a design
approach or concept.
The DSDM lifecycle of a prototype is to:
w
1. Identify prototype
2. Agree to a plan
3. Create the prototype
4. Review the prototype
www.padeepz.net
www.padeepz.net
Software Engineering
2. Operational prototyping
Operational Prototyping was proposed by Alan Davis as a way to integrate throwaway and
evolutionary protot yping with conventional s ystem development. "[It] offers the best of both the
quick-and-dirty and conventional-development worlds in a sensible manner. Designers develop
only well-understood features in building the evo lutionary baseline, while using throwawa y
prototyping to experiment with the poorly understood features."
t
Davis' belief is that to try to "retrofit quality onto a rapid protot ype" is not the correct approach
when trying to combine the two approaches. His idea is to engage in an evolutionar y prototyping
ne
methodology and rapidly prototype the features of the system after each evolution.
The specific methodology follows these steps:
• An evolutionary protot ype is constructed and made into a baseline using conventional
development strategies, specifying and implementing only the requirements that are well
understood.
.
• Copies of the baseline are sent to multiple customer sites along with a trained prototyper.
• At each site, the prototyper watches the user at the system.
pz
• Whenever the user encounters a problem or thinks of a new feature or requirement, the
prototyper logs it. This frees the user from having to record the problem, and allows them
to continue working.
• After the user session is over, the protot yper constructs a throwaway prototype on top of
the baseline system.
ee
• The user now uses the new s ystem and evaluates. If the new changes aren't effective, the
prototyper removes them.
• If the user likes the changes, the protot yper writes feature-enhancement requests and
forwards them to the development team.
• The development team, with the change requests in hand from all the sites, then produce
ad
a new evolutionary prototype using conventional methods.
Obviously, a key to this method is to have well trained protot ypers available to go to the user
sites. The Operational Prototyping methodology has many benefits in systems that are complex
and have few known requirements in advance.
www.padeepz.net
www.padeepz.net
Software Engineering
Evolut ionary Rapid Development (ERD) was developed by the Software Productivit y
Consortium, a technology development and integration agent for the Information Technolog y
Office of the Defense Advanced Research Projects Agency (DARPA).
Fundamental to ERD is the concept of co mposing software systems based on the reuse o f
components, the use of software templates and on an architectural template. Continuous
evolution of system capabilities in rapid response to changing user needs and technology is
t
highlighted by the evolvable architecture, represent ing a class of so lutions. The process focuses
on the use o f small artisan-based teams integrating software and s ystems engineering disciplines
ne
working multiple, often parallel short-duration timeboxes with frequent customer interaction.
Key to the success of the ERD-based projects is parallel exploratory analysis and development of
features, infrastructures, and components with and adoption of leading edge technologies
enabling the quick reaction to changes in technologies, the marketplace, or customer
requirements.
.
To elicit customer/user input, frequent scheduled and ad hoc/impromptu meetings with the
pz
stakeholders are held. Demonstrations of system capabilit ies are held to solicit feedback before
design/implementation decisions are solidified. Frequent releases (e.g., betas) are made availa ble
for use to provide insight into how the system could better support user and customer needs. This
assures that the system evolves to satisfy existing user needs.
The design framework for the s ystem is based on using exist ing published or de facto
standards. The s ystem is organized to allow for evo lving a set of capabilities that includes
ee
considerations for performance, capacities, and functionalit y. The architecture is defined in terms
of abstract interfaces that encapsulate the services and their implementation (e.g., COTS
applications). The architecture serves as a template to be used for guiding development of more
than a single instance of the system. It allows for multiple application components to be used to
implement the services. A core set of fu nctionality not likely to change is also identified and
ad
established.
The ERD process is structured to use demonstrated functionality rather than paper
products as a way for stakeholders to communicate their needs and expectations. Central to this
goal of rapid delivery is the use of the "time box" method. Timeboxes are fixed periods of time
in which specific tasks (e.g., developing a set of functionalit y) must be performed. Rather than
allowing t ime to expand to satisfy so me vague set of goals, the time is fixed (both in terms o f
.p
calendar weeks and person-hours) and a set of goals is defined that realistically can be achieved
within these constraints. To keep development from degenerating into a "random walk," long-
range plans are defined to guide the iterations. These plans provide a vision for the overall
system and set boundaries (e.g., constraints) for the project. Each iteration within the process is
w
small amounts of the s ystem are integrated at one time, diagnosing and removing the defect is
rapid. User demonstrations can be held at short notice since the s ystem is generally ready to
exercise at all times.
w
5. Scrum
Scrum is an agile method for project management. The approach was first described b y
Takeuchi and Nonaka in "The New New Product Development Game" (Harvard Bus iness
Review, Jan-Feb 1986).
www.padeepz.net
www.padeepz.net
Software Engineering
Tools
Efficient ly using prototyping requires that an organization have proper tools and a staff
trained to use those tools. Tools used in prototyping can vary from individual tools like 4th
generation programming languages used for rapid prototyping to complex integrated CASE
tools. 4th generation programming languages like Visual Basic and ColdFusion are frequently
t
used since they are cheap, well known and relat ively easy and fast to use. CASE tools are often
developed or selected by the military or large organizations. Users may protot ype elements of an
ne
application themselves in a spreadsheet.
.
Computer Interfaces can sometimes be the crit ical part of the development effort, since to the
users the interface essentially is the system.
pz
Software Factories are Code Generators that allow you to model the domain model and
then drag and drop the UI. Also they enable you to run the protot ype and use basic database
functionality. This approach allows you to explore the domain model and make sure it is in sync
with the GUI prototype.
ee
2. Application definition or simulation software
It enables users to rapidly build lightweight, animated simulations of another computer
program, without writing code. Application simulation software allows both technical and non-
technical users to experience, test, collaborate and validate the simulated program, and provides
reports such as annotations, screenshot and schematics. To simulate applications one can also use
ad
software which simulate real-world software programs for computer based training,
demonstration, and customer support, such as scr een cast ing software as those areas are closel y
related.
3. Sketchflow
Sketch Flow, a feature of Microsoft Expression Studio Ult imate, gives the ability to quickl y
.p
and effectively map out and iterate the flow of an application UI, the layout of individual screens
and transition from one application state to another.
• Interactive Visual Tool
• Easy to learn
w
• Dynamic
• Provides enviroment to collect feedback
w
4. Visual Basic
One of the most popular tools for Rapid Prototyping is Visual Basic (VB). Microsoft Access,
which includes a Visual Basic extensibility module, is also a widely accepted prototyping tool
that is used by many non-technical business analysts. Although VB is a programming language it
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
protot ype models of system co mponents. These modeling activities are performed to gain a
greater understanding of complex systems and lessen the impact that inaccurate requirement
ne
specifications have on cost and scheduling during the system development process.
REE is co mposed of three parts. The first, called proto is a CASE tool specifically
designed to support rapid protot yping. The second part is called the Rapid Interface Prototyping
S ystem or RIP, which is a co llection of tools that facilitate the creation of user interfaces. The
third part of REE is a user interface to RIP and proto that is graphical and intended to be easy to
.
use.
pz
Rome Laboratory, the developer of REE, intended that to support their internal requirements
gathering methodology. Their method has three main parts:
• Elicitation from various sources which means u lo ose (users, interfaces to other s ystems),
specification, and consistency checking
• Analysis that the needs of diverse users taken together do not conflict and are technicall y
and economically feasible
ee
• Validation that requirements so derived are an accurate reflection of user needs.
6. LYMB
LYMB is an object-oriented development environment aimed at developing applications
that require combining graphics-based user interfaces, visualization, and rapid prototyping.
ad
7. Non-relational environments
Non-relational definition of data (e.g. using Cache or associat ive models can help make
end-user protot yping more productive by dela ying or avoiding the need to normalize data at
every iteration of a simulation. This may yield earlier/greater clarity of business requirements,
though it does not specifically confirm that requirements are technically and econo mically
.p
8. PSDL
PSDL is a prototype description language to describe real-time software.
w
System prototyping
• Protot yping is the rapid development of a s ystem
• In the past, the developed system was normally thought of as inferior in some way to the
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
requirements
• Prototyping can be considered as a risk reduction activity which reduces requirements risks
ne
Prototyping benefits
• Misunderstandings between software users and developers are exposed
• Missing services may be detected and confusing services may be identified
• A working system is available early in the process
• The prototype may serve as a basis for deriving a system specification
.
• The system can support user training and system testing
pz
Prototyping process
Establish D e fi n e
Develop Ev aluate
prototype
ee prototype
prototype prototype
objectives functionality
• Throw-away prototyping
• A protot ype which is usually a practical implementation of the system is produced to
help discover requirements problems and then discarded. The s ystem is then
developed using some other development process
w
Data Model
• Used to describe the logical structure of data processed by the system
• Entity-relation-attribute model sets out the entit ies in the system, the relationships between
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
ee
Behavioural Model
• Behavioural models are used to describe the overall behaviour of a system
ad
• Two types of behavioural model are shown here
• Data processing models that show how data is processed as it moves through the system
• State machine models that show the systems response to events
• Both of these models are required for a description of the system‘s behaviour
.p
1. Data-processing models
• Data flow diagrams are used to model the system‘s data processing
• These show the processing steps as data flows through a system
• Intrinsic part of many analysis methods
w
• Data flow diagrams may also be used in showing the data exchange between a s ystem and
other systems in its environment
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
2. State machine models
• These model the behaviour of the system in response to external and internal events
• They show the s ystem‘s responses to stimuli so are often used for modelling real-t ime
systems
ee
• State machine models show system states as nodes and events as arcs between these nodes.
• When an event occurs, the system moves from one state to another
• Statecharts are an integral part of the UML
www.padeepz.net
www.padeepz.net
Software Engineering
Statecharts
• Allow the decomposition of a model into submodels
• A brief description of the actions is included following the ‗do‘ in each state
• Can be complemented by tables describing the states and the stimuli
Structured Analysis
t
• The data-flow approach is typified by the Structured Analysis method (SA)
ne
• Two major strategies dominate structured analysis
• ‗Old‘ method popularised by DeMarco
• ‗Modern‘ approach by Yourdon
DeMarco
• A top-down approach
.
• The analyst maps the current physical system onto the current logical data-flo w
pz
model
• The approach can be summarised in four steps:
• Analysis of current physical system
• Derivation of logical model
• Derivation of proposed logical model
ee
• Implementation of new physical system
Method weaknesses
.p
• The system models are sometimes too detailed and difficult for users to understand.
CASE workbenches
w
• A coherent set of tools that is designed to support related software process activities such as
analysis, design or testing.
• Analysis and design workbenches support system modelling during both requirements
engineering and system design.
w
• These workbenches may support a specific design method or may provide support for a
creating several different types of system model.
www.padeepz.net
www.padeepz.net
Software Engineering
t
ne
Ce ntr a l Quer y
i n f o r m a ti o n la ngua ge
re pository facilities
.
De sign, anal y sis
pz
a nd chec king
tools
• Diagram editors
ee
• Model analysis and checking tools
• Repository and associated query language
• Data dictionary
• Report definition and generation tools
• Forms definition tools
ad
• Import/export translators
• Code generation tools
Data Dictionary
• Data dictionaries are lists of all of the names used in the system models. Descriptions of the
.p
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
ee
UNIT III
ad
ANALYSIS, DESIGN CONCEPTS AND PRINCIPLES
Analysis to Design:
w
w
w
Design Models – 1:
www.padeepz.net
www.padeepz.net
Software Engineering
• Data Design
– created by transforming the data dictionary and ERD into implementation data
structures
– requires as much attention as algorithm design
• Architectural Design
– derived from the analysis model and the subsyst em interactions defined in the
t
DFD
• Interface Design
ne
– derived from DFD and CFD
– describes software elements communication with
• other software elements
• other systems
• human users
.
Design Models – 2 :
pz
• Procedure-level design
– created by transforming the structural elements defined by the software
architecture into procedural descriptions of software components
– Derived from information in the PSPEC, CSPEC, and STD
Design Principles – 1:
• Process should not suffer from tunnel vision – consider alternative approaches
ee
• Design should be traceable to analysis model
• Do not try to reinvent the wheel
- use design patterns ie reusable components
• Design should exhibit both uniformity and integration
• Should be structured to accommodate changes
ad
Design Principles – 2 :
• Design is not coding and coding is not design
• Should be structured to degrade gently, when bad data, events, or operating conditions
are encountered
• Needs to be assessed for quality as it is being created
• Needs to be reviewed to minimize conceptual (semantic) errors
.p
Design Concepts -1 :
• Abstraction
– allows designers to focus on solving a problem without being concerned about
irrelevant lower level details
w
Procedural abstraction is a named sequence of instructions that has a specific and limited
function
e.g open a door
w
• Design Patterns
– description of a design structure that solves a particular design problem wit hin a
specific context and its impact when applied
Design Concepts -3 :
www.padeepz.net
www.padeepz.net
Software Engineering
• Software Architecture
– overall structure of the software components and the ways in which that structure
– provides conceptual integrity for a system
Design Concepts -4 :
• Information Hiding
– information (data and procedure) contained within a module is inaccessible to
t
modules that have no need for such information
• Functional Independence
ne
– achieved by developing modules with single-minded purpose and an aversion to
excessive interaction with other models
Refactoring – Design concepts :
• Fowler [FOW99] defines refactoring in the following manner:
– "Refactoring is the process of changing a software s ystem in such a way that it
.
does not alter the external behavior of the code [design] yet improves its internal
pz
structure.ǁ
• When software is refectories, the existing design is examined for
– redundancy
– unused design elements
– inefficient or unnecessary algorithms
– poorly constructed or inappropriate data structures
ee
– or any other design failure that can be corrected to yield a better design.
Design Concepts – 4 :
• Objects
– encapsulate both data and data manipulation procedures needed to describe the
content and behavior of a real world entity
ad
• Class
– generalized descript ion (template or pattern) that describes a collection of similar
objects
• Inheritance
– provides a means for allowing subclasses to reuse exist ing superclass data and
procedures; also provides mechanism for propagating changes
.p
Design Concepts – 5:
• Messages
– the means by which objects exchange information with one another
• Polymorphism
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
– module change side-effects minimized
• Modular protection
ne
– processing error side-effects minimized
Effective Modular Design:
• Functional independence
– modules have high cohesion and low coupling
• Cohesion
.
– qualitative indication of the degree to which a module focuses on just one thing
pz
• Coupling
– qualitative indication of the degree to which a module is connected to other
modules and to the outside world
Architectural Design:
Why Architecture?
The architecture is not the operational software. Rather, it is a representation that enables a
ee
software engineer to:
(1) analyze the effectiveness of the design in meeting its stated requirements,
(2) consider architectural alternat ives at a stage when making design changes is still relat ivel y
easy, and
(3) reduce the risks associated with the construction of the software.
ad
Importance :
• Software architecture representations enable communications among stakeholders
• Architecture highlights early design decisions that will have a profound impact on the
ultimate success of the system as an operational entity
• The architecture constitutes an intellectually graspable model of how the system is
structured and how its components work together
.p
Architectural Styles – 1:
• Data centered
– file or database lies at the center of this architecture and is accessed frequent ly b y
other components that modify data
w
Architectural Styles – 2:
• Data flow
– input data is transformed by a series of co mputational co mponents into output
w
data
– Pipe and filter pattern has a set of components called filters, connected by pipes
that transmit data from one component to the next.
– If the data flow degenerates into a single line of transforms, it is termed batch
w
sequential
• Object-oriented
– components of system encapsulate data and operations, co mmunication between
components is by message passing
www.padeepz.net
www.padeepz.net
Software Engineering
• Layered
– several layers are defined
– each layer performs operations that beco me closer to the machine instruction set
in the lower layers
Architectural Styles – 3:
Call and return
t
– program structure decomposes function into control hierarch y with main program
invoking several subprograms
ne
Software Architecture Design – 1:
• Software to be developed must be put into context
– model external entities and define interfaces
• Identify architectural archetypes
– collection of abstractions that must be modeled if the system is to be constructed
.
Object oriented Architecture :
pz
• The co mponents of a system encapsulate data and the operations that must be applied to
manipulate the data. Communication and coordination between components is
accomplished via message passing
Software Architecture Design – 2:
• Specify structure of the system
– define and refine the software components needed to implement each archet ype
ee
• Continue the process iteratively until a complete architectural structure has been derived
Layered Architecture:
• Number of different layers are defined, each accomplishing operations that progressivel y
become closer to the machine instruction set
ad
• At the outer layer –components service user interface operations.
• At the inner layer – components perform operating system interfacing.
• Intermediate layers provide utility services and application software function
Architecture Tradeoff Analysis – 1:
1. Collect scenarios
2. Elicit requirements, constraints, and environmental description
.p
www.padeepz.net
www.padeepz.net
Software Engineering
t
Advantages of explicit architecture
ne
• Stakeholder communication
- Architecture may be used as a focus of discussion by system stakeholders.
• System analysis
- Means that analysis of whether the system can meet its non-functional requirements is
possible.
• Large-scale reuse
.
- The architecture may be reusable across a range of systems.
pz
Architecture and system characteristics
• Performance
- Localise critical operations and minimise communications. Use large rather than fine-
grain components.
ee
• Security
- Use a layered architecture with critical assets in the inner layers.
• Safet y
- Localise safety-critical features in a small number of sub-systems.
• Availability
ad
- Include redundant components and mechanisms for fault tolerance.
• Maintainability
- Use fine-grain, replaceable components.
Architectural conflicts
• Using large-grain components improves performance but reduces maintainability.
• Introducing redundant data improves availability but makes security more difficult.
.p
• The architectural design is normally expressed as a block diagram present ing an overview o f
the system structure.
• More specific models showing how sub-systems share data, are distributed and interface wit h
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
Box and line diagrams
ee
• Very abstract - they do not show the nature of component relationships nor the externall y
visible properties of the sub-systems.
• However, useful for communication with stakeholders and for project planning.
Architectural design decisions
• Architectural design is a creat ive process so the process differs depending on the t ype o f
system being developed.
ad
• However, a number of common decisions span all design processes.
• Is there a generic application architecture that can be used?
• How will the system be distributed?
• What architectural styles are appropriate?
• What approach will be used to structure the system?
.p
Architecture reuse
• Systems in the same domain often have similar architectures that reflect domain concepts.
• Application product lines are built around a core architecture with variants that sat isf y
w
• However, most large systems are hetero geneous and do not follow a single architectural
style.
Architectural models
• Used to document an architectural design.
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Reflects the basic strategy that is used to structure a system.
ne
• Three organisational styles are widely used:
• A shared data repository style;
• A shared services and servers style;
• An abstract machine or layered style.
The repository model
• Sub-systems must exchange data. This may be done in two ways:
.
• Shared data is held in a central database or repository and may be accessed by all sub-
pz
systems;
• Each sub-system maintains its own database and passes data explicit ly to other sub-
systems.
• When large amounts of data are to be shared, the repository model of shari ng is most
commonly used.
ee
ad
www.padeepz.net
www.padeepz.net
Software Engineering
t
of components.
ne
• Set of stand-alone servers which provide specific services such as printing, data management,
etc.
• Set of clients which call on these services.
• Network which allows clients to access servers.
Client-server characteristics
Advantages
.
• Distribution of data is straightforward;
pz
• Makes effective use of networked systems. May require cheaper hardware;
• Easy to add new servers or upgrade existing servers.
Disadvantages
• No shared data model so sub-systems use different data organisation. Data
ee interchange may be inefficient;
• Redundant management in each server;
• No central register of names and services - it may be hard to find out what servers
and services are available.
Abstract machine (layered) model
• Used to model the interfacing of sub-systems.
ad
• Organises the system into a set of la yers (or abstract machines) each of which provide a set
of services.
• Supports the incremental development of sub-systems in different la yers. When a layer
interface changes, only the adjacent layer is affected.
• However, often artificial to structure systems in this way.
Modular decomposition styles
.p
• Modular decomposition
• Another structural level where sub-systems are decomposed into modules.
• Two modular decomposition models covered
• An object model where the system is decomposed into interacting object;
w
• A pipeline or data-flow model where the system is deco mposed into functional
modules which transform inputs to outputs.
• If possible, decisions about concurrency should be delayed until modules are implemented.
Object models
www.padeepz.net
www.padeepz.net
Software Engineering
• Structure the system into a set of loosely coupled objects with well-defined interfaces.
• Object-oriented decomposition is concerned with identifying object classes, their attributes
and operations.
• When implemented, objects are created from these classes and so me control model used to
coordinate object operations.
t
Invoice processing system
. ne
pz
ee
Object model advantages
• Objects are loosely coupled so their implementation can be modified without affect ing other
ad
objects.
• The objects may reflect real-world entities.
• OO implementation languages are widely used.
• However, object interface changes ma y cause problems and complex entities may be hard to
represent as objects.
Function-oriented pipelining
.p
• System users often judge a system by its interface rather than its functionality
• A poorly designed interface can cause a user to make catastrophic errors
• Poor user interface design is the reason why so many software systems are never used
w
• Most users of business systems interact with these s ystems through graphical user interfaces
(GUIs)
• In some cases, legacy text-based interfaces are still used
User interface design process
www.padeepz.net
www.padeepz.net
Software Engineering
t
Produce
Design Eval uate design
dynamic design
prototype with end-users
ne
prototype
Executable Implement
prototype fin al us er
int erface
UI design principles
.
• User familiarity
pz
• The interface should be based on user-oriented terms and concepts rather than
computer concepts
• E.g., an office system should use concepts such as letters, documents, folders etc.
rather than directories, file identifiers, etc.
• Consistency
ee
• The system should display an appropriate level of consistency
• Commands and menus should have the same format, command punctuation should be
similar, etc.
• Minimal surprise
• If a co mmand operates in a known wa y, the user should be able to predict the
operation of comparable commands
ad
• Recoverability
• The system should provide some interface to user errors and allow the user to recover
from errors
• User guidance
• Some user guidance such as help systems, on-line manuals, etc. should be supplied
.p
• User diversity
• Interaction facilities for different types of user should be supported
• E.g., some users have seeing difficulties and so larger text should be available
User-system interaction
w
Interaction styles
• Direct manipulation
• Easiest to grasp with immediate feedback
w
• Difficult to program
• Menu selection
• User effort and errors minimized
• Large numbers and combinations of choices a problem
www.padeepz.net
www.padeepz.net
Software Engineering
• Form fill-in
• Ease of use, simple data entry
• Tedious, takes a lot of screen space
• Natural language
• Great for casual users
• Tedious for expert users
t
Information presentation
ne
• Information presentation is concerned with presenting system information to system users
• The information may be presented direct ly or may be transformed in so me way for
presentation
• The Model-View-Controller approach is a way of supporting multiple presentations of data
Information display
.
1
pz
0 10 20
4 2
Textual highlighting
!
The fi lena me y o u have cho sen h as been
w
OK Ca ncel
Data visualisation
• Concerned with techniques for displaying large amounts of information
www.padeepz.net
www.padeepz.net
Software Engineering
• Visualisation can reveal relationships between entities and trends in the data
• Possible data visualisations are:
• Weather information
• State of a telephone network
• Chemical plant pressures and temperatures
• A model of a molecule
t
Colour displays
ne
• Colour adds an extra dimension to an interface and can help the user understand complex
information structures
• Can be used to highlight exceptional events
• The use of colour to communicate meaning
Error messages
• Error message design is critically important. Poor error messages can mean that a user
.
rejects rather than accepts a system
pz
• Messages should be polite, concise, consistent and constructive
• The background and experience of users should be the determining factor in message
design
User interface evaluation
• Some evaluation of a user interface design should be carried out to assess its suitability
ee
• Full scale evaluation is very expensive and impractical for most systems
• Ideally, an interface should be evaluated against req
• However, it is rare for such specifications to be produced
on the results produced by the system and the time at which these results are produced
• A ‗soft‘ real-t ime system is a system whose operation is degraded if results are not produced
according to the specified timing requirements
• A ‗hard‘ real-t ime system is a system whose operation is incorrect if results are not produced
w
• 2 classes
• Periodic stimuli. Stimuli which occur at predictable time intervals
• For example, a temperature sensor may be polled 10 times per second
w
www.padeepz.net
www.padeepz.net
Software Engineering
• Because o f the need to respond to timing demands made by different stimuli / responses, the
system architecture must allow for fast switching between stimulus handlers
• Timing demands of different st imuli are different so a simple sequential loop is not usually
adequate
Real –Time Software Design:
• Designing embedded software systems whose behaviour is subject to timing constraints
t
• To explain the concept of a real-time system and why these systems are usuall y
implemented as concurrent processes
ne
• To describe a design process for real-time systems
• To explain the role of a real-time executive
• To introduce generic architectures for monitoring and control and data acquisitio n
systems
.
Real-time systems:
pz
• Systems which monitor and control their environment
• Inevitably associated with hardware devices
– Sensors: Collect data from the system environment
– Actuators: Change (in some way) the system's
environment
• Time is critical. Real-time systems MUST respond within specified times
Definition:
ee
• A real-time system is a software system where the correct functioning of the system
depends on the results produced by the system and the time at which these results are
produced
• A ‗soft‘ real-time system is a system whose operation is degraded if results are not
ad
produced according to the specified timing requirements
• A ‗hard‘ real-time system is a system whose operation is incorrect if results are not
produced according to the timing specification
Stimulus/Response Systems:
• Given a stimulus, the system must produce a esponse within a specified time
.p
Architectural considerations:
• Because of the need to respond to timing demands made by different stimuli/responses,
the system architecture must allow for fast switching between stimulus handlers
w
• Timing demands of different stimuli are different so a simple sequential loop is not
usually adequate
• Real-time systems are usually designed as cooperating processes with a real-t ime
executive controlling these processes
w
www.padeepz.net
www.padeepz.net
Software Engineering
Real-time con
tro l sys tem
t
ne
Act uat or Act uat or Act uat or Act uat or
System elements:
• Sensors control processes
.
– Collect information from sensors. May buffer information collected in response to
a sensor stimulus
pz
• Data processor
– Carries out processing of collected information and computes the system response
• Actuator control
– Generates control signals for the actuator
R-T systems design process:
ee
• Identify the stimuli to be processed and the required responses to these stimuli
• For each stimulus and response, identify the timing constraints
• Aggregate the stimulus and response processing into concurrent processes. A process
may be associated with each class of stimulus and response
• Design algorithms to process each class of st imulus and response. These must meet the
ad
given timing requirements
• Design a scheduling s ystem which will ensure that processes are started in t ime to meet
their deadlines
• Integrate using a real-time executive or operating system
.p
Timing constraints:
• May require extensive simulation and experiment to ensure that these are met by the
system
w
• May mean that certain design strategies such as object-oriented design cannot be used
because of the additional overhead involved
• May mean that low-level programming language features have to be used for
w
performance reasons
Real-time programming:
• Hard-real time systems may have to programmed in assembly language to ensure that
deadlines are met
w
• Languages such as C allow efficient pro grams to be written but do not have constructs to
support concurrency or shared resource management
• Ada as a language designed to support real-time systems design so includes a general
purpose concurrency mechanism
Non-stop system components:
www.padeepz.net
www.padeepz.net
Software Engineering
• Configuration manager
– Responsible for the dynamic reconfiguration of the system
software and hardware. Hardware modules may be replaced and software
upgraded without stopping the systems
• Fault manager
– Responsible for detecting software a nd hardware faults and
t
taking appropriate actions (e.g. switching to backup disks) to ensure that the
system continues in operation
ne
Burglar alarm system e.g
• A s ystem is required to monitor sensors on doo rs and windows to detect the presence o f
intruders in a building
• When a sensor indicates a break-in, the s ystem switches on lights around the area and
calls police automatically
.
• The system should include provision for operation without a mains power supply
• Sensors
pz
• Movement detectors, window sensors, door sensors.
• 50 window sensors, 30 door sensors and 200 movement detectors
• Voltage drop sensor
• Actions
• When an intruder is detected, police are called automatically.
ee
• Lights are switched on in rooms with active sensors.
• An audible alarm is switched on.
• The system switches automatically to backup power when a voltage drop is
detected.
The R-T system design process:
ad
• Identify stimuli and associated responses
• Define the timing constraints associated with each stimulus and response
• Allocate system functions to concurrent processes
• Design algorithms for stimulus processing and response generation
• Design a scheduling system which ensures that processes will always be scheduled to
meet their deadlines
.p
Control systems:
• A burglar alarm system is primarily a monitoring system. It collects data from sensors but
no real-time actuator control
• Control systems are similar but, in response to sensor values, the system sends control
w
signals to actuators
• An example of a mo nitoring and control s ystem is a s ystem which mo nitors temperature
and switches heaters on and off
w
• Data collection may be faster than processing e.g. collecting information about an
explosion.
• Circular or ring buffers are a mechanism for smoothing speed differences.
www.padeepz.net
www.padeepz.net
Software Engineering
Sensor
proces
s
t
ne
Senso
500Hz r
values
.
Thermostat
pz
process
Switch
500Hz command Thermostat process
ee Room number
Heater Furnace
control control
process process
ad
Reactor data collection:
• A system collects data from a set of sensors monitoring the neutron flux from a nuclear
reactor.
• Flux data is placed in a ring buffer for later processing.
.p
• The ring buffer is itself implemented as a concurrent process so that the collection and
processing processes may be synchronized.
w
Sensor
Processed
identifier and
flux level
value
w
Mutual exclusion:
• Producer processes collect data and add it to the buffer. Consumer processes take data
from the buffer and make elements available
www.padeepz.net
www.padeepz.net
Software Engineering
• Producer and consumer processes must be mutually excluded from accessing the same
element.
The buffer must stop producer processes adding information to a full buffer and consumer
processes trying to take information from an empty buffer
System Design
t
• Design both the hardware and the software associated with system. Partit ion functions to
ne
either hardware or software
• Design decisions should be made on the basis on non-functional system requirements
• Hardware delivers better performance but potentially lo nger development and less scope for
change
.
System elements
pz
• Sensors control processes
• Collect information from sensors. May buffer information collected in response t o a
sensor stimulus
• Data processor
• Carries out processing of collected information and computes the system response
ee
• Actuator control
• Generates control signals for the actuator
Sensor/actuator processes
Sen so r Act uat or
ad
St imulus Response
www.padeepz.net
www.padeepz.net
Software Engineering
Es t ab l is h s ys tem
requ irement s
Parti ti on requ
irement s
t
ne
So ftware Hardw are
requ ir ement s requ irement s
.
So ftware Hardw are
pz
d es ig n d es ig n
Timing constraints
• For aperiodic stimuli, designers make assumptions about probability of occurrence of stimuli.
.p
• May mean that certain design strategies such as object-oriented design cannot be used
because of the additional overhead involved
• The effect of a stimulus in a real-t ime s ystem may trigger a transition from one state to
another.
• Finite state machines can be used for modelling real-time systems.
w
• However, FSM models lack structure. Even simple systems can have a complex model.
• The UML includes notations for defining state machine models
w
www.padeepz.net
www.padeepz.net
Software Engineering
Fu l l
p owe r F u ll p o w e r
d o : se t p o w e r
= 6 00
Ti mer
Wait in g
Nu mb er
d o: di sp lay Op erati on
Fu ll Set ti me
ti me
t
p ow er d o: get nu mber d o: op erate
e xi t: s e t t im e o ven
ne
H al f
Hal f p ow er
Do or
p ow er Ca ncel
Ti mer clo se d
Do or St art
o pen S y st e m
Hal f p ower E n a bl e d faul t Wait in g
d o : se t p o w e r Do or d o: di sp lay d o : d i sp l a y
= 3 00 clo sed ' Re ady' ti me
.
Di s ab l ed
pz
d o: di s p la y
'Wait in g'
Real-time programming
• Hard-real time systems may have to programmed in assembly language to ensure that
ee
deadlines are met
• Languages such as C allow efficient programs to be written but do not have constructs to
support concurrency or shared resource management
• Ada as a language designed to support real-t ime s ystems design so includes a general
purpose concurrency mechanism
ad
Java as a real-time language
• Java supports lightweight concurrency (threads and synchonized methods) and can be used
for some soft real-time systems
• Java 2.0 is not suitable for hard RT pro gramming or programming where prec ise control o f
timing is required
.p
• Responsible for process management and resource (processor and memory) allocation
• Storage management, fault management.
• Components depend on complexity of system
w
Executive components
• Real-time clock
• Provides information for process scheduling.
• Interrupt handler
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Starts process execution.
ne
Non-stop system components
• Configuration manager
• Responsible for the d ynamic reconfiguration of the s ystem software and hardware.
Hardware modules may be replaced and software upgraded without stopping the
systems
.
• Fault manager
pz
• Responsible for detecting software and hardware faults and taking appropriate actions
(e.g. switching to backup disks) to ensure that the system continues in operation
Real-time executive components
Sch edul in g
i nfo rmat io n
clo ck
ee
Real-t ime
Sch edul er Int errup t
h an dl er
l is t l is t
Ex ecut in g
p ro ces s
Process priority
w
Interrupt servicing
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• The real-time clock ticks periodically and each tick causes an interrupt which schedules the
ne
process manager for periodic processes
• The process manager selects a process which is ready for execution
Process management
• Concerned with managing the set of concurrent processes
• Periodic processes are executed at pre-specified time intervals
.
• The executive uses the real-time clock to determine when to execute a process
pz
• Process period - time between executions
• Process deadline - the time by which processing must be complete
Process switching
ad
• The scheduler chooses the next process to be executed by the processor. This depends on a
scheduling strategy which may take the process priority into account
• The resource manager allocates memory and a processor for the process to be executed
• The despatcher takes the process from ready list, loads it onto a processor and starts
execution
.p
Scheduling strategies
• Non pre-emptive scheduling
• Once a process has been scheduled for execution, it runs to completion or until it is
blocked for some reason (e.g. waiting for I/O)
w
• Pre-emptive scheduling
• The execution of an executing processes may be stopped if a higher prio rity process
requires service
w
• Scheduling algorithms
• Round-robin
• Shortest deadline first
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
reactor.
ne
• Flux data is placed in a ring buffer for later processing.
• The ring buffer is itself implemented as a concurrent process so that the collection and
processing processes may be synchronized.
.
v a lu e )
Processed
pz
Sensor
identifier flux level
an d valu e
Sensor Sensor data Process
Display
process buffer data
ee
A ring buffer
Producer
proces s
ad
Cons umer
process
.p
Mutual exclusion
w
• Producer processes collect data and add it to the buffer. Consumer processes take data from
the buffer and make elements available.
• Producer and consumer processes must be mutually excluded from accessing the same
element.
w
• The buffer must stop producer processes adding information to a full buffer and consumer
processes trying to take information from an empty buffer.
w
www.padeepz.net
www.padeepz.net
Software Engineering
int numberOfEntries = 0 ;
int front = 0, back = 0 ;
CircularBuffer (int n) {
bufsize = n ;
store = new SensorRecord [bufsize] ;
t
} // CircularBuffer
ne
synchronized void put (SensorRecord rec ) throws InterruptedException
{
if ( numberOfEntries == bufsize)
wait () ;
store [back] = new SensorRecord (rec.sensorId, rec.sensorVal) ;
.
back = back + 1 ;
if (back == bufsize)
pz
back = 0 ;
numberOfEntries = numberOfEntries + 1 ;
notify () ;
} // put
{
ee
synchronized SensorRecord get () throws InterruptedException
return result ;
} // get
} // CircularBuffer
w
www.padeepz.net
www.padeepz.net
Software Engineering
• The system should include provision for operation without a mains power supply
t
• Voltage drop sensor
ne
• Actions
• When an intruder is detected, police are called automatically.
• Lights are switched on in rooms with active sensors.
• An audible alarm is switched on.
• The system switches automatically to backup power when a voltage drop is detected.
.
The R-T system design process
pz
• Identify stimuli and associated responses
• Define the timing constraints associated with each stimulus and response
• Allocate system functions to concurrent processes
• Design algorithms for stimulus processing and response generation
• Design a scheduling system which ensures that processes will always be scheduled to meet
ee
their deadlines
• Stimuli to be processed
• Power failure
• Generated by a circuit monitor. When received, the system must switch to backup
power within 50 ms
ad
• Intruder alarm
• Stimulus generated by system sensors. Response is to call the po lice, switch on
building lights and the audible alarm
Timing requirements
.p
Audible alarm The audible alarm should be switched on wit hin 1/2
second of an alarm being raised by a sensor.
Lights switch The lights should be switched on within 1/2 second
w
www.padeepz.net
www.padeepz.net
Software Engineering
Process architecture
4 00 Hz 6 0Hz 1 00 Hz
t
Det ecto r s tat us Sen so r st at us Sen so r st at us
ne
5 60 Hz Al ar m s ys tem
Power fai lu re
.
i nt erru pt Bu il di ng mon it or Roo m n umb er
pz
Pow er swi t ch Al arm s ys tem
p ro ces s p ro ces s Al ert mess ag e
Ro om nu mber
Al arm Al arm Al arm s ys tem
ees ys tem s ys tem Ro om nu mber
Au di bl e alarm Li ghti ng co nt ro l Vo ice s yn th esi zer p
p ro ces s p ro ces s ro ces s
BuildingMonitor()
{
// initialise all the sensors and start the processes
w
siren.start () ; lights.start () ;
synthesizer.start () ; windows.start () ;
doors.start () ; movements.start () ; pm.start () ;
}
www.padeepz.net
www.padeepz.net
Software Engineering
t
move = movements.getVal () ;
// poll the window sensors at least twice/second (100 Hz)
ne
win = windows.getVal () ;
// poll the door sensors at least twice per second (60 Hz)
door = doors.getVal () ;
if (move.sensorVal == 1 | door.sensorVal == 1 | win.sensorVal == 1)
{
.
// a sensor has indicated an intruder
if (move.sensorVal == 1) room = move.room ;
pz
if (door.sensorVal == 1) room = door.room ;
if (win.sensorVal == 1 ) room = win.room ;
Sen so r
p ro ces s
Sen so r
w
5 00 Hz valu es
Th ermo st at
p ro ces s
w
Sw it ch co mmand
5 00 Hz Ro om n u mber Th ermo st at pro ces s
w
Control systems
www.padeepz.net
www.padeepz.net
Software Engineering
• A burglar alarm system is primarily a monitoring system. It collects data from sensors but no
real-time actuator control
• Control systems are similar but, in response to sensor values, the system sends contro l
signals to actuators
• An example o f a monitoring and control s ystem is a system which mo nitors temperature and
t
switches heaters on and off
ne
UNIT IV
TESTING
Taxonomy of Software Testing
.
pz
• Classified by purpose, software testing can be divided into: correctness testing, performance
testing, and reliability testing and security testing.
• Classified by life-cycle phase, software testing can be classified into the fo llowing
categories: requirements phase test ing, design phase testing, program phase testing,
evaluating test results, installation phase testing, acceptance testing and maintenance testing.
ee
• By scope, software testing can be categorized as follows: unit testing, component testing,
integration testing, and system testing.
Correctness testing
Correctness is the minimum requirement of so ftware, the essential purpose of testing. It is
used to tell the right behavior from the wrong one. The tester may or may not know the inside
ad
details of the software module under test, e.g. control flo w, data flow, etc. Therefore, either a
white-box po int of view or black-box point of view can be taken in testing software. We must
note that the black-box and white-box ideas are not limited in correctness testing only.
• Black-box testing
• White-box testing
.p
Performance testing
Not all software systems have specifications on performance explicit ly. But ever y system
will have implicit performance requirements. The software should not take infinite time or
w
infinite resource to execute. "Performance bugs" sometimes are used to refer to those design
problems in software that cause the system performance to degrade.
Performance has always been a great concern and a driving force of co mputer evo lution.
Performance evaluation of a software s ystem usually includes: resource usage, throughput,
w
stimulus-response time and queue lengths detailing the average or maximum number of tasks
wait ing to be serviced by selected resources. Typical resources that need to be considered
include network bandwidth requirements, CPU cycles, disk space, disk access operations, and
w
memory usage. The goal of performance testing can be performance bottleneck ident ification,
performance comparison and evaluation, etc.
Reliability testing
www.padeepz.net
www.padeepz.net
Software Engineering
t
Therefore, based on the estimation, the developers can decide whether to release the software,
and the users can decide whether to adopt and use the software. Risk of using software can also
ne
be assessed based on reliability information.
Security testing
Software qualit y, reliability and security are tight ly coupled. Flaws in software can be
exploited by intruders to open security ho les. With the development of the Internet, software
.
security problems are becoming even more severe.
pz
Many critical software applications and services have integrated security measures against
malicious attacks. The purpose of security testing of these s ystems include identifying and
removing software flaws that may potentially lead to security vio lations, and validat ing the
effectiveness of security measures. Simulated security attacks can be performed to find
vulnerabilities.
ee
Types of S/W Test
Acceptance testing
Testing to verify a product meets customer specified requirements. A customer usuall y
does this type of testing on a product that is developed externally.
ad
Compatibility testing
This is used to ensure compatibilit y of an application or Web site with different browsers,
OSs, and hardware platforms. Compatibilit y testing can be performed manually or can be driven
by an automated functional or regression test suite.
.p
Conformance testing
This is used to verify implementation conformance to industry standards. Producing tests
for the behavior of an implementation to be sure it provides the portabilit y, interoperabilit y,
and/or compatibility a standard defines.
w
Integration testing
Modules are t ypically code modules, individual applications, client and server
w
applicat ions on a network, etc. Integration Testing follows unit testing and precedes system
testing.
Load testing
w
Load testing is a generic term covering Performance Testing and Stress Testing.
Performance testing
www.padeepz.net
www.padeepz.net
Software Engineering
t
Regression testing
ne
Similar in scope to a functional test, a regression test allows a consistent, repeatable
validation of each new release of a product or Web site. Such testing ensures reported product
defects have been corrected for each new release and that no new quality problems were
introduced in the maintenance process. Though regression testing can be performed manually an
automated test suite is often used to reduce the time and resources needed to perfo rm the
.
required testing.
pz
System testing
Entire s ystem is tested as per the requirements. Black-box t ype testing that is based on
overall requirements specifications, covers all combined parts of a system.
End-to-end testing
ee
Similar to system testing, invo lves testing of a complete application environment in a
situation that mimics real-world use, such as interact ing with a database, using network
communications, or interacting with other hardware, applications, or systems if appropriate.
Sanity testing
ad
Testing is to determine if a new software version is performing well enough to accept it
for a major testing effo rt. If application is crashing for initial use then system is not stable
enough for further testing and build or application is assigned to fix.
Alpha testing
In house virtual user environment can be created for this type of testing. Testing is done
.p
at the end of development. Still minor design changes may be made as a result of such testing.
Beta testing
Testing is typically done by end-users or others. This is the final testing before releasing
w
Testing Objectives:
• Testing is the process of executing a program with the intent of finding errors.
• A good test case is one with a high probability of finding an as-yet undiscovered error.
• A successful test is one that discovers an as-yet-undiscovered error.
www.padeepz.net
www.padeepz.net
Software Engineering
Testing Principles:
• All tests should be traceable to customer requirements.
• Tests should be planned before testing begins.
• 80% of all errors are in 20% of the code.
• Testing should begin in the small and progress to the large.
• Exhaustive testing is not possible.
t
Testing should be conducted by an independent third party if possible.
Software Defect Causes:
ne
• Specification may be wrong.
• Specification may be a physical impossibility.
• Faulty program design.
• Program may be incorrect.
.
Types of Errors:
pz
• Algorithmic error.
• Computation & precision error.
• Documentation error.
• Capacity error or boundary error.
• Timing and coordination error.
• Throughput or performance error.
ee
• Recovery error.
• Hardware & system software error.
• Standards & procedure errors.
Software Testability Checklist – 1:
• Operability
ad
– if it works better it can be tested more efficiently
• Observability
– what you see is what you test
• Controllability
– if software can be controlled better the it is more that testing can be automated
and optimized
.p
• Stability
– the fewer the changes, the fewer the disruptions to testing
• Understandability
w
– the more information that is known, the smarter the testing can be done
Good Test Attributes:
• A good test has a high probability of finding an error.
• A good test is not redundant.
w
www.padeepz.net
www.padeepz.net
Software Engineering
– knowing the specified function a product is to perform and demo nstrating correct
operation based solely on its specification without regard for its internal logic
• White-box or glass-box testing
– knowing the internal workings of a product, tests are performed to check the
workings of all possible logic paths
White-Box Testing:
t
Basis Path Testing:
• White-box technique usually based on the program flow graph
ne
• The cyclo matic co mplexity of the pro gram computed from its flow graph using the
formula V(G) = E – N + 2 or by counting the conditional statements in the PDL
representation and adding 1
• Determine the basis set of linearly independent paths (the cardinality of this set is the
program cyclomatic complexity)
.
• Prepare test cases that will force the execution of each path in the basis set.
pz
Cyclomatic Complexity:
A number of industry studies have indicated that the higher V(G), the higher the probability or
errors.
Control Structure Testing – 1:
ee
• White-box techniques focusing on control structures present in the software
• Condition testing (e.g. branch testing)
– focuses on testing each decision statement in a software module
– it is important to ensure coverage of all logical combinations of data that may be
processed by the module (a truth table may be helpful)
ad
Control Structure Testing – 2:
• Data flow testing
– selects test paths based according to the locations of variable definitio ns and uses
in the program (e.g. definition use chains)
• Loop testing
– focuses on the validity of the program loop constructs (i.e. while, for, go to)
.p
– involves checking to ensure loops start and stop when they are supposed to
(unstructured loops should be redesigned whenever possible)
Loop Testing: Simple Loops:
Minimum conditions—Simple Loops
w
Nested Loops
Start at the innermost loop. Set all outer loops to their minimum iteration parameter values.
Test the min+1, t ypical, max-1 and max for the innermost loop, while holding the outer loops at
their minimum values.
www.padeepz.net
www.padeepz.net
Software Engineering
Move out one loop and set it up as in step 2, holding all other loops at typical values. Continue
this step until the outermost loop has been tested.
Concatenated Loops
If the loops are independent of one another
then treat each as a simple loop
else* treat as nested loops
t
end if*
for example, the final loop counter value of loop 1 is
ne
used to initialize loop 2.
Black-Box Testing:
Graph-Based Testing – 1:
• Black-box methods based on the nature of the relationships (links) among the pro gram
.
objects (nodes), test cases are designed to traverse the entire graph
pz
• Transaction flow testing
– nodes represent steps in some transact ion and links represent logical connections
between steps that need to be validated
• Finite state modeling
– nodes represent user observable states of the software and links represent state
transitions
ee
Graph-Based Testing – 2:
• Data flow modeling
– nodes are data objects and links are transformations of one data object to another
data object
• Timing modeling
ad
– nodes are program objects and links are sequential connections bet ween these
objects
– link weights are required execution times
Equivalence Partitioning:
• Black-box technique that divides the input domain into classes of data from which test
cases can be derived
.p
• An ideal test case uncovers a class of errors that might require many arbit rary test cases
to be executed before a general error is observed
Equivalence Class Guidelines:
• If input condition specifies a range, one valid and two invalid equivalence classes are
w
defined
• If an input condition requires a specific value, one valid and two invalid equivalence
classes are defined
w
• If an input condition specifies a member of a set, one valid and one invalid equivale nce
class is defined
• If an input condition is Boolean, one valid and one invalid equivalence class is defined
• Boundary Value Analysis - 1
w
• Black-box technique
– focuses on the boundaries of the input domain rather than its center
• Guidelines:
www.padeepz.net
www.padeepz.net
Software Engineering
– If input condit ion specifies a range bounded by values a and b, test cases should
include a and b, values just above and just below a and b
– If an input condition specifies and number of values, test cases should be exercise
the minimum and maximum numbers, as well as values just above and just below
the minimum and maximum values
Boundary Value Analysis – 2
t
1. Apply guidelines 1 and 2 to output conditions, test cases should be designed to
produce the minimum and maximum output reports
ne
2. If internal program data structures have bo undaries (e.g. size limitations), be
certain to test the boundaries
Comparison Testing:
• Black-box testing for safety critical s ystems in which independent ly developed
implementations of redundant systems are tested for conformance to specificatio ns
.
• Often equivalence class partitioning is used to develop a co mmon set of test cases for
each implementation
pz
Orthogonal Array Testing – 1:
• Black-box technique that enables the design of a reasonably small set of test cases that
provide maximum test coverage
• Focus is on categories of faulty logic likely to be present in the software component
(without examining the code)
ee
Orthogonal Array Testing – 2:
• Priorities for assessing tests using an orthogonal array
– Detect and isolate all single mode faults
– Detect all double mode faults
– Multimode faults
ad
Software Testing Strategies:
Strategic Approach to Testing – 1:
• Testing begins at the co mponent level and works outward toward the integration of the
entire computer-based system.
• Different testing techniques are appropriate at different points in time.
• The developer of the software conducts testing and may be assisted by independent test
.p
"Are we building the product right" The software should conform to its specification
Validation:
"Are we building the right product" The software should do what the user really requires
The V & V process:
www.padeepz.net
www.padeepz.net
Software Engineering
• As a whole life-c ycle process - V & V must be applied at each stage in the software
process.
• Has two principal objectives
– The discovery of defects in a system
– The assessment of whether or not the system is usable in an operational situation.
• Strategic Testing Issues - 1 Specify product requirements in a quant ifiable manner before
t
testing starts.
• Specify testing objectives explicitly.
ne
• Identify the user classes of the software and develop a profile for each.
• Develop a test plan that emphasizes rapid cycle testing.
Strategic Testing Issues – 2:
• Build robust software that is designed to test itself (e.g. use anti-bugging).
• Use effective formal reviews as a filter prior to testing.
.
• Conduct formal technical reviews to assess the test strategy and test cases.
pz
Testing Strategy:
ee
ad
.p
Unit Testing:
w
w
w
www.padeepz.net
www.padeepz.net
Software Engineering
• Program reviews.
• Formal verification.
• Testing the program itself.
– black box and white box testing.
Black Box or White Box?:
t
• Maximum # of logic paths - determine if white box testing is possible.
• Nature of input data.
ne
• Amount of computation involved.
• Complexity of algorithms.
Unit Testing Details:
• Interfaces tested for proper information flow.
• Local data are examined to ensure that integrity is maintained.
.
• Boundary conditions are tested.
pz
• Basis path testing should be used.
• All error handling paths should be tested.
• Drivers and/or stubs need to be developed to test incomplete software.
Unit Testing:
ee
ad
.p
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
Integration Testing:
• Bottom - up testing (test harness).
• Top - down testing (stubs).
• Regression Testing.
ee
• Smoke Testing
subordinate to it.
• Subordinate stubs are replaced one at a t ime with real components (fo llowing the depth-
first or breadth-first approach).
• Tests are conducted as each component is integrated.
• On completion of each set of tests and other stub is replaced with a real component.
www.padeepz.net
www.padeepz.net
Software Engineering
• Regression testing may be used to ensure that new errors not introduced.
Bottom-Up Integration:
t
. ne
pz
Bottom-Up Integration Testing:
• Low level components are combined in clusters that perform a specific software function.
• A driver (control program) is written to coordinate test case input and output.
ee
• The cluster is tested.
• Drivers are removed and clusters are combined moving upward in the program structure.
Regression Testing:
• The selective retesting of a software s ystem that has been modified to ensure that an y
bugs have been fixed and that no other previously working functions have failed as a
result of the reparations and that newly added features have not created problems wit h
ad
previous versions of the software. Also referred to as verification testing, regression
testing is initiated after a programmer has attempted to fix a recognized problem or has
added source code to a program that may have inadvertent ly introduced errors. It is a
quality control measure to ensure that the newly modified code st ill complies with its
specified requirements and that unmodified code has not been affected by the
.p
maintenance activity.
Regression Testing:
• Regression test suit contains 3 different classes of test cases
w
• A series of tests designed to expose errors that will keep the build from performing its
functions are created.
• The build is integrated with the other builds and the ent ire product is smoke tested daily
using either top-down or bottom integration.
Validation Testing:
www.padeepz.net
www.padeepz.net
Software Engineering
t
Acceptance Testing:
• Making sure the software works correctly for intended user in his or her normal work
ne
environment.
• Alpha test
– version of the complete software is tested by customer under the supervision of
the developer at the developer‘s site
• Beta test
.
– version of the complete software is tested by customer at his or her o wn site
pz
without the developer being present
System Testing:
• Recovery testing
– checks system‘s ability to recover from failures
• Security testing
– verifies that s ystem protection mechanism prevents improper penetration or data
ee alteration
• Stress testing
– program is checked to see how well it deals with abnormal resource demands
• Performance testing
– tests the run-time performance of software
ad
Performance Testing:
• Stress test.
• Volume test.
• Configuration test (hardware & software).
• Compatibility.
• Regression tests.
.p
• Security tests.
• Timing tests.
• Environmental tests.
• Quality tests.
w
• Recovery tests.
• Maintenance tests.
• Documentation tests.
w
– Correct.
– Feasible.
– Coverage.
– Demonstrate functionality.
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Monitors.
• Analyzers.
ne
• Test data generators.
Document Each Test Case:
• Requirement tested.
• Facet / feature / path tested.
• Person & date.
.
• Tools & code needed.
• Test data & instructions.
pz
• Expected results.
• Actual test results & analysis
• Correction, schedule, and signoff.
Debugging:
• Debugging (removal of a defect) occurs as a consequence of successful testing.
ee
• Some people better at debugging than others.
• Is the cause of the bug reproduced in another part of the program?
• What ―next bugǁ might be introduced by the fix that is being proposed?
• What could have been done to prevent this bug in the first place?
ad
Software Implementation techniques
• Implementation techniques include imperative languages (object-oriented or procedural),
functional languages, and logic languages.
• Software Implementation Techniques include process and thread scheduling, synchronization
and concurrency primitives, file management, memory management, performance,
.p
Procedural programming
Procedural programming can so metimes be used as a synonym for imperative
w
programming (specifying the steps the program must take to reach the desired state), but can also
refer (as in this article) to a programming paradigm, derived from structured programming, based
upon the concept of the procedure call. Procedures, also known as routines, subroutines,
w
methods, or functions (not to be confused with mathemat ical functions, but similar to those used
in funct ional programming) simply contain a series of co mputational steps to be carried out. Any
given procedure might be called at any point during a program's execut ion, including by other
procedures or itself. Some good examples of procedural pro grams are t he Linux Kernel, GIT,
w
Object-oriented programming
www.padeepz.net
www.padeepz.net
Software Engineering
t
opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to
perform. In OOP, each object is capable o f receiving messages, processing data, and sending
ne
messages to other objects. Each object can be viewed as an independent 'machine' with a dist inct
role or responsibilit y. The actions (or "methods") on these objects are closely associated with the
object. For example, OOP data structures tend to 'carry their own operators around with them' (or
at least "inherit" them from a similar object or class). In the convent ional model, the data and
operations on the data don't have a tight, formal association.
.
functional p rogramming is a programming paradigm that treats computation as the evaluation
pz
of mathematical functions and avoids state and mutable data. It emphasizes the application of
funct ions, in contrast to the imperative pro gramming st yle, which emphasizes changes in state.
Functional programming has its roots in lambda calculus, a formal s ystem developed in the
1930s to investigate function definition, function application, and recursion. Many functional
programming languages can be viewed as elaborations on the lambda calculus.
ee
In practice, the difference between a mathemat ical function and the notion of a "function"
used in imperative programming is that imperative functions can have side effects, changing the
value of already calculated computations. Because of this they lack referential transparenc y, i.e.
the same language expression can result in different values at different times depending on the
state of the execut ing program. Conversely, in functional code, the output value of a function
ad
depends only on the arguments that are input to the function, so calling a function f twice wit h
the same value for an argument x will produce the same result f (x) both times. Eliminating side
effects can make it much easier to understand and predict the behavior of a pro gram, which is
one of the ke y motivations for the development of functional programming.JavaScript, one of the
most widely employed languages today, incorporates functional programming capabilities.
.p
Logic programming is, in its broadest sense, the use of mathematical logic for computer
programming. In this view of logic pro grammin g, which can be t raced at least as far back as
John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative
representation language, and a theorem-prover or model-generator is used as the problem-so lver.
w
The problem-solving task is split between the programmer, who is respo nsible only for ensuring
the truth of programs expressed in logical form, and the theorem-prover or model-generator,
which is responsible for solving problems efficiently.
w
Oracle created a subset of the templates, called it AIM Advantage, and made it available as a
product to customers and other consulting firms. Since its init ial release, AIM has been revised
and improved several times with new templates and methods.
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Operations Analysis phase: Includes documents business requirements, gaps in the
software (which can lead to customizations), and system architecture requirements. Results o f
ne
the analysis should provide a proposal for future business processes, a technical architecture
model, an application architecture model, workarounds for application gaps, performance testing
models, and a transition strategy to migrate to the new systems. Another task that can begin in
this phase is mapping of legacy data to Oracle Application APIs or open interfaces—data
conversion.
.
• Solution Design phase—Used to create designs for solutions that meet future
pz
business requirements and processes. The design of your future organization co mes alive during
this phase as customizations and module configurations are finalized.
• Build phase—During this phase of AIM, coding and testing of customizations,
enhancements, interfaces, and data conversio ns happens. In addition, one or more conference
room pilots test the integrated enterprise s ystem. The results of the build phase should be a
ee
working, tested business system solution.
• Transition phase—During this phase, the project team delivers the finished
solution to the enterprise. End-user training and support, management of change, and data
conversions are major activities of this phase.
• Production phase—Starts when the system goes live. Technical people work to
stabilize and maintain the system under full transaction loads. Users and the implementation
ad
team begin a series of refinements to minimize unfavorable impacts and realize the business
objectives identified in the definition phase.
Rapid Implementations
In the late 1990s as Y2K approached, customers demanded and consult ing firms discovered
.p
faster ways to implement packaged software applicat ions. The rapid implementation became
possible for certain t ypes of customers. The events that converged in the late 1990s to provide
faster implementations include the following:
• Many smaller companies couldn‘t afford the big ERP project. If the software vendors and
w
consulting firms were go ing to sell to the ―middle marketǁ companies, they had to
develop more efficient methods.
• Many dotcoms needed a financial infrastructure; ERP applications filled the need, and rapid
implementation methods provided the way.
w
• The functionality of the software improved a lo t, many gaps were eliminated, and more
companies could implement with fewer customizations.
• After the big, complex companies implemented their ERP systems, the typical
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
budgets are set for training, production support, and data conversions (a limited amount of data).
ne
Phased Implementations
Phased implementations seek to break up the work of an ERP implementation project.
This technique can make the system more manageable and reduce risks, and costs in so me cases,
to the enterprise. In the mid-1990s, 4 or 5 was about the maximum number of applicatio n
modules that could be launched into production at one time. If you bought 12 or 13 applications,
.
there would be a financial phase that would be followed by phases for the distribution and
manufacturing applications. As implementation techniques improved and Y2K pressures grew in
pz
the late 1990s, more and more companies started launching most of their applications at the same
time. This method became known as the big-bang approach. Now, each co mpany selects a
phased or big-bang approach based on its individual requirements.
Another approach to phasing can be emplo yed by co mpanies with business units at
multiple sites. With this technique, one business unit is used as a template, and all applications
ee
are completely implemented in an initial phase last ing 10–14 months. Then, other sites
implement the applicat ions in cookie-cutter fashion. The cookie-cutter phases are focused on
end-user training and the differences that a site has from the protot ype site. The cookie-cutter
phase can be as short as 9–12 weeks, and these phases can be conducted at several sites
simultaneously. For your reference, we participated in an efficient project where 13 app lications
ad
were implemented big bang–st yle in July at the Chicago site after about 8 months work. A site in
Malaysia went live in October. The Ireland site started up in November. After a holiday break,
the Atlanta business unit went live in Februar y, and t he final site in China started using the
applications in April. Implement ing thirteen application modules at five sites in four countries in
sixteen months was pretty impressive.
Case Studies Illustrating Implementation Techniques
.p
Some pract ical examples from the real world might help to illustrate some of the principles and
techniques of various software implementation methods. These case studies are composites fro m
about 60 implementation projects we have observed during the past 9 years.
w
Big companies often have a horrible t ime resolving issues and deciding on configuration
parameters because there is so much money involved and each of many sites might want to
control decisions about what it considers its crit ical success factors. For example, we once s aw a
w
large company argue for over two months about the chart of accounts structure, while eight
consultants from two consult ing firms tried to referee amo ng the feuding operating units.
Another large company labored for more than six months to unify a mast er customer list for a
centralized receivables and decentralized order entry system.
w
Transition activit ies at large companies need special attention. Training end users can be
a logist ical challenge and can require considerable planning. For example, if you have 800 users
to train and each user needs an average of three classes of two hours each and you have one
month, how many classrooms and instructors do you need? Another example is that loading data
www.padeepz.net
www.padeepz.net
Software Engineering
from a legacy s ystem can be a problem. If you have one million customers to load into Oracle
receivables at the rate of 5,000/hour and the database administrator allows you to load 20 hours
per day, you have a 10-day task.
Because they spend huge amounts of money on their ERP systems, many big co mpanies
try to optimize the systems and capture specific returns on the investment. However, sometimes
companies can be incredibly insensitive and unco ordinated as they tr y to make money fro m their
t
ERP software. For example, one business announced at the beginning of a pro ject that the
accounts payable depart ment would be cut from 50–17 emplo yees as soon as the system went
ne
live. Another company decided to centralize about 30 accounting sites into one shared service
center and advised about 60 accountants that they would lo se their jo bs in about a year. Several
of the 60 employees were offered positions on the ERP implementation team.
Small companies have other problems when creating an implementation team. Occasionally, the
.
small co mpany tries to put clerical emplo yees on the team and they have problems with issue
pz
resolution or some of the ERP concepts. In another case, one small co mpany didn‘t create the
position of project manager. Each department worked on its own modules and ignored the
integration points, testing, and requirements of other users. When Y2K deadlines forced the
system startup, results were disastrous with a cost impact that doubled the cost of the ent ire
project.
Project team members at small companies sometimes have a hard time relating to the cost
ee
of the implementation. We once worked with a company where the pro ject manager (who was
also the database administrator) advised me within the first hour of our meet ing that he thought
consulting charges of $3/minute were outrageo us, and he couldn‘t rationalize how we could
possibly make such a contribution. We agreed a consultant could not contribute $3 in value each
and every minute to his project. However, when I told him we would be able to save him
ad
$10,000/week and make the difference between success and failure, he realized we should get to
work.
Because the small co mpany might be relat ively simple to implement and the technical
staff might be inexperienced with the database and software, it is possible that the technical staff
will be on the crit ical path o f the pro ject. If the database administrator can‘t learn how to handle
the production database by the time the users are ready to go live, you might need to hire so me
.p
temporary help to enable the users to keep to the schedule. In addition, we often s ee small
companies with just a single database administrator who might be working 60 or mo re hours per
week. They feel they can afford to have more DBAs as employees, but they don‘t know how to
establish the right ratio of support staff to user requirements. These companies can burn out a
w
DBA quickly and then have to deal with the problem of replacing an important skill.
w
w
www.padeepz.net
www.padeepz.net
Software Engineering
UNIT V
t
software product or process.
• This allows for objective comparisons between techniques and processes.
ne
• Although some companies have introduced measurement programmes, most organisations
still don‘t make systematic use of software measurement.
• There are few established standards in this area.
Software metric
.
• Any type of measurement which relates to a software system, process or related
pz
documentation
• Lines of code in a program, the Fog index, number of person-days required to
develop a component.
• Allow the software and the software process to be quantified.
• May be used to predict product attributes or to control the software process.
ee
• Product metrics can be used for general predictions or to identify anomalous components.
Metrics assumptions
• A software property can be measured.
w
• The relationship exists between what we can measure and what we want to know. We can
only measure internal attributes but are often more interested in external software attributes.
• This relationship has been formalised and validated.
w
• It may be difficult to relate what can be measured to desirable external quality attributes.
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
The measurement process
pz
• A software measurement process may be part of a quality control process.
• Data collected during this process should be maintained as an organisational resource.
• Once a measurement database has been established, comparisons across projects become
possible.
ee
Product measurement process
ad
.p
Data collection
• A metrics programme should be based on a set of product and process data.
• Data should be collected immediately (not in retrospect) and, if possible, automatically.
• Three types of automatic data collection
w
Data accuracy
• Don‘t collect unnecessary data
• The questions to be answered should be decided in advance and the required data
w
identified.
• Tell people why the data is being collected.
• It should not be part of personnel evaluation.
• Don‘t rely on memory
• Collect data when it is generated not after a project has finished.
www.padeepz.net
www.padeepz.net
Software Engineering
Product metrics
• A quality metric should be a predictor of product quality.
• Classes of product metric
• D ynamic metrics which are collected by meas urements made of a program in
execution;
• Static metrics which are collected by measurements made of the system
t
representations;
• Dynamic metrics help assess efficiency and reliabilit y; static metrics help assess
ne
complexity, understand ability and maintainability.
.
or the number of failures (reliability attribute).
pz
• Static metrics have an indirect relationship with quality attributes
• You need to try and derive a relationship between these metrics and properties such
as complexity, understandability and maintainability.
the size of the code of a co mponent, the more complex and error-
prone that component is likely to be. Length of code has been
shown to be one of the most reliable metrics for predict ing error-
proneness in components.
w
Cyclomatic complexity This is a measure of the control complexity of a pro gram. This
control complexit y may be related to program understandabilit y. I
discuss how to compute cyclomatic complexity in Chapter 22.
Length of identifiers This is a measure of the average length of dist inct ident ifiers in a
w
program. The longer the identifiers, the more likely the y are to be
meaningful and hence the more understandable the program.
Depth of conditional This is a measure of the depth of nesting of if-statements in a
w
www.padeepz.net
www.padeepz.net
Software Engineering
Object-oriented metrics
Depth of inheritance tree This represents the number of discrete levels in the inheritance
t
tree where sub-classes inherit attributes and operations
(methods) from super-classes. The deeper the inheritance tree,
ne
the more complex the design. Many different object classes may
have to be understood to understand the object classes at the
leaves of the tree.
Method fan-in/fan-out This is directly related to fan-in and fan-out as described above
and means essentially the same thing. However, it may be
.
appropriate to make a distinction between calls from other
pz
methods within the object and calls from external methods.
Weighted methods per This is the number of methods that are included in a class
class weighted by the complexity of each method. Therefore, a simple
method may have a complexity of 1 and a large and complex
method a much higher value. The larger the value for this
metric, the more complex the object class. Complex objects are
ee more likely to be more difficult to understand. They may not be
logically cohesive so cannot be reused effectively as super-
classes in an inheritance tree.
Number of overriding This is the number of operations in a super-class that are over-
operations ridden in a sub-class. A high value for this metric indicates that
ad
the super-class used may not be an appropriate parent for the
sub-class.
Measurement analysis
• It is not always obvious what data means
.p
Measurement surprises
• Reducing the number of faults in a program leads to an increased number of help desk calls
• The pro gram is now thought of as more reliable and so has a wider more diverse
market. The percentage of users who call the help desk may have decreased but the
w
ZIPF’s Law
• Zipf's Law as "the observation that frequency of occurrence of so me event (P), as a function
of the rank (i) when the rank is determined by the above frequenc y o f occurrence, is a power-
law function Pi ~ 1/ia with the exponent a close to unity (1)."
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Frequency of occurrence of events is inversely proportional to the rank in this frequency o f
ne
occurrence.
• When both are plotted on a log scale, the graph is a straight line.
• we create entities that don't exist except in computer memory at run time; we create lo gic
nodes that will never be tested because it 's impossible to test every lo gic branch; we create
information flows in quantities that are humanly impossible to analyze with a glance;
• Software application is the co mbination of keywords within the context of a solution and not
.
their quantity used in a program; context is not a trivial task because the context of an
pz
application is attached to the problem being solved and every problem to solve is different
and must have a specific program to solve it.
• Although a program could be syntactically correct, it doesn't mean that t he algorithms
implemented so lve the problem at hand. What's more, a correct program can so lve the wrong
problem. Let's say we have the simple requirement of print ing "Hello, World!" A
ee
syntactically correct solution in Java looks as follows:
• Public class SayHello {
public static void main(String[] args) {
System.out.println("John Sena!");
}
}
ad
• This solution is obviously wrong because it doesn't solve the original requirement. This
means that the context of the solution wit hin the pro blem being so lved needs to be
determined to ensure its qualit y. In other words, we need to verify that the output matches the
original requirement.
• Zip's Law can't even say too much about larger systems.
.p
www.padeepz.net
www.padeepz.net
Software Engineering
• There is not a simple relationship between the development cost and the price charged to the
customer.
• Broader organisational, economic, political and business considerations influence the price
charged.
Software productivity
t
• A measure of the rate at which individual engineers involved in software development
ne
produce software and associated documentation.
• Not quality-oriented although quality assurance is a factor in productivity assessment.
• Essentially, we want to measure useful functionality produced per time unit.
Productivity measures
• Size related measures based on some output from the software process. This may be lines o f
.
delivered source code, object code instructions, etc.
pz
• Function-related measures based on an est imate of the functionality of the delivered
software. Function-points are the best known of this type of measure.
Measurement problems
• Estimating the size of the measure (e.g. how many function points).
ee
• Estimating the total number of programmer months that have elapsed.
• Estimating contractor productivity (e.g. documentation team) and incorporating this
estimate in overall estimate.
Lines of code
ad
• The measure was first proposed when programs were typed on cards with one line per card;
• How does this correspond to statements as in Java which can span several lines or where
there can be several statements on one line.
Productivity comparisons
• The lower level the language, the more productive the programmer
.p
• The same functionality takes more code to implement in a lower-level language than
in a high-level language.
• The more verbose the programmer, the higher the productivity
• Measures o f productivity based on lines o f code suggest that pro grammers who write
w
verbose code are more productive than programmers who write compact code.
Function points
• Based on a combination of program characteristics
• external inputs and outputs;
• user interactions;
w
• external interfaces;
• files used by the system.
• A weight is associated with each of these and the function po int count is co mputed b y
multiplying each raw count by the weight and summing all values.
www.padeepz.net
www.padeepz.net
Software Engineering
t
• FPs are very subjective. They depend on the estimator
ne
• Automatic function-point counting is impossible.
COCOMO model
• An empirical model based on project experience.
• Well-documented, ‗independent‘ model which is not tied to a specific software vendor.
• Long history from init ial version published in 1981 (COCOMO-81) through various
.
instantiations to COCOMO 2.
pz
• COCOMO 2 takes into account different approaches to software development, reuse, etc.
COCOMO 81
COCOMO 2
.p
• COCOMO 81 was developed with the assumption that a waterfall process would be used and
that all software would be developed from scratch.
• Since its formulation, there have been many changes in software engineering pract ice and
COCOMO 2 is designed to accommodate different approaches to software development.
w
COCOMO 2 models
• COCOMO 2 incorporates a range of sub-models that produce increasingly detailed software
w
estimates.
• The sub-models in COCOMO 2 are:
• Application composition model. Used when software is composed from exist ing
parts.
w
• Early design model. Used when requirements are available but design has not yet
started.
• Reuse model. Used to compute the effort of integrating reusable components.
www.padeepz.net
www.padeepz.net
Software Engineering
• Post-architecture model. Used once the system architecture has been designed and
more information about the system is available.
t
. ne
pz
ee
Application composition model
ad
• Supports prototyping projects and projects where there is extensive reuse.
• Based on standard estimates of developer productivity in application (object) points/month.
• Takes CASE tool use into account.
• Formula is
o PM = ( NAP (1 - %reuse/100 ) ) / PROD
.p
• A = 2.94 in init ial calibration, Size in KLOC, B varies fro m 1.1 to 1.24 depending on
novelty of the project, development flexibilit y, risk management approaches and the
process maturity.
w
Multipliers
• Multipliers reflect the capability of the developers, the non-functional requirements, the
familiarity with the development platform, etc.
• RCPX - product reliability and complexity;
www.padeepz.net
www.padeepz.net
Software Engineering
t
The reuse model
ne
• Takes into account black-box code that is reused without change and code that has to be
adapted to integrate it with new code.
• There are two versions:
• Black-box reuse where code is not modified. An effort estimate (PM) is computed.
• White-box reuse where code is modified. A size estimate equivalent to the number of
.
lines of new source code is co mputed. This then adjusts the size est imate for new
pz
code.
Post-architecture level
.p
• Uses the same formula as the early design model but with 17 rather than 7 associated
multipliers.
• The code size is estimated as:
• Number of lines of new code to be developed;
w
• Estimate of equivalent number of lines of new code computed using the reuse model;
• An estimate of the number of lines of code that have to be modified according to
requirements changes.
The exponent term
w
• This depends on 5 scale factors (see next slide). Their sum/100 is added to 1.01
• A co mpany takes on a project in a new domain. The client has not defined the process to be
used and has not allowed time for risk analysis. The company has a CMM level 2 rating.
w
www.padeepz.net
www.padeepz.net
Software Engineering
Multipliers
• Product attributes
• Concerned with required characteristics of the software product being developed.
• Computer attributes
t
• Constraints imposed on the software by the hardware platform.
ne
• Personnel attributes
• Multipliers that take the experience and capabilities of the people working on the
project into account.
• Project attributes
• Concerned with the particular characteristics of the software development project.
.
Delphi method
pz
The Delphi method is a systematic, interactive forecasting method which relies on a panel
of experts. The experts answer questionnaires in two or more rounds. After each round, a
facilitator provides an anonymous summar y of the experts‘ forecasts fro m the previous round as
well as the reasons they provided for their judgments. Thus, experts are encouraged to revise
their earlier answers in light of the replies of other members of their panel. It is believed that
ee
during this process the range of the answers will decrease and the group will converge towards
the "correct" answer. Finally, the process is stopped after a pre-defined stop criterion (e.g.
number of rounds, achievement of consensus, stabilit y of results) and the mean or median scores
of the final rounds determine the results.
ad
.p
w
w
w
www.padeepz.net
www.padeepz.net
Software Engineering
The Delphi Technique is an essent ial project management technique that refers to an
information gathering technique in which the opinio ns of those whose opinio ns are most
valuable, traditionally industry experts, is solicited, with the ultimate hope and go al of attaining a
consensus. Typically, the po lling of these industry experts is done on an anonymous basis, in
hopes of attaining opinions that are unfettered by fears or ident ifiabilit y. The experts are
presented with a series of questions in regards to the pro ject, which is typically, but not alwa ys,
t
presented to the expert by a third-party facilitator, in hopes of elicit ing new ideas regarding
specific project points. The responses from all experts are typically co mbined in the form of an
ne
overall summar y, which is then provided to the experts for a review and for the opportunity to
make further comments. This process t ypically results in consensus within a number of rounds,
and this technique t ypically helps minimize bias, and minimizes the possibility t hat any o ne
person can have too much influence on the outcomes.
.
Key characteristics
pz
The following key characteristics of the Delphi method help the participants to focus on
the issues at hand and separate Delphi from other methodologies:
• Structuring of information flow
The initial contributions from the experts are collected in the form of answers to
questionnaires and their comments to these answers. The panel director controls the interactions
among the participants by processing the information and filt ering out irrelevant content. This
ee
avoids the negat ive effects of face-to-face panel discussio ns and solves the usual problems o f
group dynamics.
• Regular feedback
Participants co mment on their own forecasts, the responses of others and on the pro gress
of the panel as a who le. At any moment they can revise their earlier statements. While in regular
ad
group meet ings part icipants tend to stick to previously stated opinio ns and often conform too
much to group leader, the Delphi method prevents it.
• Anonymity of the participants
Usually all participants maintain anonymit y. Their identity is not revealed even after the
completion of the final report. This stops them from do minat ing others in the process using their
.p
authority or personalit y, frees them to some extent from their personal biases, minimizes the
"bandwagon effect" or "halo effect", allows them to freely express their opinions, and
encourages open critique and admitting errors by revising earlier judgments.
w
The first step is to found a steering co mmittee (if you need one) and a management team
with sufficient capacit ies for the process. Then expert panels to prepare and formulate the
statements are helpful unless it is decided to let that be done by the management team. The
whole procedure has to be fixed in advance: Do you need panel meetings or do the teams work
w
virtually. Is the questionnaire an electronic or a paper one? This means, that logistics (fro m
Internet programming to typing the results from the paper versio ns) have to be organised. Will
there be follow-up work-shops,interviews, presentations? If yes, these also have to be organised
and pre-pared. Printing o f brochures, leaflets, questionnaire, reports have also be considered. The
w
last organisational point is the interface with the financing organisation if this is different fro m
the management team.
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
Scheduling
Scheduling Principles
• compartmentalization—define distinct tasks
ee
• interdependency—indicate task interrelationship
• effort validation—be sure resources are available
• defined responsibilities—people must be assigned
• defined outcomes—each task must have an output
• defined milestones—review for quality
ad
Effort and Delivery Time
.p
Effo rt
4 4
Ea = m ( t d /t a )
Eo
Empirical Relationship: P vs E
Given Putnam‘s Software Equation (5-3),
E = L3 / (P3t4)
www.padeepz.net
www.padeepz.net
Software Engineering
Consider a pro ject est imated at 33 KLOC, 12 person- years of effort, with a P of 10K, the
completion time would be 1.3 years
If deadline can be extended to 1.75 years,
E = L3 / (P3t4) ≈ 3.8 p-years vs 12 p-years
t
Timeline Charts
. ne
pz
ee
ad
Effort Allocation
• ―front endǁ activities
.p
• customer communication
• analysis
• design
• review and modification
w
• construction activities
• coding or code generation
• testing and installation
w
• unit, integration
• white-box, black box
• regression
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• is a measure of progress
• enables us to assess the ―percent of completenessǁ of a project using quantitative
ne
analysis rather than rely on a gut feeling
• ―provides accurate and reliable readings of performance from as early as 15 percent
into the project.ǁ
.
Budgeted cost of work scheduled (BCWS)
pz
• The budgeted cost of work scheduled (BCWS) is determined for each work task represented
in the schedule.
• BCWSi is the effort planned for work task i.
• To determine progress at a given point along the project schedule, the value of BCWS
is the sum of the BCWS i values for all work tasks that should have been completed
by that point in time on the project schedule.
ee
• The BCWS values for all work tasks are su mmed to derive the budget at completion, BAC.
Hence,
• BAC = ∑ (BCWSk) for all tasks k
SPI is an indicat ion of the efficiency with which the project is ut ilizing
scheduled resources.
www.padeepz.net
www.padeepz.net
Software Engineering
• Actual cost of work performed, ACWP, is the sum of the effort actually expended on work
tasks that have been completed by a po int in time on the project schedule. It is then possible
to compute
Cost performance index, CPI = BCWP/ACWP
Cost variance, CV = BCWP – ACWP
t
Problem
• Assume you are a software project manager and that you‘ve been asked to computer earned
ne
value statistics for a small software project. The project has 56 planned work tasks that are
estimated to require 582 person-da ys to complete. At the time that you‘ve been asked to do
the earned value analysis, 12 tasks have been completed. However, the project schedu le
indicates that 15 tasks should have been completed. The following scheduling data (in
person-days) are available:
.
• T ask Planned Effort Actual Effort
pz
• 1 12 12.5
• 2 15 11
• 3 13 17
• 4 8 9.5
• 5 ee 9.5 9.0
• 6 18 19
• 7 10 10
• 8 4 4.5
• 9 1 2 1 0
• 10 6 6.5
ad
• 11 5 4
• 12 14 14.5
• 13 16
• 14 6
• 15 8
.p
Error Tracking
• Schedule Tracking
w
• conduct periodic project status meetings in which each team member reports progress
and problems.
• evaluate the results of all reviews conducted throughout the software engineering
process.
w
• determine whether formal project milestones (diamo nds in previous slide) have been
accomplished by the scheduled date.
• compare actual start-date to planned start-date for each project task listed in the
resource table
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Reusable classes have been noted.
• Technical milestone: OO design completed
ne
• The set of subsystems (Chapter 9) has been defined and reviewed.
• Classes are allocated to subsystems and reviewed.
• Task allocation has been established and reviewed.
• Responsibilities and collaborations (Chapter 9) have been identified.
• Attributes and operations have been designed and reviewed.
.
• The communication model has been created and reviewed.
pz
• Progress on an OO Project-II
• Technical milestone: OO programming completed
• Each new class has been implemented in code from the design model.
• Extracted classes (from a reuse library) have been implemented.
• Prototype or increment has been built.
ee
• Technical milestone: OO testing
• The correctness and completeness of OO analysis and design models has been
reviewed.
• A class-responsibility-collaboration network (Chapter 8) has been developed and
reviewed.
• Test cases are designed and class-level tests (Chapter 14) have been conducted for
ad
each class.
• Test cases are designed and cluster testing (Chapter 14) is completed and the classes
are integrated.
• System level tests have been completed.
.p
www.padeepz.net
www.padeepz.net
Software Engineering
t
– Technical / user
ne
• Data
– contained within the program
– external data (e.g. files and databases)
Elements of SCM
• Component element
.
- Tools coupled with file management
pz
• Process element
-Procedures define change management
• Construction element
-Automate construction of software
• Human elements
ee
-Give guidance for activities and process features
Baselines
• A work product becomes a baseline only after it is reviewed and approved.
• Before baseline – changes informal
ad
• Once a baseline is established each change request must be evaluated and verified before it is
processed.
.p
w
w
w
www.padeepz.net
www.padeepz.net
Software Engineering
t
– Used to produce documentation.
. ne
pz
ee
Configuration Management process
• Identification
• tracking changes to multiple SCI versions
• Version control
• controlling changes before and after customer release
ad
• Change control
• authority to approve and prioritize changes
• Configuration auditing
• ensure changes are made properly
• Reporting
.p
• After major empirical studies, Lehman and Belad y proposed that there were a number of
‗laws‘ which applied to all systems as they evolved.
• There are sensible observations rather than laws. They are applicable to large systems
developed by large organisations. Perhaps less applicable in other cases.
w
Importance of evolution
• Organizations have huge invest ments in their software s ystems - they are crit ical business
w
assets.
• To maintain the value of these assets to the business, they must be changed and updated.
• The majority of the software budget in large co mpanies is devoted to evo lving exist ing
software rather than developing new software.
www.padeepz.net
www.padeepz.net
Software Engineering
Software change
• Software change is inevitable
• New requirements emerge when the software is used;
• The business environment changes;
• Errors must be repaired;
• New computers and equipment is added to the system;
t
• The performance or reliability of the system may have to be improved.
• A key problem for organisations is implement ing and managing change to their exist ing
ne
software systems.
Lehman’s laws
Law Description
.
Continuing change A program that is used in a real-world environment
pz
necessarily must change or beco me progressively less
useful in that environment.
Increasing complexity As an evo lving program changes, its structure tends to
become more complex. Extra resources must be devoted to
preserving and simplifying the structure.
Large program Program evo lution is a self-regulat ing process. System
ee
evolution attributes such as size, t ime between releases and the
number of reported errors is approximately invariant for
each system release.
Organisational stability Over a program‘s lifetime, its rate of development is
approximately constant and independent of the resources
ad
devoted to system development.
Conservation of Over the lifetime of a system, the incremental change in
familiarity each release is approximately constant.
Continuing growth The functionality offered by systems has to continuall y
increase to maintain user satisfaction.
.p
• Lehman‘s laws seem to be generally applicable to large, tailored systems developed by large
organisations.
• Confirmed in more recent work by Lehman on the FEAST project (see further
w
www.padeepz.net
www.padeepz.net
Software Engineering
• Small organisations;
• Medium sized systems.
Software maintenance
• Modifying a program after it has been put into use or delivered.
• Maintenance does not normally involve major changes to the system‘s architecture.
t
• Changes are implemented by modifying existing components and adding new components to
ne
the system.
• Maintenance is inevitable
• The system requirements are likely to change while the system is being developed because
the environment is changing. Therefore a delivered system won't meet its requirements!
• Systems are tightly coupled with their environment. When a system is installed in an
environment it changes that environment and therefore changes the system requirements.
.
• Systems MUST be maintained therefore if they
pz
are to remain useful in an environment.
Types of maintenance
• Maintenance to repair software faults
• Code ,design and requirement errors
ee
• Code & design cheap. Requirements most expensive.
• Maintenance to adapt software to a different operating environment
• Changing a system‘s hardware and other support so that it operates in a different
environment (computer, OS, etc.) from its initial implementation.
• Maintenance to add to or modify the system‘s functionality
ad
• Modifying the system to satisfy new requirements for org or business change.
Maintenance costs
• Usually greater than development costs (2* to 100* depending on the application).
www.padeepz.net
www.padeepz.net
Software Engineering
t
Development/maintenance costs
. ne
pz
Maintenance cost factors
ee
• Team stability
• Maintenance costs are reduced if the same staff are invo lved with them for so me
time.
• Contractual responsibility
• The developers of a system may have no contractual responsibility for
maintenance so there is no incentive to design for future change.
ad
• Staff skills
• Maintenance staff are often inexperienced and have limited domain knowledge.
• Program age and structure
• As programs age, their structure is degraded and they b eco me harder to
understand and change.
.p
Maintenance prediction
• Maintenance prediction is concerned with assessing which parts of the system may cause
problems and have high maintenance costs
w
maintainability;
• Maintenance costs depend on the number of changes and costs of change depend
on maintainability.
w
Change prediction
• Predicting the number of changes requires and understanding of the relationships between a
system and its environment.
• Tightly coupled systems require changes whenever the environment is changed.
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
ee
Complexity metrics
• Predictions of maintainability can be made by assessing the complexity of system
components.
• Studies have shown that most maintenance effort is spent on a relat ively small number o f
system components of complex system.
ad
• Reduce maintenance cost – replace complex components with simple alternatives.
• Complexity depends on
• Complexity of control structures;
• Complexity of data structures;
• Object, method (procedure) and module size.
.p
Process metrics
• Process measurements may be used to assess maintainability
• Number of requests for corrective maintenance;
w
Project management
w
Objectives
• To explain the main tasks undertaken by project managers
• To introduce software project management and to describe its distinctive characteristics
• To discuss project planning and the planning process
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Project management is needed because software development is always subject to budget
ne
and schedule constraints that are set by the organisation developing the software.
Project planning
• Probably the most time-consuming project management activity.
• Continuous activity from initial concept through to system delivery. Plans must be
regularly revised as new information becomes available.
.
• Various different t ypes of plan may be developed to support the main software project
pz
plan that is concerned with schedule and budget.
ee Plan Description
Quality plan Describes the quality procedures and standards that
will be used in a project.
Validation plan Describes the approach, resources and schedule used
for system validation.
Configuration management Describes the configuration management procedures
Plan and structures to be used.
ad
Maintenance plan Predicts the maintenance requirements of the system,
maintenance costs and effort required.
Development plan. Describes how the skills and experience of the project
team members will be developed.
.p
www.padeepz.net
www.padeepz.net
Software Engineering
project plan
The project plan sets out:
• resources available to the project
• work breakdown
• schedule for the work.
t
Project plan structure
• Introduction – objective, budget, time
ne
• Project organisation. – roles of people
• Risk analysis. – arising, reduction
• Hardware and software resource requirements.
• Work breakdown. – break project to activity, milestone
• Project schedule. – time, allocation of people
.
• Monitoring and reporting mechanisms.
pz
Milestones and deliverables
• Milestones are the end-point of a process activity.- report presented to management
• Deliverables are project results delivered to customers.
ee - milestones need not be deliverables. May be used by project managers. –
not to customers
• The waterfall process allows for the straight forward definition of progress milestones.
Project scheduling
• Split project into tasks and estimate time and resources required to complete each task.
• Organize tasks concurrently to make optimal
w
use of workforce.
• Minimize task dependencies to avoid delays
caused by one task waiting for another to complete.
• Dependent on project managers intuition and experience.
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
Scheduling problems
• Estimating the difficulty of problems and hence the cost of developing a solution is hard.
• Productivity is not proportional to the number of people working on a task.
• Adding people to a late project makes it later because of communication overheads.
• The unexpected always happens. Always allow contingency in planning.
ee
Bar charts and activity networks
• Graphical notations used to illustrate the project schedule.
• Show project breakdown into tasks. Tasks should not be too small. They should take
about a week or two.
• Activity charts show task dependencies and the critical path.
ad
• Bar charts show schedule against calendar time.
T1 8
T2 15
T3 15 T1 (M1)
T4 10
w
T5 10 T2, T4 (M2)
T6 5 T1, T2 (M3)
T7 20 T1 (M1)
w
T8 25 T4 (M5)
T9 15 T3, T6 (M4)
T10 15 T5, T7 (M7)
T11 7 T9 (M6)
w
www.padeepz.net
www.padeepz.net
Software Engineering
Activity network
1 4/7 /03 15 da y s
15 da y s
M1 T3
8 da ys
T9
T1 5 da y s 4/8/03 2 5/8/03
2 5/7 /03
t
4/7 /03 T6 M4 M6
M3
ne
star t 2 0 da y s 7 da y s
15 da y s
T7 T 11
T2
25/7 /03 11/8/03 5/9/03
10 da y s
.
10 da y s
M2 M7 M8
pz
T4 T5 15 da y s
T10 10da ys
1 8/7 /03
T12
M5
ee 2 5 da y s
T8
19/9/03
Finish
Activity timeline
ad
4/7 11/7 18/7 2 5 /7 1/8 8/8 1 5 /8 22/8 2 9/8 5/9 12/9 1 9/9
Sta r t
T4
T1
.p
T2
M1
T7
T3
M5
w
T8
M3
M2
T6
w
T5
M4
T9
M7
T10
w
M6
T11
M8
T12
Finish
www.padeepz.net
www.padeepz.net
Software Engineering
Staff allocation
4/7 1 1/7 18/7 2 5/7 1/8 8/8 15/8 2 2/8 2 9/8 5/9 1 2/9 19/9
Fred T4
T8 T11
t
T12
ne
Ja ne T1
T3
T9
A nne T2
T6 T10
.
Jim T7
pz
Ma ry T5
Risk management
• Risk management - identifying risks and drawing up plans to minimise their effect on a
ee
project.
• A risk is a probability that some adverse circumstance will occur
• Project risks : affect schedule or resources. eg: loss of experienced designer.
• Product risks: affect the quality or performance of the software being developed.
eg: failure of purchased component.
ad
• Business risks : affect organisation developing software. Eg: competitor
introducing new product.
Software risks
Staff turnover Project Experienced staff will leave the project before it
is finished.
Management change Project There will be a change of organisational
management with different priorities.
w
Hardware unavailability Project Hardware that is essential for the project will not
be delivered on schedule.
Requirements change Project and product There will be a larger number of changes to the
requirements than anticipated.
w
Specification delays Project and product Specifications of essential interfaces are not
available on schedule
Size underestimate Project and product The size of the system has been underestimated.
w
CASE tool under- Product CASE tools which support the project do not
performance perform as anticipated
Technology change Business The underlying technology on which the system
is built is superseded by new technology.
Product competition Business A competitive product is marketed before the
system is completed.
www.padeepz.net
www.padeepz.net
Software Engineering
t
• Draw up plans to avoid or minimise the effects of the risk;
ne
• Risk monitoring
• Constantly monitor risks & plans for risk mitigation.
.
pz
ee
Risk identification
• Discovering possible risk
• Technology risks.
ad
• People risks.
• Organisational risks.
• Tool risk.
• Requirements risks.
• Estimation risks.
.p
second as expected.
Software components that should be reused contain defects that limit their
functionality.
w
www.padeepz.net
www.padeepz.net
Software Engineering
Requirements Changes to requirements that require major design rework are proposed.
Customers fail to understand the impact of requirements changes.
Estimation The time required to develop the software is underestimated.
The rate of defect repair is underestimated.
The size of the software is underestimated.
t
Risk analysis
ne
• Make judgement about probability and seriousness of each identified risk.
• Made by experienced project managers
• Probability may be very low(<10%), low(10-25%), moderate(25-50%), high(50-75%) or
very high(>75%). not precise value. Only range.
• Risk effects might be catastrophic, serious, tolerable or insignificant.
.
Risk Probability Effects
pz
Organisational financial problems force Low Catastrophic
reductions in the project budget.
It is impossible to recruit staff with the High Catastrophic
skills required for the project.
Key staff are ill at critical times in the
ee Moderate Serious
project.
Software components that should be reused Moderate Serious
contain defects which limit their
functionality.
Changes to requirements that require major Moderate Serious
design rework are proposed.
ad
The organisation is restructured so that High Serious
different management are responsible for
the project.
The database used in the system cannot Moderate Serious
process as many transactions per second as
.p
expected.
The time required to develop the software High Serious
is underestimated.
CASE tools cannot be integrated. High Tolerable
w
Risk planning
• Consider each identified risk and develop a strategy to manage that risk.
• categories
www.padeepz.net
www.padeepz.net
Software Engineering
• Avoidance strategies
• The probability that the risk will arise is reduced;
• Minimisation strategies
• The impact of the risk on the project will be reduced;
• Contingency plans
• If the risk arises, contingency plans are plans to deal with that risk. eg: financial
t
problems
ne
Risk management strategies
Risk Strategy
Organisational financial Prepare a briefing document for senior management
problems showing how the project is making a very important
contribution to the goals of the business.
.
Recruitment problems Alert customer of potential difficulties and the
pz
possibility of delays, investigate buying-in
components.
Staff illness Reorganise team so that there is more overlap of work
and people therefore understand each other‘s jobs.
Defective components
ee Replace potentially defective components with
bought-in components of known reliability.
Requirements changes Derive traceability information to assess requirements
change impact, maximise information hiding in the
design.
Organisational restructuring Prepare a briefing document for senior management
showing how the project is making a very important
ad
contribution to the goals of the business.
Database performance Investigate the possibility of buying a higher-
performance database.
Underestimated development Investigate buying in components, investigate use of a
time program generator
.p
Risk monitoring
• Assess each identified risks regularly to decide whether or not it is becoming less or more
probable.
w
Risk indicators
www.padeepz.net
www.padeepz.net
Software Engineering
t
. ne
pz
ee
ad
.p
w
w
w
www.padeepz.net