Ch-01 Software Engineering
Ch-01 Software Engineering
1
Introduction
SYLLABUS
Different individuals judge software on different base. This is because they are involved
with the software in different ways. For example, users want the software to perform according
to their requirements. Similarly, developers involved in designing, coding and maintenance of
the software evaluate the software by looking at the internal characteristics of the products,
before delivering it to the user. Software characteristics are classified into six major
components, which are shown in Fig. 1.1.
Functionality refers to the degree of performance of the software against its intended
purpose.
Reliability refers to the ability of software to perform a required function under a given
condition for a specified period.
Usability refers to the degree to which software is easy to use.
Efficiency refers to the ability of software to use system resources in the most effective
and efficient manner.
Maintainability refers to the ease with which a software system can be modified to add
capabilities, improve system performances, or correct errors,
Software Engineering (MU) 1-3 Introduction
Portability refers to the ease with which software developers can transfer software from
one platform to another, without (or with minimum) changes, In simple terms, it refers
to the ability of software to function properly on different hardware and software
platforms without making any changes in it.
In addition to the above-mentioned characteristics, robustness and integrity are also
important. Robustness refers to the extent to which software can continue to operate correctly
despite the introduction of invalid input, while integrity refers to the extent to which
unauthorized access or modification of software or data can be controlled in the computer
system.
1.2 Classification of Software
Software can be applied in countless situations, such as business, education, social
sector, and other fields. The only requirement is a defined set of procedural steps. That is,
software can be engaged in any field which can be described in logical and related steps. All
softwares are designed to suit some specific goals such as data processing, information
sharing, communication, and so on. Software is classified according to the range of potential
applications. These classifications are listed below.
1. System Software :
It is responsible for managing and controlling operations of a computer system. System
software is a group of programs rather than one program responsible for using computer
resources efficiently and effectively. For example, an operating system is system
software which controls the hardware, manages memory and multi-tasking functions,
and acts as an interface between applications programs and the computer.
2. Real-time Software :
This class of software observes, analyzes, and controls real world events as they occur.
Generally, a real-time system guarantees a response to an external event within a
specified period of time. For example, real-time software is used for navigation in which
the computer must react to a steady flow of new information without interruption. Most
of the defence organizations all over the world use real-time software to control their
military hardware.
3. Business Software :
This is widely used in areas where the management and control of financial activities is
of utmost importance. The fundamental component of a business system comprises
payroll, inventory, accounting, and software that permits the user to access relevant data
from the database. These activities are usually performed with the help of specialized
business software that facilitates efficient framework in the business operation and in
management decisions.
Software Engineering (MU) 1-4 Introduction
Managers, who own software development responsibility, are often under strain and
pressure to maintain a software budget, time slippage, improved quality, and many other
considerations. Common management myths are listed in Table 1.1.
In most cases, users tend to believe myths about the software because software
managers and developers do not try to correct the false beliefs. These myths lead to false
expectations and ultimately develop dissatisfaction among the users. Common user myths are
listed in Table 1.2.
Table 1.1 : Management Myths
Myths Realities
The members of an organization Standards are rarely used.
can acquire all the information Developers rarely know about them.
they require from a manual which
Standards are often out-of-date and
contains standards, procedures,
incomplete.
and principles.
State-of-the-art hardware is the Software tools are usually more important
essential ingredient for successful than hardware tools for achieving quality and
software production productivity.
If the project is behind schedule, Adding more manpower to the project, which
increasing the number of is already behind schedule, further delays the
programmers can reduce the time project.
gap. New workers take longer to learn about the
project as compared to those already working
on the project.
Software Engineering (MU) 1-7 Introduction
Myths Realities
If the project is outsourced to a Outsourcing software to a third party does not
third party, the management can help the organization, which is incompetent
relax and let the other firm in managing and controlling the software
develop software for them project internally. The organization invariably
suffers when it outsources the software
project
Myths Realities
Brief requirement stated in the initial Insufficient knowledge about requirements
process is enough to start is the major cause of software failure.
development; detailed requirement
Formal and detailed descriptions of data,
can be added at the later stages.
functionality, design constraints, and
validation criteria are essential.
Communication between user and
developer is vital.
Software is flexible, hence software The impact of change varies according to
requirement; changes can be added the time when it is introduced.
during any phase of the development
Early requests for change can be
process.
accommodated easily and can be much
cheaper.
Changes made during design,
implementation and installation have a
severe impact on cost.
In the early days of software development, programming was viewed as an art, but now
software development has gradually become an engineering discipline. However, developers
still believe in some myths. Some of the common developer myths are listed in Table 1.3.
Software Engineering (MU) 1-8 Introduction
Myths Realities
Software development is considered 50% to 70% of all the efforts are expended
complete when the code is delivered. after the software is delivered to the user.
The success of a software project The success of a project does not depend only
depends on the quality of the product on the quality of programs. Documentation and
produced. software configuration are also essential.
The only deliverable is the working A working program is only one part of a
program(s). software configuration, which includes
requirements and specification documents,
testing information and other developmental
and maintenance information.
Software quality can be assessed only One of the most effective software quality
after the program is executed. assurance mechanisms is the formal technical
review, which can be applied from the
inception of the project.
Software engineering can be viewed as a layered technology (see Fig. 1.3). The various
layers are listed below :
The process layer is an adhesive that enables rational and timely development of
computer software. It defines an outline for a set of key process areas that must be
acclaimed for effective delivery of software engineering technology.
The method layer provides technical knowledge for developing software. This layer
covers a broad array of tasks that include requirements, analysis, design, program
construction, testing, and support phases of the software development.
Software Engineering (MU) 1-9 Introduction
The tools layer provides computerized or semi-computerized support for the process
and method layer. Sometimes tools are integrated in such a way that other tools can use
information created by one tool. This multi-usage is commonly referred to as computer-
aided software engineering. CASE combines software, hardware, and software
engineering database to create software engineering analogous to computer-aided design
(CAD) for hardware. CASE helps in application development including analysis, design,
code generation, and debugging and testing. This is possible by using CASE tools,
which provide automated methods for designing and documenting traditional-structure
programming techniques. For example, the two prominent delivered technologies using
CASE tools are application generators and PC-based workstations that provide graphics-
oriented automation of the development process.
The basic approach of software engineering is to separate the process for developing
software from the developed product (i.e., the software). The premise is that the software
development process (or software process) controls the quality, scalability, consistency, and
productivity.
Design of proper software processes and their control then becomes a key goal of
software engineering research.
The software process must necessarily have components of project management, in
addition to procedures for development. Otherwise, scalability will not be achieved.
To better manage the development process and to achieve consistency, it is essential
that the software development be done in phases.
A development process consists of various phases, each phase ending with a defined
output.
The phases are performed in an order specified by the process model being followed.
Objective of a phased process is to break the problem of developing software into
successfully performing a set of phases, each handling a different concern of software
development to lower the cost.
It allows proper checking for quality and progress at some defined points during the
development (end of phases).
Hence, for managing the complexity, project tracking, and quality, all the
development processes consist of a set of phases. Various process models have been
proposed for developing software. We will discuss some process models in section 2.5.
Software Engineering (MU) 1-11 Introduction
Requirements analysis is done in order to understand the problem the software system
is to solve. The emphasis in requirements analysis is on identifying what is needed from the
system, not how the system will achieve its goals. For complex systems, even determining
what is needed is a difficult task. The goal of the requirements activity is to document the
requirements in a software requirements specification document.
Problem understanding (or analysis) : the aim is to understand the problem and its
context, and the requirements of the new system that is to be developed.
Requirement specification : Once the problem is analyzed and the essentials
understood, the requirements must be specified in the requirement specification
document. A preliminary user manual that describes all the major user interfaces
frequently forms a part of the requirements document. The requirements document must
specify all
o Functional and Performance requirements;
o The formats of inputs and outputs; and
o All design constraints that exist due to political, economic, environmental, and
security reasons.
Starting with what is needed; design takes us toward how to satisfy the needs. The
purpose of the design phase is to plan a solution of the problem specified by the
requirements document. The design activity often results in three separate outputs :
Software Engineering (MU) 1-12 Introduction
Phase 3 : Coding
The goal of the coding phase is to translate the design of the system into code in a
given programming language. Well written code can reduce the testing and maintenance
effort.
Phase 4 : Testing
The goal of testing is to uncover requirement, design, and coding errors in the
programs.
It starts with a test plan that identifies all the testing-related activities that must be
performed and specifies the schedule, allocates the resources, and specifies guidelines for
testing. The test plan specifies conditions that should be tested, different units to be tested,
and the manner in which the modules will be integrated.
Then for different test units, a test case specification document is produced, which
lists all the different test cases, together with the expected outputs.
During the testing of the unit, the specified test cases are executed and the actual result
compared with the expected output.
The final output of the testing phase is the test report and the error report, or a set of
such reports. Each test report contains the set of test cases and the result of executing the
code with these test cases. The error report describes the errors encountered and the action
taken to remove the errors.
Software Process is a set of activities, together with ordering constraints among them,
such that if the activities are performed properly and in accordance with the ordering
constraints, the desired result is produced.
The basic desired result is, as stated earlier, high quality and productivity.
Process that does not scale up or cannot produce good-quality software is not a
suitable process.
Q. If the sequence of activities is provided by the Process, what is the difficulty in following it in a
Project ?
The three basic types of entities that software engineering deals with- processes,
project, and products require different processes.
Many types of activities performed by different people in a software project.
Better to view software process as comprising of many component processes.
Two major processes
o Development : Focuses on development and quality steps needed to engineer the
software.
o Project management : Focuses on planning and controlling the development
process.
Development process is the heart of software process; other processes revolve around it.
These are executed by different people.
o Development activities are performed by programmers, designers, testing
personnels, librarians, writers, etc.
o Project manager executes the project management process;
Software Engineering (MU) 1-15 Introduction
The process should have a small number of steps. Having too many steps results in too
many work products or documents, each requiring V and V (Verification and
Validation), and can be very expensive.
How to perform the activity of the particular step or phase is generally addressed by
methodologies for that activity rather than development process.
The entry criteria of a phase specify the conditions that the input to the phase should
satisfy to initiate the activities of that phase.
The exit criteria specify the conditions that the work product of this phase should
satisfy to terminate the activities of the phase.
The entry and exit criteria specify constraints of when to start and stop an activity. It
should be clear that the entry criteria of a phase should be consistent with the exit criteria
of the previous phase.
The inputs and outputs of a step also need to be clearly specified.
As errors can be introduced in every stage, a stage should end with some verification of
its activities, and these should also be clearly stated.
The specification of a step with its input, output, and entry and exit criteria is shown in
Fig. 1.7. This approach for process specification is called the ETVX (Entry criteria.
Task, Verification, and exit criteria) approach
A step needs to produce some information to aid proper management of the development
process.
Generally, the information flow from a step is in the form of summary reports describing
the amount of resources spent in the phase, schedule information, errors found in the V
and V activities, etc at each defined time intervals in the development process.
It should be clear that entry and exit criteria and the nature of information flow depends
on how the process is implemented in an organization and on the project. Consequently,
process models typically do not specify these. However, they must be specified by an
organization, if it wishes to adopt a process model for software development.
IEEE defines a process model as ‘a framework containing the processes, activities, and
tasks involved in the development, operation, and maintenance of a software product,
spanning the life of the system from the definition of its requirements to the termination of its
use’.
Process model for software engineering is chosen based on :
i) Nature of project and application.
ii) The methods and tools to be used.
iii) Controls and deliverables those are required.
1.9.1 Linear Sequential Model or Classic Life Cycle or Waterfall
.MU - Nov. 05, May 07.
This model represents the software life cycle using processes and products. Each
process transforms a product to produce a new product as output. Then the new product
becomes the input of the next process.
1. Requirements analysis :
It involves gathering information about what the customer needs and defining, in the
clearest possible terms, the problem that the product is expected to solve.
Analysis includes understanding the customer’s business context and constraints, the
functions the product must perform, the performance levels it must adhere to, and the
external systems it must be compatible with.
Techniques used to obtain this understanding include customer interviews, use cases,
and “shopping lists” of software features.
The results of the analysis are typically captured in a formal requirements
specification, which serves as input to the next step.
2. Design :
3. Implementation :
Constructing the product as per the design specification(s) developed in the previous
step.
It is performed by a development team consisting of programmers, interface
designers and other specialists, using tools such as compilers, debuggers, interpreters
and media editors.
The output of this step is one or more product components, built according to a pre-
defined coding standard and debugged, tested and integrated to satisfy the system
architecture requirements.
For projects involving a large team, version control is recommended to track changes
to the code tree and revert to previous snapshots in case of problems.
4. Testing :
In this stage, both individual components and the integrated whole are methodically
verified to ensure that they are error-free and fully meet the requirements outlined in
the first step.
An independent quality assurance team defines “test cases” to evaluate whether the
product fully or partially satisfies the requirements outlined in the first step.
Three types of testing typically take place: unit testing of individual code modules;
system testing of the integrated product; and acceptance testing, formally conducted
by or on behalf of the customer.
Defects, if found, are logged and feedback provided to the implementation team to
enable correction.
This is also the stage at which product documentation, such as a user manual, is
prepared, reviewed and published.
5. Installation :
This step occurs once the product has been tested and certified as fit for use, and
involves preparing the system or product for installation and use at the customer site.
Delivery may take place via the Internet or physical media, and the deliverable is
typically tagged with a formal revision number to facilitate updates at a later date.
Software Engineering (MU) 1-21 Introduction
6. Maintenance :
This step occurs after installation, and involves making modifications to the system
or an individual component to alter attributes or improve performance.
These modifications arise either due to change requests initiated by the customer, or
defects uncovered during live use of the system.
Typically, every change made to the product during the maintenance cycle is
recorded and a new product release (called a “maintenance release” and exhibiting
an updated revision number) is performed to enable the customer to gain the benefit
of the update.
Table 1.4 : Processes and Products of the Waterfall Model
No phase is complete until the documents for the phase are complete and approved by
the Software Quality Assurance group.
Each stage generates documents known as deliverables.
Software Engineering (MU) 1-22 Introduction
i) It leads to “blocking states” in which some project team members must wait for other
members of team to complete dependent task. In fact, time spent on waiting can
exceed the time spent on productive work.
ii) Real projects rarely follow sequential flow that the model process. Since, linear model
can accommodate iteration indirectly; changes can cause confusion as project team
proceeds.
iii) The waterfall model assumes that the requirements of a system can be frozen (i.e.
baseline) before the design begins. This is possible for systems designed to automate an
existing manual system. But for absolutely new system, determining the requirements is
difficult, as the user himself does not know the requirements. Therefore, having
unchanging (or changing only a few) requirements is unrealistic for such project.
iv) The customer must have patience. A working version of programs will not be available
until late in project time span. A major blunder (mistake), if undetected until the
working program is reviewed, can be disastrous.
v) Freezing the requirements usually requires choosing the hardware (since it forms a part
of the requirement specification). A large project might take a few years to complete. If
the hardware is selected early, then due to the speed at which hardware technology is
changing, it is quite likely that the final software will employ a hardware technology
that is on the verge of becoming obsolete. This is clearly not desirable for such
expensive software.
Software Engineering (MU) 1-23 Introduction
vi) It is a document-driven process that requires formal documents at the end of each
phase. This approach tends to make the process documentation-heavy and is not
suitable for many applications, particularly interactive applications, where developing
elaborate documentation of the user interface is not feasible. Also, if the development
is done using fourth-generation languages or modern development tolls, developing
elaborate specifications before implementation is sometimes unnecessary.
vii) It encourages “requirements bloating”. Since all requirements must be specified at the
start and only what is specified will be delivered, it encourages the users and other
stakeholders to add even those features which they think might be needed (which
finally may not get used).
viii) It follows the “big bang” approach the entire software is delivered in one shot at the
end. This entails heavy risks, as the user does not know until the very end what they
are getting. Furthermore, if the project runs out of money in the middle, then there will
be no software. That is, it has the “all or nothing” value proposition.
Conclusion : If requirements are well understood, then this model is most suitable.
Processing prototype : Prototype that covered the maintenance file the foundation and
processes of the transaction.
System prototype : Prototype that took the form of the complete model from software.
i) For prototyping for the purposes of requirement analysis to be feasible, its cost must be
kept low. Consequently, only those features are included in prototype that will have a
valuable return from the user experience. Exception handling, recovery, and
conformance to some standards and formats are typically not included in prototypes.
ii) In prototyping, as the prototype is to be discarded, there is no point in implementing
those part of requirements that are well understood. Hence, the focus of the development
is to include those features that are not properly understood with the focus on quick
development rather than quality.
iii) Because the prototype is to be thrown away, only minimal documentation needs to be
produced during prototyping. For e.g., design document, test plan, and a test case
specification are not needed during the development of prototype.
iv) Reduce testing because testing consumes a major part of development expenditure
during regular software development.
i) Often, customer defines a set of general objectives for software, but does not identify
detailed input, processing, or output requirements,
ii) In other case, the developer may be unsure of efficiency of an algorithm, the adaptability
of an operating system, or the form that human / machine interaction should take,
Software Engineering (MU) 1-26 Introduction
iii) In these and many other situations, a prototyping paradigm (model) may offer the best
approach.
i) From customer side : It is unaware that in rush to get working version of software no
one has been considered overall software quality or long-term maintainability.
ii) From developer side : an inappropriate operating system or programming language
may be used simply because it is available and known; an inefficient algorithm may be
implemented simply to demonstrate capability. After a time, the developer may
become familiar with these choices and forget all the reasons why they were
inappropriate.
iii) Resist pressure to extend a rough prototype into a production product. Quality almost
always suffers as a result.
iv) Prototyping can lead to false expectations. Prototyping often creates a situation
where the customer mistakenly believes that the system is “finished” when in fact it is
not. More specifically, when using the Prototyping Model, the pre-implementation
versions of a system are really nothing more than one-dimensional structures. The
necessary, behind-the-scenes work such as database normalization, documentation,
testing, and reviews for efficiency has not been done. Thus the necessary
underpinnings for the system are not in place.
v) Prototyping can lead to poorly designed systems. Because the primary goal of
Prototyping is rapid development, the design of the system can sometimes suffer
because the system is built in a series of “layers” without a global consideration of the
integration of all other components. While initial software development is often built
to be a “throwaway,” attempting to retroactively produce a solid system design can
sometimes be problematic.
Table 1.5 : Advantages and Disadvantages of Prototyping Model
Advantages Disadvantages
Users can try the system and provide Each iteration builds on the previous iteration and
constructive feedback during further refines the solution. The makes it difficult
development. to reject the initial solution as inappropriate and
start over. Thus, the final solution will be only
incrementally better than the first.
Software Engineering (MU) 1-27 Introduction
Advantages Disadvantages
Prototyping enables early detection of System backup and recovery, performance and
errors and omissions. security issues can be overlooked in the haste to
develop a prototype.
Key point : The incremental model delivers software in small but usable pieces called
“increments”. In general, each increment builds on those that have already been delivered.
Advice : When you encounter difficult deadline that cannot be changed, the
incremental model is a good paradigm to consider.
Fig. 1.16 : An Iterative Development of project from the project manager’s perspective
Enable team members to actively and aggressively attack project risks and challenges in
whatever they judge to be the most appropriate manner.
Managing iterations by setting clear objectives and objectively measuring results (and
not dictating activities) ensures that they are free to find the best way to deliver results.
From a customer and business team perspective,
The introduction of clear, meaningful objectives, combined with the ability to review
demonstrable results, allows those who will ultimately use the new software to take an
active role in the project and share its ownership with the development team.
Iteration has a profound and lasting impact upon all of the business people involved in
the project and fundamentally changes the way that they specify, pay for, and realize the
business benefits of software solutions.
From a management team perspective,
Each project is decomposed into a series of smaller projects, called iterations, each of
which builds on the results of the previous one to incrementally achieve overall project
goals.
Software Engineering (MU) 1-31 Introduction
This segmentation of the project introduces regular, measurable milestones that keep the
project on track while empowering the development team to create innovative and
effective solutions, maximizing the project’s probability of success.
Why iterations ?
Purpose :
Each iteration tackles new requirements and incrementally extends the system.
When discussing iterative and incremental development, the terms iteration and
increment are often used freely and interchangeably. They are not, however, synonyms.
Iteration refers to the cyclic nature of a process in which activities are repeated in a
structured manner. And increment refers to the quantifiable outcome of each iteration.
When you work incrementally you are adding piece by piece but expect that each piece
if fully finished.
When you work iteratively you create rough product or product piece in one iteration,
then review it and improve it in next iteration and so on until its finished.
Business modeling
The information among business function is modeled in a way that answers following
questions :
i) What information drives the business process ?
ii) What information is generated ?
iii) What information is generated ?
iv) Who generate it ?
v) Where the information does goes ?
vi) Who process it ?
Data modeling
Process modeling
i) The data objects are transformed to implement a business function to achieve the
information flow necessary.
ii) Processing descriptions are created for adding, modifying, deleting, or retrieving a
data object.
Software Engineering (MU) 1-34 Introduction
Application generation
i) RAD assumes the use of fourth generation technique.
ii) RAD process works to reuse existing program components (when possible) or
create reusable components (when necessary).
iii) In all cases automated tools are used to facilitate construction of software.
Testing and Turnover
i) Since, RAD emphasizes reuse; many of program components have already been
tested.
ii) This reduces overall testing time.
Software Engineering (MU) 1-35 Introduction
iii) However, new components must be tested, and all interfaces must be fully
exercised.
Drawback
1. For large but scalable projects, RAD requires sufficient human resources to create
the right number of RAD teams.
2. RAD requires developers and customers who are committed to rapid fire activities
necessary to get a system complete in much abbreviated time frame. If
commitment is lacking from either side, RAD project will fail.
3. Not all types of applications are appropriate for RAD. If a system can not be
properly modularized, building the components necessary for RAD will
problematic. If high performance is an issue and performance is to be achieved
through tuning the interfaces to system component, the RAD approach may not
work.
4. RAD is not appropriate when technical risks are high. This occurs when a new
application makes heavy use of new technology or when new software requires
high degree of interoperability with existing computer program.
Advantages Disadvantages
For appropriate projects, this approach puts This intense SDLC can burn out systems
an application into production sooner than developers and other project participants.
any other approach.
Documentation is produced as a byproduct This approach requires systems analysts
of completing project tasks. and users to be skilled in RAD system
development tools and RAD techniques.
RAD forces teamwork and lots of RAD requires a larger percentage of
interaction between users and stakeholders. stakeholders’ and users’ time than other
approaches.
ii) CBD model incorporates many of the characteristics of spiral model. However,
component based development model composes application from pre-packaged
software components called classes.
iii) The engineering activity begins with identification of candidate classes. [This is
accomplished by examining the data to be manipulated by application and algorithm
that will be applied to accomplish the manipulation.]
iv) Corresponding data and algorithm are packaged into a class. Classes created in past SE
project are stored in a Class library or Repository.
v) Once candidate classes are identified, class library is searched to determine if they
already exists. If they do, they are extracted from library and reused. If no, it is
engineered using object oriented methods.
vi) The first iteration of application to be built is then composed using classes extracted
from library.
vii) Process flow then returns to spiral model and ultimately re-enter the component
assembly iteration during subsequent passes through engineering activity.
Advantages of OO model
i) Model leads to software reuse. Reusability provides software engineer with a
number of measurable benefits.
Software Engineering (MU) 1-37 Introduction
ii) Based on study of reusability, QSM Associates, Inc reported component assembly
leads to
o 70% (↓) reduction in development cycle time.
o 84 %(↑) reduction in project class.
o Production index of 26.2 %(↑) compared to industry norm of 16.9%.
Example
Unified software development process is representation of a number of component
based development models, using UML.
Demerit of OO model
1.9.7 Spiral Model .MU - June 05, Nov. 06, May 07, May 08, Dec. 08, Dec. 09.
i) Model that couples the iterative nature of prototyping with the controlled and
systematic aspects of linear sequential model.
ii) Software is developed in a series of incremental releases.
Software Engineering (MU) 1-38 Introduction
iii) During early iterations, the incremental release might be a paper model or prototype.
During later iterations, increasingly more complete versions of engineered systems are
produced.
iv) A spiral model is divided into a number of framework activities also called as task
regions.
a) Customer communication
Task required to define resources, timelines and other project related information.
c) Risk analysis
Task required to assess (to estimate) both technical and management risk.
d) Engineering
Task required to construct, test, install, and provide user support (e.g. documentation
and training).
f) Customer evaluation
Advantages
Drawbacks
The concurrent process model defines a series of events that will trigger transitions
from state to state for each of the software engineering activities.
For example, during early stages of design, an inconsistency in the analysis model is
uncovered. This generates the event analysis model correction which will trigger the
analysis activity from the done state into the awaiting changes state.
The concurrent development model is often more appropriate for system engineering
projects where different engineering teams are involved.
The Unified Process (UP) (also called Rational Unified Process or RUP because they
are nearly identical) is currently one of the most famous development processes among with
the Agile methodology (which are more methodologies then a development process). It uses
an iterative approach and it is based on programming Best practices.
Software Engineering (MU) 1-41 Introduction
All the Agile processes are more adapted for small or average teams projects, but they
can be grouped with RUP (which gives AUP). RUP remains by far more used and more
adapted for the very large projects, however it is possible to use it even in a one-person
team. I nevertheless invite you to rather use AUP (Agile Unified Process) if you’re alone.
Overview of the UP
Fig. 1.21 : The Iterative Model graph shows how the process is structured along two dimensions
Two Dimensions
The process can be described in two dimensions, or along two axes as shown in
Fig. 1.21.
The horizontal axis represents time and shows the dynamic aspect of the process as it is
enacted, and it is expressed in terms of cycles, phases, iterations, and milestones.
The vertical axis represents the static aspect of the process: how it is described in terms
of activities, artifacts, workers and workflows.
Software Engineering (MU) 1-42 Introduction
Elaboration phase
Construction phase
Transition phase
Each phase is concluded with a well-defined milestone a point in time at which certain
critical decisions must be made and therefore key goals must have been achieved. Each
phase has a specific purpose.
1. Inception Phase
During the inception phase, you establish the business case for the system and delimit
the project scope. To accomplish this you must identify all external entities with
which the system will interact (actors) and define the nature of this interaction at a
high-level. This involves identifying all use cases and describing a few significant
ones. The business case includes success criteria, risk assessment, and estimate of the
resources needed, and a phase plan showing dates of major milestones.
The outcome of the inception phase is :
A vision document: a general vision of the core project’s requirements, key features,
and main constraints.
An initial use-case model (10% -20%) complete).
An initial project glossary (may optionally be partially expressed as a domain
model).
An initial business case, which includes business context, success criteria (revenue
projection, market recognition, and so on) and financial forecast.
An initial risk assessment.
A project plan, showing phases and iterations.
A business model, if necessary.
One or several prototypes.
Software Engineering (MU) 1-43 Introduction
2. Elaboration Phase
The purpose of the elaboration phase is to analyze the problem domain, establish a
sound architectural foundation, develop the project plan, and eliminate the highest
risk elements of the project.
Architectural decisions have to be made with an understanding of the whole system :
its scope, major functionality and non-functional requirements such as performance
requirements.
The elaboration phase activities ensure that the architecture, requirements and plans
are stable enough, and the risks are sufficiently mitigated, so you can predictably
determine the cost and schedule for the completion of the development.
An executable architecture prototype is built in one or more iterations, depending on
the scope, size, risk, and novelty of the project.
The outcome of the elaboration phase is :
A use-case model (at least 80% complete) all use cases and actors have been
identified and most use case descriptions have been developed.
Supplementary requirements capturing the non functional requirements and any
requirements that are not associated with a specific use case.
A Software Architecture Description.
An executable architectural prototype.
A revised risk list and a revised business case.
A development plan for the overall project, including the coarse-grained project plan,
showing iterations” and evaluation criteria for each iteration.
An updated development case specifying the process to be used.
A preliminary user manual (optional).
Software Engineering (MU) 1-44 Introduction
At the end of the elaboration phase is the second important project milestone, the
Lifecycle Architecture Milestone. At this point, you examine the detailed system objectives
and scope, the choice of architecture, and the resolution of the major risks.
The project may be aborted or considerably re-thought if it fails to pass this milestone.
3. Construction Phase
All remaining components and application features are developed and integrated into
the product, and all features are thoroughly tested.
The outcome of the construction phase is a product ready to put in hands of its end-
users. At minimum, it consists of :
o The software product integrated on the adequate platforms.
o The user manuals.
o A description of the current release.
At the end of the construction phase is the third major project milestone (Initial
Operational Capability Milestone). At this point, you decide if the software, the sites,
and the users are ready to go operational, without exposing the project to high risks.
This release is often called a “beta” release.
Transition may have to be postponed by one release if the project fails to reach this
milestone.
4. Transition Phase
The purpose of the transition phase is to transition the software product to the user
community. Once the product has been given to the end user, issues usually arise that
require you to develop new releases, correct some problems, or finish the features
that were postponed.
The transition phase is entered when a baseline is mature enough to be deployed in
the end-user domain.
Software Engineering (MU) 1-45 Introduction
This typically requires that some usable subset of the system has been completed to
an acceptable level of quality and that user documentation is available so that the
transition to the user will provide positive results for all parties.
This phase includes several iterations, including beta releases, general availability
releases, as well as bug-fix and enhancement releases.
Considerable effort is expended in developing user-oriented documentation, training
users, supporting users in their initial product use, and reacting to user feedback.
This includes :
o “Beta testing” to validate the new system against user expectations.
o Parallel operation with a legacy system that it is replacing.
o Conversion of operational databases.
o Training of users and maintainers.
o Roll-out the product to the marketing, distribution, and sales teams.
The primary objectives of the transition phase include :
Achieving user self-supportability.
Achieving stakeholder concurrence that deployment baselines are complete and
consistent with the evaluation criteria of the vision.
Achieving final product baseline as rapidly and cost effectively as practical.
At the end of the transition phase is the fourth important project milestone, the Product
Release Milestone.
At this point, you decide if the objectives were met, and if you should start another
development cycle. In some cases, this milestone may coincide with the end of the
inception phase for the next cycle.
Iterations
Each phase in the Rational Unified Process can be further broken down into iterations.
An iteration is a complete development loop resulting in a release (internal or external)
of an executable product, a subset of the final product under development, which grows
incrementally from iteration to iteration to become the final system.
Software Engineering (MU) 1-46 Introduction
Compared to the traditional waterfall process, the iterative process has the following
advantages :
Risks are mitigated earlier.
Change is more manageable.
Higher level of reuse.
The project team can learn along the way.
Better overall quality.
A process describes who is doing what, how, and when. The Rational Unified Process
is represented using four primary modeling elements :
Workers, the ‘who’.
Activities, the ‘how’.
Artifacts, the ‘what’.
Workflows, the ‘when’.
Worker
In the Unified Process the worker is more the role defining how he individuals should
carry out the work.
Activity
An activity of a specific worker is a unit of work that an individual in that role may be
asked to perform.
The activity has a clear purpose, usually expressed in terms of creating or updating some
artifacts, such as a model, a class, a plan.
Every activity is assigned to a specific worker.
The granularity of an activity is generally a few hours o a few days, it usually involves
one worker, and affects one or only a small number of artifacts.
An activity should e usable as an element of planning and progress; if it is too small, it
will be neglected, and if it is too large, progress would have to be expressed in terms of
an activity’s parts.
Example of activities :
Plan an iteration, for the Worker : Project Manager.
Find use cases and actors, for the Worker : System Analyst.
Review the design, for the Worker : Design Reviewer.
Execute performance test, for the Worker : Performance Tester.
Artifact
Artifacts are used as input by workers to perform an activity, and are the result or
output of such activities.
Various Artifacts :
Workflows
Core workflows
There are nine core process workflows in the Rational Unified Process, which
represent a partitioning of all workers and activities into logical groupings.
The core process workflows are divided into six core “engineering” workflows :
1. Business modeling workflow : In Business Modeling we document business
processes using so called business use cases. This assures a common understanding
among all stakeholders of what business process needs to be supported in the
organization.
2. Requirements workflow : The goal of the Requirements workflow is to describe what
the system should do and allows the developers and the customer to agree on that
description.
3. Analysis and Design workflow : The goal of the Analysis and Design workflow is to
show how the system will be realized in the implementation phase.
4. Implementation workflow : The purpose of implementation is :
To define the organization of the code, in terms of implementation subsystems
organized in layers.
To implement classes and objects in terms of components (source files, binaries,
executables, and others).
To test the developed components as units.
To integrate the results produced by individual implementers (or teams), into an
executable system.
5. Test workflow - The purposes of testing are :
Advantages of RUP
It lets you take into account changing requirements which despite the best efforts of all
project managers are still a reality on just about every project.
Integration is not one “big bang” at the end; instead, elements are integrated
progressively.
Risks are usually discovered or addressed during integration. With the iterative
approach, you can mitigate risks earlier.
Iterative development provides management with a means of making tactical changes to
the product. It allows you to release a product early with reduced functionality to counter
a move by a competitor, or to adopt another vendor for a given technology.
Iteration facilitates reuse; it is easier to identify common parts as they are partially
designed or implemented than to recognize them during planning.
When you can correct errors over several iterations, the result is a more robust
architecture. Performance bottlenecks are discovered at a time when they can still be
addressed, instead of creating panic on the eve of delivery.
Software Engineering (MU) 1-51 Introduction
Developers can learn along the way, and their various abilities and specialties are more
fully employed during the entire lifecycle. Testers start testing early, technical writers
begin writing early, and so on.
The development process itself can be improved and refined along the way. The
assessment at the end of an iteration not only looks at the status of the project from a
product or schedule perspective, but also analyzes what should be changed in the
organization and in the process to make it perform better in the next iteration.
This model ensures that deliveries are made with a much greater frequency than once
every time box, thereby substantially reducing the cycle time for each delivery.
How execution of a project proceeds when using the waterfall, iterative, or the
timeboxing process model proceeds is shown in Fig. 1.25.
In the timeboxing process model, the basic unit of development is a time box, which
is of fixed duration. Within this time box all activities that need to be performed to
successfully release the next version are executed. Since the duration is fixed, a key
factor in selecting the requirements or features to be built in a time box is what can
be “fit” into the time box.
Software Engineering (MU) 1-52 Introduction
Each time box is divided into a sequence of stages, like in the waterfall model. Each
stage performs some clearly defined task of the iteration and produces a clearly
defined output. The output from one stage is the only input from this stage to the
next stage. Furthermore, the model requires that the duration of each stage, that is,
the time it takes to complete the task of that stage, is approximately the same.
There is a dedicated team for each stage. That is, the team for a stage performs only
tasks of that stage – tasks for other stages are performed by their respective teams.
This is quite different from many other models where the implicit assumption is that
the same team (by and large) performs all the different tasks of the project or the
iteration.
As pipelining is to be employed, the stages must be carefully chosen. Each stage
performs some logical activity which may be communication intensive – that is, the
team performing the task of that stage needs to communicate and meet regularly.
However, the stage should be such that its output is all that is needed from this stage
by the team performing the task of the next stage. In other words, the output should
be such that it can be passed to the team for next stage, and the team needs to
communicate minimally with the previous stage team for performing their task. Note
that it does not mean that the team for a stage cannot seek clarifications with teams
of earlier stages – all it means is that the communication needs between teams of
different stages are so low that their communication has no significant effect on the
work of any of the teams.
2. Pipelined Execution
In general, let us consider a time box with duration T and consisting of n stages – S1,
S2, …, Sn.
Let the size of the team dedicated for stage Si be Ri, representing the number of
resources assigned to this stage.
The team of each stage has T/n time available to finish their task for a time box, that
is, the duration of each stage is T/n.
When the team of a stage i completes the tasks for that stage for a time box k, it then
passes the output of the time box to the team executing the stage i +1, and then starts
executing its stage for the next time box k +1.
Using the output given by the team for Si, the team for Si+1 starts its activity for this
time box.
Software Engineering (MU) 1-53 Introduction
By the time the first time box is nearing completion, there are n-1 different time
boxes in different stages of execution. And though the first output comes after time
T, each subsequent delivery happens after T/n time interval, delivering software that
has been developed in time T.
Example, consider a time box consisting of three stages: requirement specification,
build, and deployment. When the requirement team has finished requirements for
timebox-1, the requirements are given to the build-team for building the software.
Meanwhile, the requirement team goes on and starts preparing the requirements for
timebox-2. When the build for the timebox-1 is completed, the code is handed over to
the deployment team, and the build team moves on to build code for requirements
for timebox-2, and the requirements team moves on to doing requirements for
timebox-3. This pipelined execution of the timeboxing process is shown in Fig. 1.26.
With a three-stage time box, at most three iterations can be concurrently in progress.
If the time box is of size T days, then the first software delivery will occur after T
days. The subsequent deliveries, however, will take place after every T/3 days.
If the size of the team executing the stage Si is Ri , then the effort spent in the stage
Si is E (Si) = Ri * T/n.
Note : The model only requires that the duration of the stages be approximately the same, which is
T/n in this case. It does not imply that the amount of effort spent in a stage is same. The effort
consumed in a stage Si also depends on Ri, the size of the team for that stage. And there is no
constraint from the model that the different Ri’s should be the same.
delivered every 9 weeks. With timeboxing, the slowest stage will determine
the speed of execution, and hence the deliveries will be done every
4 weeks. This delivery time is less than half the delivery time of serial
iterations.
Impact : It will result in “slack time” for the teams for the first and third
stage, resulting in under utilization of resources. So, the resource
utilization, which is 100% when all the stages are of equal duration, will
reduce resulting in underutilization of resources.
Solution for this Problem : This wastage can easily be reduced by reducing
the size of the teams for the slower stages to a level that they take the same
time as the slowest stage. Note that elongating the cycle time by reducing
manpower is generally possible (even though the reverse is not possible.)
2) An exceptional condition arises during the execution of a stage of sometime
box, due to which the stage is not able to finish in its allotted time.
The net effect of the exception is that it elongates that stage by ΔT.
Clearly, if such an exception occurs, the execution of the later stages will
be delayed resulting in the output being delivered late by ΔT. Similarly, due
to this delay, the output of earlier stages in later time boxes cannot be
consumed in time, resulting in the teams of these stages “waiting” for their
output to be consumed.
The net result of this is that, one delivery gets delayed by ΔT, with a
corresponding slack time for each team for one time box. After that, all
future deliveries will come after every T/n time units (for a n-stage time
box of T duration.)
5. Scope of Applicability
Timeboxing is well suited for projects that require a large number of features to be
developed in a short time around a stable architecture using stable technologies.
Another example of projects that satisfy this are many web-site development
projects – generally some architecture is fixed early, and then the set of features to
be added iteratively is decided depending on what the competition is providing and
the perceived needs of the customer (which change with time).
Software Engineering (MU) 1-56 Introduction
The team size and composition is another critical parameter for a project using
timeboxing. Clearly the overall project team should be large enough that it can be
divided into sub-teams that are dedicated for performing the tasks of the different
stages. However, to keep the management complexity under control, it is desirable
that the team be not so large that coordination between different sub-teams and
different time boxes become too hard to manage.
The model is not suitable for projects :
o Where it is difficult to partition the overall development into multiple
iterations of approximately equal duration.
o Where different iterations may require different stages,
o Whose features are such that there is no flexibility to combine them into
meaningful deliveries. Such a situation may arise, for example, if only a
few features are to be built, one (or a couple) in each iteration, each tied to
some business need. In this case, as there is only one feature to be built in
iteration, that feature will determine the duration of the iteration.
6. Handling Changes
The change request comes as a new requirement in a future time box. Since the time
boxes are likely to be relatively short, deferring the requirement change request to
the next time box does not cause inordinate delay.
The same can be done for the defects that are found after deployment. Such defects
are viewed as change requests. If the defect is such that it is hurting the business of
the organization and whose repair cannot be delayed, then it is fixed as soon as
possible. Otherwise, its fixing is treated like a change request and is fixed in the next
possible iteration.
Each process model is suitable for some context, and the main reason for studying
different models is to develop the ability to choose the proper model for a given project.
Using a model as the basis, the actual process for the project can be decided, which
hopefully is the optimal process for the project. To help select a model, we summarize the
strengths and weaknesses of the different models, along with the types of projects for which
they are suitable, in Table 1.6.
Software Engineering (MU) 1-57 Introduction
What is a methodology ?
Object modelling.
Compliments object-oriented programming.
Can be repeatable, measurable, and automated.
Object perspective of the problem domain.
Describes the real world by its objects, the attributes, services, and relationships.
Data and functions are encapsulated together.
Software Engineering (MU) 1-61 Introduction
Abstraction
Encapsulation (Information Hiding)
Inheritance
Message Communication
Associations
Polymorphism
Common Methods of Organization
Reuse
Project type and associated risks : One of the key features of selecting a process
model is to understand the project in terms of size, complexity, funds available, and so
on. In addition, the risks which are associated with the project should also be considered.
Note that only a few process models emphasize risk assessment.
Requirements of the project : The most essential feature of any process model is to
understand the requirement of the project. In case the requirements are not clearly
defined by the user or poorly understood by the developer, the developed software leads
to ineffective systems. Thus, the requirements of the software should be clearly
understood before selecting any process models.
Users : Software is developed for the user. Hence, the users should be consulted while
selecting the process model. The comprehensibility of the project increases if users are
Software Engineering (MU) 1-62 Introduction
involved in selecting the process model. It is possible that a user is aware of the
requirements or has a rough idea of the requirements. It is also possible that a user wants
the project to be developed in a sequential manner or an incremental manner (where a
part is delivered to the user for use).
Table 1.8 : Selections on the basis of project type and associated risks
1) Project Planning,
1) Project Planning :
A software plan is usually produced before the development activity begins and is
updated as development proceeds and data about progress of the project becomes
available.
The major activities are :
o Cost estimation,
o Schedule and milestone determination,
o Project staffing,
o Quality control plans, and
o Controlling and monitoring plans.
As cost, schedule, and quality are the major driving forces, most of the activity of
this phase revolves around monitoring factors that affect these.
Monitoring potential risks for the project
Based on the monitoring information if objectives are not met, necessary control
actions are taken on the development activities.
The development process provides the information to the management process.
However, interpretation of the information is part of monitoring and control.
As the Fig. 1.28 shows, during the development, from the various phases of the
development process, quantitative information flows to the monitoring and control phase of
the management process, which uses the information to exert control on the development
process.
A brief description of each step of Project Management Process follows :
1. Assemble Team
With the project team in place, the overall project purpose will be verified and detailed
project objectives developed. A phase-exit review will be conducted to ensure that the
project is ready to move into the next phase, which is planning.
Deliverables : project charter, phase-exit review checklist.
3. Define Project Scope
Once tasks of an appropriate level have been identified in the WBS, they will be
organised by the project team into logical network diagrams, with estimated durations.
This allows the project manager to predict when activities will be complete, assess the
feasibility of target dates, and identify the critical path for the project.
Deliverables : Initial work plan.
5. Add Resources, Costs, Risks, etc.
Certain project resources may be defined as critical resources. In particular, the project
manager may suspect that key project staff may be faced with too much work. If so,
estimated resource usage information can be added to the project plan to allow
resource forecasting. Cost is obviously also critically important, and expenditures can
be added to the plan to create estimated cash-flow requirements. Risk management can
also be utilised on projects to provide a framework to better manage events that occur
beyond the control of the project team.
Deliverables : Resource availability and commitment profiles, risk identification and
control strategies, cash-flow forecasts.
6. Obtain Stakeholder Buy-in
To ensure the project is implemented as smoothly as possible, with the support of the
involved parties, it will be necessary to review the initial plans with all the major
project stakeholders and to solicit buy-in from each one. A phase-exit review will be
conducted to ensure that the project is ready to move into the next phase, which is
control.
Deliverables : Approved final plan, phase-exit review checklist.
7. Publish the Plan
Once the plans are agreed to, they must be effectively communicated to all
stakeholders. This can be done in hard copy or via electronic media, depending on the
resources available. On most projects, a communications plan will be developed, and
distribution of the plans will follow the guidelines laid out in the communications
plan.
Deliverables : Plan published to all stakeholders.
Software Engineering (MU) 1-67 Introduction
On a regular basis, the project manager will collect progress information that has been
reported by the project team. This will allow the compilation of progress reports, such
as :
Activities completed within the past two weeks.
Activities forecast for the next two weeks with a focus on activities on the critical
path.
Funds expended vs. fund expenditure forecast.
Prioritised issues report.
Metrics can also be developed to measure project progress in other ways, such as
earned value, or activity float statistics. If the project manager reviews the progress
data and concludes that the project is complete, a phase-exit review will be completed
to confirm that all the objectives have been met before moving into the final closure
phase.
Deliverables : Set of progress reports, set of exception reports, metrics report, (phase-
exit review checklist).
9. Analyse Current Status
By analysing the progress information received, the project manager will be able to
augment the above reports with information about which areas of the project are of
concern and where problems are likely to occur in the future. This allows managers to
focus on the important/critical areas of the project.
Deliverables : Project evaluation report(s).
10. Adjust the Plan, and Manage Project Change
Based on the analysis, and with the support of the project team, the project manager
will make plan adjustments to help reduce risks, accommodate scope changes, or to
compensate for activities that have not occurred on schedule. Once this has happened,
the plan will re-publish and the cycle repeated until the project is complete.
Deliverables : Change request forms, updated plan.
Software Engineering (MU) 1-68 Introduction
When the objectives of the project have been achieved, the project manager will close
down the project. This will involve some financial closure tasks, as well as archiving
of the project materials. A lessons-learned document will be developed to benefit
future projects, and if possible a project team celebration will be held.
Deliverables : Final project report including lessons learned.
1.13.1 Introduction
You hand over documents at each stage the next team then takes care of your
developing the system further.
Case tool is used to specify the design of the software but not for generating the
software.
Agile development approach works well for small to medium sized teams
Agile development methods do not scale. Due to the number of iterations involved it
would be difficult to understand the current project status.
This approach requires highly motivated and skilled individuals which would not always
be existent.
All software development methods, including the Agile ones, have some sort of
underlying project life cycle.
Some of the Agile methods don’t make a big deal of it, and others do. Some have such
abstract life cycles that it is actually hard to know what activities to schedule.
The key elements are a Project Initiation and Project Plan followed by one or more
Releases made up on one or more timeboxes (although usually 3).
There are also more or less optional phases to Elaborate Requirements and for the
Architecture - often done in parallel with the Project Plan.
Perhaps not so strangely, this life cycle looks pretty conventional.
a) Project initiation
Set up and justify the project. Determine initial high level requirements.
b) Project plan
Plan out the project, everything after Project Initiation, including whether you’re
going to have the optional phases.
If you’re using the optional phase to Elaborate the Requirements you’re likely to
have a draft plan after the Project Initiation and then a more complete plan after the
Requirements are complete.
Software Engineering (MU) 1-71 Introduction
DSDM makes this explicit and mandatory with its “Outline Plan” (created in Project
Initiation) and “Development Plan” (created after the Requirements have been
fleshed out).
XP has something similar in the “Big Plan” done to justify a project, which evolves
into a Release plan.
c) Elaborate requirements (optional)
Very high level requirements are gathered during Project Initiation. These can
optionally be expanded during an phase to Elaborate Requirements. Even is the
requirements are “elaborated” they are still high level.
There is no separate Elaboration phase in XP and Scrum, although the Customer is
expected to elaborate as much as necessary at the start of an XP Iteration (Timebox).
Crystal Orange and DSDM have a separate Elaboration phase. Facilitated
workshop(s) to identify “High level requirements” which are then collated into a
document (Requirements Document / Business Area Definition (BAD)) that contains
use Cases and non-functional requirements.
d) Architecture (optional)
The Agile approach is generally design for today and refactor tomorrow (at least in
XP). An Architecture Phase is optional in XP and Crystal Orange.
However, In DSDM An architecture phase is compulsory and results in a “System
Architecture Document”. The SAD is created in parallel to the BAD, i.e.
requirements elaboration and architecture occur at the same time.
e) Release
A Release is a piece of development where the customer gets some new software.
Releases can be from 2 weeks to 6 months, but are usually 3 months long.
Release have one or more timeboxes. Unlike other methods, in DSDM one Release
is the norm, i.e. there is only one release to the customer in the entire project.
f) Time box
A Timebox is 1 – 6 weeks long, but usually 3 – 4 weeks. The most important thing
about a timebox is that the delivery date is fixed.
Software Engineering (MU) 1-72 Introduction
To characterize
To evaluate
To predict
To improve
Characterize to gain understanding of processes, products, resources, and
environments, and to establish baselines for comparisons with future assessments.
Evaluate to determine status with respect to plans. Measures are the sensors that let us
know when our projects and processes are drifting off track, so that we can bring them back
Software Engineering (MU) 1-74 Introduction
under control. We also evaluate to assess achievement of quality goals and to assess the
impacts of technology and process improvements on products and processes.
Predict so that we can plan. Measuring for prediction involves gaining understandings
of relationships among processes and products and building models of these relationships, so
that the values we observe for some attributes can be used to predict others. We do this
because we want to establish achievable goals for cost, schedule, and quality - so that
appropriate resources can be applied. Predictive measures are also the basis for extrapolating
trends, so estimates for cost, time, and quality can be updated based on current evidence.
Projections and estimates based on historical data also help us analyze risks and make
design/cost trade-offs.
Measure to improve when we gather quantitative information to help us identify
roadblocks, root causes, inefficiencies, and other opportunities for improving product quality
and process performance.
The IEEE Standard Glossary of Software Engineering Terms [IEE93] defines metric as
“a quantitative measure of the degree to which a system, component, or process
possesses a given attribute.”
Examples include defects reported for major software functions (that have been
developed by a number of practitioners), errors found during formal technical reviews,
and lines of code or function points per module and function.
These data are reviewed by the team to uncover indicators that can improve team
performance.
Public metrics
Public metrics generally assimilate information that originally was private to individuals
and teams.
Project level defect rates (absolutely not attributed to an individual), effort, calendar
times, and related data are collected and evaluated in an attempt to uncover indicators
that can improve organizational process performance.
The first application of project metrics on most software projects occurs during
estimation.
Metrics collected from past projects are used as a basis from which effort and time
estimates are made for current software work.
As a project proceeds, measures of effort and calendar time expended are compared to
original estimates (and the project schedule).
The project manager uses these data to monitor and control progress.
Software Engineering (MU) 1-76 Introduction
1. These metrics are used to minimize the development schedule by making the
adjustments necessary to avoid delays and mitigate potential problems and risks.
2. Project metrics are used to assess product quality on an ongoing basis and, when
necessary, modify the technical approach to improve quality.
As quality improves, defects are minimized, and as the defect count goes down, the
amount of rework required during the project is also reduced. This leads to a reduction in
overall project cost.
Project metrics
Direct measures of the software engineering process include cost and effort applied.
Direct measures of the product include lines of code (LOC) produced, execution speed,
memory size, and defects reported over some set period of time. Indirect measures of
the product include functionality, quality, complexity, efficiency, reliability,
maintainability, and many other “– abilities”.
Software Engineering (MU) 1-77 Introduction
The cost and effort required to build software, the number of lines of code produced, and
other direct measures are relatively easy to collect, as long as specific conventions for
measurement are established in advance.
However, the quality and functionality of software or its efficiency or maintainability are
more difficult to assess and can be measured only indirectly.
Indirect measures
Functionality
Quality
Complexity
Efficiency
Reliability
Maintainability
Direct measures
$ per LOC.
Page of documentation per KLOC.
In addition, other interesting metrics can be computed :
Errors per person-month.
LOC per person-month.
$ Per page of documentation.
Size-oriented metrics are not universally accepted as the best way to measure the
process of software development.
Hardware Resources
Computer time,
Terminal time,
Memory required for the project, etc.
Software Resources
Software tools,
Compilers needed during development.
The bulk of the cost of software development is due to the human resources needed,
and therefore most cost estimation procedures focus on estimating effort in terms of person-
months (PM). By properly including the “overheads” (i.e., the cost of hardware, software,
office space, etc.) in the cost of a person-month, effort estimates can be converted into cost.
Estimates can be based on subjective opinion of some person or determined through
the use of models.
Boehm (1981) discusses seven techniques of software cost estimation :
(1) Algorithmic cost modeling
A model is developed using historical cost information which relates some software
metric (usually its size) to the project cost. An estimate is made of that metric and the
model predicts the effort required.
(2) Expert judgement
One or more experts on the software development techniques to be used and on the
application domain are consulted. They each estimate the project cost and the final
cost estimate is arrived at by consensus.
(3) Estimation by analogy
This technique is applicable when other projects in the same application domain have
been completed. The cost of a new project is estimated by analogy with these
completed projects.
(4) Parkinson’s Law
Parkinson’s Law states that work expands to fill the time available. In software
costing, this means that the cost is determined by available resources rather than by
objective assessment. If the software has to be delivered in 12 months and 5 people are
available, the effort required is estimated to be 60 person-months.
(5) Pricing to win
The software cost is estimated to be whatever the customer has available to spend on
the project. The estimated effort depends on the customer’s budget and not on the
software functionality.
(6) Top- down estimation
A cost estimate is established by considering the overall functionality of the product
and how that functionality is provided by interacting sub-functions. Cost estimates are
Software Engineering (MU) 1-81 Introduction
made on the basis of the logical function rather than the components implementing
that function.
(7) Bottom- up estimation
The cost of each component is estimated. All these costs are added to produce a final
cost estimate.
Each technique has advantages and disadvantages.
For large projects, several cost estimation techniques should be used in parallel and their
results compared.
If these predict radically different costs, more information should be sought and the
costing process repeated. The process should continue until the estimates converge.
Cost models are based on the fact that a firm set of requirements has been drawn up and
costing is carried out using these requirements as a basis.
However, sometimes the requirements may be changed so that a fixed cost is not
exceeded.
The primary factor that controls the effort is the size of the project, that is, the larger
the project, the greater the effort requirement.
Programmer ability,
Experience of the developers in the area,
Complexity of the project, and
Reliability requirements.
The goal of cost model is to determine which of these many parameters have a
“significant” effect on the cost and then to discover the relationships between the cost and
these characteristics.
The most common approach for determining the significant parameters and their
relationship to cost is to build models through regression analysis, where cost is the
dependent variable and the parameters are the independent variables.
Software Engineering (MU) 1-82 Introduction
The most common approach therefore for estimating effort is to make it a function of
a single variable of project size and the equation of effort is considered as
b
Effort = a*size
where a and b are constants, and project size is generally in KLOC or function points.
Values for these constants for a particular process are determined through regression
analysis, which is applied to data about the projects that has been performed in the past.
The approach of determining total effort from the total size is what we refer to as the
top-down approach, as overall effort is first determined and then from this the effort for
different parts are obtained.
In a top-down estimation model by using size as the main input to the model, we have
replaced the problem of effort estimation by size estimation.
In this approach, the project is first divided into tasks and then estimates for the different
tasks of the project are first obtained.
The overall estimate of the project is derived from the estimates of its parts.
Software Engineering (MU) 1-83 Introduction
The bottom-up approach lends itself to direct estimation of effort; once the project is
partitioned into smaller tasks, it is possible to directly estimate the effort required for
them, especially if tasks are relatively small.
The procedure for bottom-up estimation can be summarized as the following sequence
of steps :
1. The major programs (or units or modules) in the software being built are first
determined.
2. Each program unit is then classified as simple, medium, or complex based on certain
criteria.
3. For each classification unit, an average effort for coding (and unit testing) is decided.
4. This standard coding effort can be based on past data from a similar project, from
some guidelines, or some combination of these.
5. Once the number of units in the three categories of complexity is known and the
estimated coding effort for each program is selected, the total coding effort for the
project is known.
6. From the coding effort, the effort required for the other phases and activities is
determined as a percentage of coding effort.
7. From information about the past performance of the process, the likely distribution of
effort in different phases of this project is decided, and then used to determine the
effort for other phases and activities.
8. From these estimates, the total effort for the project is obtained.
Both the top-down and the bottom-up approaches require information about the
project :
Size (for top-down approaches) or
A list of tasks (for bottom-up approaches).
In many ways, these approaches are complementary, and often it may be desirable to
determine the effort using both the approaches and then using these estimates to obtain the
final estimate.
Software Engineering (MU) 1-84 Introduction
Salient features
The CAD software will accept 2D and 3D geometric data from an engineer through a
user interface that exhibits good HCI. All geometric data will be maintained in a database.
Design analysis modules will be developed to produce the required output, which will be
displayed on a variety of graphics devices. The software will interact with peripheral devices
including a mouse, digitizer, laser printer and plotter.
This statement of scope is preliminary it is not bounded. Every sentence would have to
be expanded to provide concrete detail and quantitative bounding. For example, before
estimation can begin the planner must determine what “characteristics of good
human/machine interface design” means or what the size and sophistication of the “CAD
database” are to be.
For our purpose, we assume that further refinement has occurred and that the
following major software functions are identified :
Functional decomposition
E = (Eopt + 4 Em + Epess) / 6
Functionality S = (Sopt+4Sm+Spess)
UICF 5650
2DGA 7200
3DGA 8066
DBM 4233
CGDF 5100
PCF 8033
DAM 4466
Total LOC 42748
Step 3 : Use historical data for projects of this type (LOC/pm and R/LOC) to obtain effort
and cost estimates.
A larger code size does not necessarily imply better quality or higher efficiency. Some
programmer produce lengthy and complicated code as they do not make effective use
of the available instruction set.
LOC metric penalizes use of higher-level programming languages, code reuse, etc.
The paradox is that if a programmer consciously uses several library routines, then the
LOC count will be lower. This would show up as a smaller program size. Thus, if the
managers use the LOC count as a measure of the effort put in by different engineers!
Software Engineering (MU) 1-87 Introduction
Between two programs with equal LOC count, a program having complex logic would
require much more effort to develop than a program with very simple logic. To realize
why this is so, compare the efforts required to develop a program having multiple
nested loop and decision constructs with that of another program having only
sequential control flow.
The LOC count can be accurately computed only after the code has been fully
developed. Therefore, the LOC metric is of little use to the project managers during
project planning, since project planning is carried out much before any development
activity is started. This possibly is the biggest shortcoming of the LOC metric from the
project manager’s perspective.
1.15.3 FP based Estimation .MU - Oct. 04, June 05, Nov. 06, Nov. 07, Dec. 08, Dec.09.
FP can be used to
Estimate the cost or effort required to design, code and test the software.
Predict the number of errors that will be encountered during testing.
Forecast the number of components and/or the number of projected source lines in the
system under implementation.
Note : For Oral examination knowledge point of view only, not in syllabus
To determine the complexity of ILF’s and EIF’s, the number of Data Element Types
(DET) and Record Element Types (RET) in each ILF and EIF are identified,
A DET is a user recognizable unique and non-recursive field also called column,
attribute, data item, and data field in the ILF/EIF,
RET : A user recognizable logical group of fields.
While identifying RET’s look for a group of :
The number of DET’s and RET’s determine the complexity of an ILF or EIF.
The higher the number of DET’s or RET’s, the higher is the complexity.
Transaction function types represent the functionality provided to the user to process
data by the application and comprise External Input (EI), External Outputs (EO),
and External Inquiries (EQ)
An External Input (EI) is a unique business event that needs to update the data in
the system.
For e.g., placing a purchase order would be considered an EI,
Modification of the purchase order would be another EI, and cancellation of a
purchase order would be considered as a third EI
An EI has to be unique, and not just an extension,
If all the fields of a business transaction cannot fit on one screen and are therefore
split into two screens count as a single EI,
EI may be input to the system through screens, or a electronic files created by some
other system,
To determine the complexity of EI, the number of Data Element Types (DET) and
File Types Referenced (FTR) are identified,
Software Engineering (MU) 1-90 Introduction
Determine complexity of EI
An External Output (EO) is a unique data or control output that crosses the
boundary to go out of a system,
Typically, reports would be identified as External Outputs,
An output form which is too long to fit on one screen or one page width and is
therefore split into two, is still counted as one EO,
EO excludes responses to external inquiries as these are a separate category.
Determine complexity of EO
Here,
An EQ is a unique input / output combination
o No change is made to any internal data,
o The processing and output generation resulting from the input is immediate.
o An EQ should not be counted in the EI and EO. Multiple screen queries
count as a single EQ,
o EQ complexity is based on FTR referenced while processing for the EQ,
and DET which is a user recognizable data item appearing on the output of
the EQ.
1-5 DET 6-19 DET 20 DET
0-1 FTR Simple Simple Average
2-3 FTR Simple Average Complex
4 FTR Average Complex Complex
Each of the VAF is evaluated in scale of range from 0 (not important or applicable) to 5
(absolute essential)
Software Engineering (MU) 1-96 Introduction
VAF Value
1. Backup and Recovery 4
2. Data Communication 2
3. Distributed Processing 0
4. Performance Critical 4
5. Existing Operating Environment 3
6. Online Data Entry 4
7. Input Transaction over Multiple Screen 5
8. ILFs Updated Online 3
9. Information Domain Value Complex 5
10. Internal Processing Complex 5
11. Code Designed for Reuse 4
12. Conversation/Installation in Design 3
13. Multiple Installation 5
14. Application Designed for Change 5
Total VAF 62
Software Engineering (MU) 1-98 Introduction
Advantages of FPC
FPC is independent of the technology, that is, OS, programming language, database,
developer productivity and methodology.
The FPC concept is simple to understand; hence, it becomes a good quick measure for
any comparative analysis. Companies use FPCs to compare between software, or
between the productivity of different groups.
Software Engineering (MU) 1-99 Introduction
Disadvantages of FPC
A top-down model can depend on many different factors, instead of depending only
on one variable, giving rise to multivariable models.
One approach for building multivariable models is to start with an initial estimate
determined by using the static single-variable model equations, which depend on size, and
then adjusting the estimates based on other variables. This approach implies that size is the
primary factor for cost; other factors have a lesser effect.
COCOMO model also estimates the total effort in terms of person-months. The basic
steps in this model are :
1. Obtain an initial estimate of the development effort from the estimate of thousands of
delivered lines of source code (KLOC).
2. Determine a set of 15 multiplying factors from different (cost driver) attributes of the
project.
3. Adjust the effort estimate by multiplying the initial estimate with all the multiplying
factors.
The original COCOMO model was a set of models;
3 development modes (organic, semi-detached, and embedded) and
3 levels (basic, intermediate, and advanced).
Model 1 : Basic COCOMO model is static single-valued model that computes software
development effort (and cost) as a function of program size expressed in estimated lines
of code.
The basic COCOMO equations take the form :
Effort Applied = ab (KLOC) b [ man-months ]
b
Software project ab bb cb db
Organic 2.4 1.05 2.5 0.38
Semi-detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Basic COCOMO is good for quick estimate of software costs. However it does not
account for differences in hardware constraints, personnel quality and experience, use of
modern tools and techniques, and so on.
Software Engineering (MU) 1-101 Introduction
ai (LOC) i EAF
b
E =
Cb (EffortApplied) b [months]
d
Development Time =
Where,
E is the effort applied in person-months,
LOC is the estimated number of delivered lines of code for the project.
The coefficient ai and the exponent bi are given in the table below.
EAF- Effort Adjustment Factor which is obtained by multiplying all 15 cost drivers.
The Development time D calculation uses E in the same way as in the Basic
COCOMO.
Table 1.15 : Constants for Effort and Duration for Intermediate COCOMO
Development Mode ai bi ci di
Organic : 3.2 1.05 2.5 0.38
Semidetached : 3.0 1.12 2.5 0.35
Embedded : 2.8 1.20 2.5 0.32
Each of the 15 attributes receives a rating on a six-point scale that ranges from “very
low” to “extra high” (in importance or value). An effort multiplier from the table 1.16 below
applies to the rating. The product of all effort multipliers results in an effort adjustment
factor (EAF). Typical values for EAF range from 0.9 to 1.4.
Table 1.16 : Effort multipliers for different cost drivers
Ratings
Cost Drivers Very Low Nominal High Very Extra
Low High High
Product Attribute
RELY, required reliability 0.75 0.88 1.00 1.15 1.40
DATA, database size 0.94 1.00 1.08 1.16
CPLX, product complexity 0.70 0.85 1.00 1.15 1.30 1.65
Software Engineering (MU) 1-102 Introduction
Ratings
Cost Drivers Very Low Nominal High Very Extra
Low High High
Computer Attributes
TIME, execution time 1.00 1.11 1.30 1.66
constraints
STOR, main storage constraint 1.00 1.06 1.21 1.56
VITR, virtual memory 0.87 1.00 1.15 1.30
volatility
TURN, computer turn around 0.87 1.00 1.07 1.15
time
Personnel Attributes
ACAP, analyst capability 1.46 1.19 1.00 0.86 0.71
AEXP, application experience 1.29 1.13 1.00 0.91 0.82
PCAP, programmer capability 1.42 1.17 1.00 0.86 0.70
VEXP, virtual machine 1.21 1.10 1.00 0.90
experience
LEXP, programming language 1.14 1.07 1.00 0.95
experience
Project Attributes
MODP, modern programming 1.24 1.10 1.00 0.91 0.82
practices
TOOL, use of SW tools 1.24 1.10 1.00 0.91 0.83
SCHED, development schedule 1.23 1.08 1.00 1.04 1.10
Table 1.17 : Phase Distribution of Effort : Organic Mode
Organic :
In the organic mode the project is developed in a familiar, stable environment and the
product is similar to previously developed products.
The product is relatively small, and requires little innovation.
Most people connected with the project have extensive experience in working with
related systems within the organization and therefore can usefully contribute to the
project in its early stages, without generating a great deal of project communication
overhead.
An organic mode project is relatively relaxed about the way the software meets its
requirements and interface specifications.
If a situation arises where an exact correspondence of the software product to the
original requirements would cause an extensive rework, the project team can generally
negotiate a modification of the specifications that can be developed more easily.
A thermal analysis program developed for a heat transfer group is an example of this.
Software Engineering (MU) 1-106 Introduction
Embedded :
The embedded-mode project does not generally have the option of negotiating easier
software changes and fixes by modifying the requirements and interface specifications.
The project therefore needs more effort to accommodate changes and fixes.
The embedded mode project is generally charting its way through unknown territory to a
greater extent than the organic mode project.
This lead the project to use a much smaller team of analyst in the early stages, as a large
number of people would get swamped in communication overhead.
Once the embedded mode project has completed its product design, its best strategy is to
bring on a very large team of programmers to perform detailed design, coding and unit
testing in parallel.
Otherwise the project would take much longer to complete.
This strategy as we will see leads to the higher peaks in the personnel curves of
embedded-mode projects, and to the greater amount of effort consumed compared to an
organic mode project working to the same total development schedule.
Semi-detached :
The team members have experience related to some aspects of the system under
development, but not others.
The size of a Semidetached mode product generally extends up to 300 KDSI.
A transaction processing system with fixed requirements for terminal hardware and
database software is an example of this.
Table1.23 : Different development modes and their characteristics
Customer interfaces
ab (KLOC) b [ man-months ]
b
Ei =
2) EAF (effort adjustment factor) = The multiplication of factors for all 15 cost drivers
using Table 1.16.
3) The final effort estimate, E, is obtained by multiplying the initial estimate by the EAF.
E = EAF *Ei
Software Engineering (MU) 1-108 Introduction
Example :
The system will comprise a few different modules. The modules and their expected
sizes are :
Login 200 LOC
Payment 200 LOC
Administrator interface 600 LOC
Seller functions 200 LOC
Buyer functions 500 LOC
View and bookkeeping 300 LOC
-------------------------------------------------------
TOTAL 2000 LOC
The total size of this software is estimated to be 2 KLOC.
Suppose we expect that
The complexity of the system is high,
The programmer capability is low, and
The application experience of the team is low.
All other factors have a nominal rating.
From these, the effort adjustment factor (EAF) is,
EAF = 1.15 * 1.17 * 1.13 = 1.52
The initial effort estimate for the project is,
Ei = 3.9 * 2.91 = 7.3 PM.
4) By this method, the overall cost of the project can be estimated. For planning and
monitoring purposes, estimates of the effort required for the different phases are
also desirable. In COCOMO, effort for a phase is a defined percentage of the overall
effort. The percentage of total effort spent in a phase varies with the type and size of
the project. The percentages for an organic, semi-detached, embedded software project
are given in Table 1.14 to Table 1.15.
Software Engineering (MU) 1-109 Introduction
Using this table, the estimate of the effort required for each phase can be determined
from the total effort estimate.
Example :
Where,
Phase is one of the rows of table,
L- Lower Bound Column value,
U- Upper Bound Column value,
Phase (L) - row of phase and column of L intersection cell value
Phase (U) - row of phase and column of U intersection cell value
For Example :
Locate lower and upper bound in table 1 given effort estimate 20PM.
For 20 PM, it is in between 8KLOC and 32KLOC.
L = 8 KLOC
U = 32 KLOC
Phase = Coding and Unit testing
Phase (L) = 40
Phase (U) = 38
Then the percentage effort for phase coding and unit testing will be
40 + (38 - 40)/ (32 - 8) * 20 = 39%.
The estimate needed for this phase is calculated as,
(Given effort estimate) * (% effort of phase) = 20 * 0.39 = 7.8 PM
Software Engineering (MU) 1-110 Introduction
Example :
Suppose a system for office automation has to be designed. From the requirements, it
is clear that there will be four major modules in the system: data entry, data update, query,
and report generator. It is also clear from the requirements that this project will fall in the
organic category. The sizes for the different modules and the overall system are estimated
to be :
Data entry 0.6 KLOC
Data update 0.6 KLOC
Query 0.8 KLOC
Reports 1.0 KLOC
Total 3.0 KLOC
From the requirements, the ratings of the different cost driver attributes are assessed.
These ratings, along with their multiplying factors, are :
Complexity High 1.15
Storage High 1.06
Experience Low 1.13
Programmer capability Low 1.17
All other factors had a nominal rating. From these, the effort adjustment factor (EAF)
is
EAF = 1.15 * 1.06 * 1.13 * 1.17 = 1.61.
The initial effort estimate for the project is obtained from the relevant equations.
We have
Ei = 3.2 * 31.05 = 10.14PM.
Using the EAF, the adjusted effort estimate is
E = 1.61 * 10.14 = 16.3PM
Using the phase wise distribution table listed earlier, we obtain the percentage of the
total effort consumed in different phases.
The office automation system’s size estimate is 3 KLOC, so we will have to use
interpolation to get the appropriate percentage (the two end values for interpolation will be
the percentages for 2 KLOC and 8 KLOC).
Note : Type of interpolation technique used to calculate % effort for phase can be varied as per policy
of organization.
Software Engineering (MU) 1-111 Introduction
The original COCOMO model became one of the most widely used and discussed
software cost estimation models in the industry. It has evolved into a more comprehensive
estimation model, called COCOMO II. COCOMO II is tuned to modern software life cycles,
such as business software, object-oriented software, and software that uses more modern
development models like the spiral or evolutionary models. The original COCOMO model
has been very successful, but it doesn’t apply to newer software development practices as
well as it does to traditional practices. COCOMO II targets the software projects of the
1990s and 2000s, and will continue to evolve over the next few years.
The primary objectives of the COCOMO II effort are :
To develop a software cost and schedule estimation model tuned to the life cycle
practices of the 1990’s and 2000’s.
To develop software cost database and tool support capabilities for continuous model
improvement.
COCOMO II is actually a hierarchy of estimation models that address the following
areas :
Model 1 : Application composition model : Used during the early stages of software
engineering, when prototyping of user interfaces, consideration of software and system
interaction, assessment of performance, and evaluation of technology maturity are
paramount.
Software Engineering (MU) 1-112 Introduction
Model 2 : Early design stage model : Used once requirements have been stabilized and
basic software architecture has been established.
Model 3 : Post-architecture-stage model : Used during the construction of the
software. Like all estimation models for software, the COCOMO II models require
sizing information. Three different sizing options are available as part of the model
hierarchy :
Object points, function points, and lines of source code.
This model is used where software can be decomposed into several components and
each component can be described in the object points. Objects are screen, reports, and
3GL components, which are easy to identify and count when the software system is split
into different sub-system components.
Object points are alternative to function points when 4GLs or similar languages are
used for software development. It should be noted that object points are not object classes.
Objects are given object points as under, depending on the level of complexity.
(100 – % reuse)
ROP = OP 100
Developer’s level of experience and maturity Very low Low Nominal High Very high
Productivity Constant 4 7 13 25 50
(NOP* per Month)
For e.g., object points, say, are 40 and the re-use possibility is 10%, then
ROP = 40 * ((100 – 10)/100) = 40 * 0.90 = 36
Further, if the development team’s experience and maturity is at level Normal, then
productivity constant is 13. Hence
MME = (ROP)/ Productivity Constant = 36/13 ≈ 3 Man months.
This model is also used to estimate the effort at the prototype level when requirements
are not clear.
It should be understood that if B = 1, then software does not have an impact on MME.
So, if B is less than 1, the impact on man month effort will have a positive impact and if B is
greater than 1, the impact on man month effort is negative. That is, man month effort is
either less or more than the man month effort required when B = 1.
Software Engineering (MU) 1-114 Introduction
‘B’ the value of scaling factors (also known as drivers) is computed as below
5
B = 0.91 + 0.01 Ratings
1
The rating for each of the factors is based on the organization’s level on each of these
factors
In addition to these factors that affect development efforts, there are also other factors
that are relevant, as they have a large impact on MME. If these factors are considered, the
MME (Modified) is calculated.
The value of the rating is as per the guidelines given in following table :
A + B (ev)
C
E =
Where, A, B, C are empirically derived constants, E is effort in person-months and ev
is estimation variable (either LOC or FP)
Two popular empirical estimation techniques are :
1. Expert judgment
2. Delphi estimation technique
The process is iterated for several rounds. However, no discussion among the estimators
is allowed during the entire estimation process. The idea behind this is that if any
discussion is allowed among the estimators, then many estimators may easily get
influenced by the rationale of an estimator who may be more experienced or senior.
Note : An estimator is opaque to any other estimators.
1.17 Planning
.MU - June 05, May 07, Nov. 07, May 08, Dec. 08, Dec. 09, June 10.
The objective of software project planning is to provide a framework that enables the
manager to make reasonable estimates of resources, cost, and schedule. These estimates are
made within a limited time frame at the beginning of a software project and should be
updated regularly as the project progresses. In addition, estimates should attempt to define
best case and worst case scenarios so that project outcomes can be bounded.
The other objectives of project planning are :
It defines the roles and responsibilities of the project management team members.
It ensures that the project management team works according to business objectives.
It checks feasibility of schedule and user requirements.
It determines project constraints.
Planning is necessary : Planning should be done before ea project begins. For effective
planning, objectives and schedules should be clear and understandable.
Risk analysis : Before starting the project, senior management and the project
management teams should consider the risks that may affect the project. For example,
the user may desire changes in requirements while the project is in progress. In such a
case, the estimation of time and cost should be done according to those requirement
(new requirements).
Tracking of project plan : Once the project plan is prepared, it should be tracked and
modified accordingly.
Meet quality standards and produce quality deliverables : The project plan should
identify processes by which the project management team can ensure quality in
software. Based on the process selected for ensuring quality , the time and cost for the
project is estimated.
Software Engineering (MU) 1-120 Introduction
A) Project purpose
B) Project scope
Software scope describes the data and control to be processed, function, performance,
constraints, interfaces, and reliability. Functions described in the statement of scope are
evaluated and in some cases refined to provide more detail prior to the beginning of
estimation. Because both cost and schedule estimates are functionally oriented, some degree
of decomposition is often useful. Performance considerations encompass processing and
response time requirements. Constraints identify limits placed on the software by external
hardware, available memory, or other existing systems.
Above figure shows several activities, which can be performed both in a sequence and
in a parallel manner. Project planning consists of various activities.
Identification of project requirements : Before starting a project, it is essential to
identify the project requirements as the identification of project requirements helps in
performing the activities in a systematic manner. These requirements comprise
information such as project scope, data and functionality required in the software, and
roles of the project management team members.
Identification of cost estimates : Along with the estimation of effort and time, it is
necessary to estimate the cost that is to be incurred on a project. The cost estimation
includes the cost of hardware, network connections, and the cost required for the
maintenance of hardware components. In addition, cost is estimated for the individuals
involved in the project.
Identification of risks : Risks are unexpected events that have an advance effect on the
project. A software project involves several risks (like technical risks and business risks)
that affect the project schedule and increase the cost of the project. Identifying risks
before a project begins helps in understanding their probable extent of impact on the
project.
Identification of critical success factors : For making a project successful, critical
success factors are followed. These factors refer to the conditions that ensures greater
chances of success of a project. Generally, these factors include support from
management, appropriate budget, appropriate schedule, and skilled software engineers.
Preparation of project charter : A project charter provides a brief description of the
project scope, quality, time, cost, and the resource constraints as described during
project planning. It is prepared by the management for approval from the sponsor of the
project.
Preparation of project plan : A project plan provides information about the resources
that are available for the project, individuals involved in the project, and the schedule
according to which the project is to be carried out.
Commencement of the project : Once the project planning is complete and resources
are assigned to team members, the software project commences.
Once the project objectives and business objectives are determined, the project end
date is fixed. The project management team prepares the project plan and schedule according
to the end date of the project. After analyzing the project plan, the project manager
communicates the project plan and end date to the senior management. The progress of the
project is reported to the management from time to time. Similarly, when the project is
complete, senior management is informed about it. In case of delay in completing the
project, the project plan is re-analyzed and corrective action is taken to complete the project.
The project is tracked regularly and when the project plan is modified, the senior
management is informed.
Software Engineering (MU) 1-123 Introduction
D) Project plan
Document templates
1.0 Introduction
Any special constraints that affect the manner in which the project will be
conducted (e.g., limited resources or ‘drop dead’ delivery date) or the technical
approach to development are noted here.
This section provides cost, effort and time estimates for the projects
2.1 Historical data used for estimates
The final cost, effort, time (duration) estimate for the project (at this point in time)
is presented here.
2.4 Project resources
People, hardware, software, tools, and other resources required to build the
software are noted here.
This section discusses project risks and the approach to managing them.
3.1 Project risks
The complete risk table is presented. Name of risk, probability, impact and RM3
pointer are provided.
3.3 Overview of risk mitigation, monitoring, management
This section presents an overview of project tasks and the output of a project
scheduling tool.
4.1 Project task set
The process model, framework activities and task set that have been selected for
the project are presented in this section.
4.2 Functional decomposition
Project tasks and their dependencies are noted in this diagrammatic form.
4.4 Timeline chart
A project timeline chart is presented. This may include a time line for the entire
project or for each staff member.
The manner in which staff are organized and the mechanisms for reporting are noted.
5.1 Team structure
The team structure for the project is identified. Roles are defined.
5.2 Management reporting and communication
7.0 Appendix
To carry out project scheduling appropriately, some principles are followed. These
principles help the project management team to prepare the project schedule. The commonly
followed principles are :
Compartmentalization : Divides the project into several tasks. The purpose of
compartmentalization is to make the project manageable. Thus, it becomes easier to
prepare the project schedule according to these tasks.
Interdependency : Determines the interdependency of one or more activities or tasks on
each other. All the activities of the project are not interdependent. There are various
activities that are performed sequentially, whereas some of the activities are executed
together with other activities. On the other hand, some activities cannot begin until the
activity on which they are dependent to complete.
Software Engineering (MU) 1-128 Introduction
Time allocation : Determines the time to be allocated to each project management team
member for performing specified activities. However, before allocating time, it is
important to estimate the effort required by them to complete the assigned task. In
addition, the project management team members should.
Effort validation : Ensures that the effort required to perform the assigned tasks are
valid. In other words, it should verify that the task allocated to one or more project
management team members is according to the effort required for each task. This is
because every project management team has a defined number of team members. Hence,
the project manager should allocate the tasks according to the effort and time required to
complete task.
Defined responsibilities : Specify the roles and responsibilities of every project
management team member. Hence, the tasks should be allocated according to the skills
and abilities of team members to perform the assigned task.
Defined outcomes : Specify the outcomes of every task performed by the project
management team members. The outcome is achieved after completion of a task.
Generally, then outcome of a task is in the form of a product and these products are
combined in deliverables.
Defined milestone : Specify the milestones when work products are compete and
reviewed for quality.
1.18.3 Milestones
Fig. 1.31 shows examples of milestones in requirements and design phases of the
project. ‘Milestone 1’, ‘Milestone 2’, and ‘Milestone 3’ represent the completion of tasks in
requirements phase. Similarly, ‘Milestone 4’, ‘Milestone 5’, ‘Milestone 6’, and ‘Milestone
7’ represent completion of tasks in design phase. Each milestone represents the completion
of a specific task. For example, ‘Milestone 1’ represents completion of feasibility study and
‘Milestone 2’ represents completion of requirement definition. Similarly, in the design
phase, ‘Milestone 4’ represents completion of architectural design and so on.
Requirements Design
Feasibility study Architectural design
Milestone 1 Milestone 4
Outline requirements Interface design
definition
Milestone 2 Milestone 5
Design study Formal specification
Milestone 3 Milestone 6
Requirements Detailed design
specification
Milestone 7
Implementation
Fig.1.33 : Milestones
In project scheduling, there are several aspects that are important to be considered.
These include techniques of project scheduling, task network, and tracking the schedule.
Techniques of project scheduling focus on checking the activities that re completed
according to project schedule. In addition, these techniques describe the information about
activities in graphical form so that it is easy for a project management team to understand the
time and effort required for each activity. Task network focuses on how the entire software
project can be broken into several manageable tasks, which are understandable by the project
management team. Tracking the schedule focuses on finding ways to complete the project
according to the schedule.
1. Define a set of task to be completed - WBS TOOL
2. Build a task network - CPM TOOL
Software Engineering (MU) 1-130 Introduction
A schedule cannot be simply obtained from the overall effort estimate by deciding on
average staff size and then determining the total time requirement by dividing the total
effort by the average staff size.
Person and months (time) are not interchangeable.
In a project, the scheduling activity can be broken into two subactivities :
Determining the overall schedule (the project duration) with major milestones,and
Developing the detailed schedule of the various tasks.
Schedule is modeled as depending on the total effort (which, in turn depends on size).
The constants for the model are determined from the historical data.
In COCOMO, the schedule is determined as,
d
Development Time M = C b ( Effort _ Applied ) b [months] ]
One rule of thumb, called the square root check, is sometimes used to check the
schedule of medium-sized projects. The proposed schedule can be around the square root of
the total effort in person-months. For example, if the effort estimate is 50 person-months, a
schedule of about 7 to 8 months will be suitable.
The duration or schedule of the different phases is obtained in the same manner as in
effort distribution. The percentages for the different phases are given in Tables 1.18, 1.20
and 1.22.
Once we have the estimates of the effort and time requirement for the different phases,
a schedule for the project can be prepared. This schedule will be used later to monitor the
progress of the project. Look the following sample “Summary milestone schedule”
Table 1.24 for a better understanding of this :
Table 1.24 : Summary milestone schedule
Project Management
Meeting
Project Steering Group
Meeting
Agree piloting and
evaluation criteria
Early trial of functions
and feature sets with
pilot group
Develop initial version
of V-MAP desktop tool
for alpha testing
Trial functions and
alpha test with pilot
groups
Feedback to Developer
alpha
Consultancy with
Standards expert
Software Engineering (MU) 1-132 Introduction
Consultancy with
moodle.com
Develop beta version of
desktop tools
Trial functions and beta
code with pilot groups
Feedback to Developer
beta
Produce release
candidate code
including
documentation
Final testing of code
before release to
community
Piloting of tools
Evaluation of Project
Dissemination of tools
through workshop and
other channels
Production and
maintenance of website
Production of reports as
required by JISC
Example Continued
We continue with the office automation example. Recall that the overall size estimates
for the project is 3KDLOC, and the final effort estimate obtained was 16.34 PM.
As this is an organic system, the overall duration will be determined by equation
0.38
2.5 * E .
Using this we get the project duration D as,
0.38
D = 2.5 * 16.34 = 7.23 months
Software Engineering (MU) 1-133 Introduction
Using the preceding table, which gives the duration of the different phases as a
percentage of the total project duration, we can obtain the duration of the different phases.
The duration of the different phases is :
System Design : 0.19 * 7.23 = 1.37 M
Programming : 0.623 * 7.23 = 4.5 M
Integration : 0.1866 * 7.23 = 1.35 M
If the project is to start on January 1, then according to this, the project will end in the
middle of August.
The system design phase will terminate in the middle of February,
The programming activity will end in late June, and
Rest of the time will be spent in integration and testing.
Using these techniques, an overall schedule for the project can be decided.
From the cost and overall duration of the project, the average staff size for the project
can be determined by dividing the total effort (in person-months) by the overall project
duration (in months)
The staff requirement for a project is small during requirement and design, the
maximum during implementation and testing, and drops again during the final phases of
integration and testing.
Using the COCOMO model, average staff requirement for the different phases can be
determined as the effort and schedule for each phase are known. This presents staffing as a
step function with time as shown in Fig 1.34.
For detailed schedules, the major tasks fixed while planning the milestones are broken
into small schedulable activities in a hierarchical manner. For example, the detailed
design phase can be broken into tasks for developing the detailed design for each
module, review of each detailed design, fixing of defects found, and so on.
For each detailed task, the project manager estimates the time required to complete it
and assigns a suitable resource so that the overall schedule is met.
If this detailed schedule is not consistent with the overall schedule and effort estimates,
the detailed schedule must be changed.
If it is found that the best detailed schedule cannot match the milestone effort and
schedule, then the earlier estimates must be revised. Thus, scheduling is an iterative
process.
For detailed scheduling, tools like Microsoft Project or a spreadsheet can be very useful.
For each lowest-level activity, the project manager specifies the effort, duration, start
date, end date, and resources.
Dependencies between activities, due either to an inherent dependency (for example,
you can conduct a unit test plan for a program only after it has been coded) or to a
resource-related dependency (the same resource is assigned two tasks) may also be
specified.
A detailed project schedule is never static - Changes are done as and when the need
arises.
The detailed schedule becomes the main document that tracks the activities and
schedule.
1.18.6 An Example
The overall effort estimate for this project is 501 person-days, or about 24 person-
months.
This estimation was done using the bottom-up approach discussed earlier.
The customer gave approximately 5.5 months to finish the project.
Because this is more than the square root of effort in person-months, this schedule was
accepted.
Table 1.25 shows the high level schedule of the project.
Software Engineering (MU) 1-135 Introduction
This project uses a process in which initial requirement and design is done in two
iterations and the development is done in three iterations. The overall project duration
with these milestones is 140 days.
This high-level schedule is not suitable for assigning resources and detailed planning.
During detailed scheduling, these tasks are broken into schedulable activities.
Table 1.26 shows part of the detailed schedule of the construction-iteration 1 phase of
the project.
For each activity, the table specifies the activity by a short name, the module to which
the activity is contributing, and the duration and effort.
For each task, how much is completed is given in the % complete column. This
information is used for activity tracking.
The detailed schedule also specifies the resource to which the task is assigned (specified
by initials of the person.)
Sometimes, the predecessors of the activity (the activities upon which the task depends)
are also specified. This information helps in determining the critical path and the critical
resources.
Table 1.25 : High-level schedule for the project
One of the first tasks is to break the large tasks into small tasks. It means identifiable
parts of the tasks. It also means finding deliverables and milestones that can be used to
measure progress.
The work breakdown structure (WBS) should be a tree structure. The top level
breakdown usually matches the life cycle model (LCM) used in organization. The next level
break down can match the progress in the task into smaller, more manageable tasks.
The following are rules for constructing a proper work breakdown structure :
1. The WBS must be a tree structure : There should be no loops or cycles in the WBS.
Iterative actions will be shown in the process model and/or the life cycle model.
Software Engineering (MU) 1-137 Introduction
1.18.7.2 Sequence the Work Activities .MU - Dec. 08, Dec. 09.
Milestone Chart
Gantt chart
Software Engineering (MU) 1-138 Introduction
Network Techniques
o CPM (Critical Path Method)
o PERT (Program Evaluation and Review Technique)
A. Gantt Chart
Gantt chart is a means of displaying simple activities or events plotted against time or
dollars.
Most commonly used for exhibiting program progress or for defining specific work
required to reach an objective.
Gantt charts may include listing of activities, activity duration, scheduled dates, and
progress-to-date.
Advantages
Easy to understand.
Easy to change.
Software Engineering (MU) 1-139 Introduction
Disadvantages
B. Network techniques
In order to be able to use Critical Path Analysis, you first need to be able to form what
is called an activity network. This is essentially a way of illustrating the given project data
concerning the tasks to be completed, how long each task takes and the constraints on the
order in which the tasks are to be completed. As an example, consider the activities shown
below for the construction of a garage.
Activity Duration (in days)
A Prepare foundations 7
B Make and position door frame 2
C Lay drains, floor base and screed 15
D Install services and fittings 8
E Erect walls 10
F Plaster ceiling 2
G Erect roof 5
H Install door and windows 8
I Fit gutters and pipes 2
J paint outside 3
Software Engineering (MU) 1-140 Introduction
Clearly, some of these activities cannot be started until other activities have been
completed. For example
Activity G – erect roof
D must follow E
G must follow E
H must follow G
J must follow I.
We call these the precedence relations.
All this information can be represented by the network shown below
The number marked on each are shows the duration of the activity from which they
starts.
Note the use of ‘arc’ here to mean a directed edge. Sometimes we can easily form the
activity network, but not always, so we need to have a formal method. First try the following
activity.
For simple problems it is often relatively easy to construct activity networks but, as
the complete project becomes more complex, the need for a formal method of constructing
activity networks increase. Such an algorithm is summarised below.
Start Write down the original vertices and then a second copy
of them alongside, as illustrated on the right. If activity
Y must follow activity X draw an arc from original
vertex Y to shadow vertex X. (In this way you construct
a bipartite graph.)
Step 1 Make a list of all the original vertices which have no
arcs incident to them.
Step 2 Delete all the vertices found in step 1 and their
corresponding shadow vertices and all arcs incident to
these vertices.
Step 3 Repeat step 1 and 2 until all the vertices have been used.
The use of this algorithm will be illustrated using the first case study, constructing a
garage, from Section B.1.
The precedence relations are :
D must follow E
E must follow A and B
F must follow D and G
G must follow E
H must follow G
I must follow C and F
J must follow I
These are illustrated opposite.
Software Engineering (MU) 1-142 Introduction
Applying the algorithm until all vertices have been chosen is shown below
From the ‘start’ vertex, draw arcs to A, B and C, the first iteration vertices, putting
zero on each arc. In the original bipartite graph the shadow vertex A was joined to the
original vertex E – so join A to E. Similarly join B to E and C to I.
Indicate the duration of the activity on any arc coming from the vertex representing
the activity.
Continue in this way and complete the activity network with a ‘finish’ vertex into
which any free vertices lead, again indicating the duration of the activity on the arc.
Note that the duration of the activity is shown on every arc coming from the vertex
representing the activity. (So, for example, arc ED and arc EG are both given 10.)
The program evaluation and review technique (PERT) chart is used to schedule,
organize, and coordinate tasks within the project. The objective of PERT chart is to
determine the critical path, which comprises critical activities that should be completed on
schedule. This chart is prepared with the help of information generated in project planning
activities, such as estimation of effort, selection of suitable process model for software
development, and decomposition of tasks into subtasks. The advantages of using PERT chart
are :
It represents the project in graphical form.
It provides information about the expected completion time of the project.
It describes the probability of completion of project before the specified date.
It specifies the activities that form the critical path.
It specifies the start and end dates of activities involved in project.
It describes the dependencies of one or more tasks on each other.
Figure shows example of PERT chart. The milestones are numbered as 1, 2, 3, 4,
and 5 and are represented either by circles or rectangles. When a milestone is completed, it
is assigned a greater number than the previous milestones. Each milestone is linked with one
or more arrows. The activities of the projects are represented by A, B, C, D, E, and F.
The direction of arrows determines the sequence of activities. When activities are completed
in sequence, they are known as serial activities. Here activities A, C, F are performed in a
sequence. Similarly, activities B, E are serial activities. On the other hand when two or
more activities are being performed simultaneously, they are known as concurrent activities
or parallel activities. Here, activities A, B and activities C, D are performed concurrently.
Each activity is allocated a specific amount of time, which is depicted by t. Here activity A
requires three week to get completed, activity B requires for weeks, and so on.
B.3 CPM
Critical path method is a technique that determines those activities, which have the
least scheduling flexibility (that is, critical activities). Note that if the critical activities are
delayed, the entire project is delayed. After determining these activities, CPM specifies the
project schedule according to the activities that lie on the critical path.
The advantages of using the critical path method are :
It represents the project in graphical form.
It predicts the time required to complete the project.
It specifies the critical activities.
It specifies how to speed up the project so that it is completed on schedule.
It specifies the optimal plan for speeding up the project.
You have seen how to construct an activity network. In this section you will see how
this can be used to find the critical path. This will first involve finding the earliest possible
start for each activity, by going forwards through the network. Secondly, the latest possible
start time for each activity is found by going backwards through the network. Activity
which have equal earliest and latest start time are on the critical path. The technique will be
illustrated using the ‘garage construction’ problem from section B.1 and B.1.1.
The activity network for this problem is shown below, where sufficient space is made
at each activity node to insert two numbers.
The numbers in the top half of each circle will indicate the earliest possible starting
time. So, for activities A, B and C, the number zero is inserted.
Software Engineering (MU) 1-147 Introduction
Moving forward through the network, the activity E is reached next. Since both A and
B have to be completed before E can be started, the earliest start time for E is 7. This is put
into the top half of the circle at E. The earliest times at D and G are then both 17, and for H
22. Since F cannot be started until both D and G are completed, its earliest start time is 25
and consequently 27 for I. The earliest start time for J is then 29, which gives an earliest
completion time of 32.
The vertices with equal earliest and latest starting times define the critical path. This
is clearly seen to be
AEDFIJ
Another way of identifying the critical path is to define the
Float time = latest start time – earliest start time
The information for the activities can now be summarised in the table below.
Start time
Activity Earliest Latest Float
A 0 0 0
B 0 5 5
C 0 12 12
E 7 7 0
D 17 17 0
G 17 19 2
F
25
25
0
H 22 24 2
I 27 27 0
J 29 29 0
So now you know that if there are enough workers the job can be completed in
32 days. The activities on the critical path (i.e. those with zero float time) must be started
punctually; for example. A must start immediately, E after 7 days, F after 25 days etc. For
Software Engineering (MU) 1-149 Introduction
activities with a non zero float time there is scope for varying their start times; for example
activity G can be started any time after 17, 18 or 19 days work. Assuming that all the work is
completed on time, you will see that this does indeed give a working schedule for the
construction of the garage in the minimum time of 32 days.
The difference between CPM and PERT are not fundamental, but merely of viewpoint
CPM emphasizes activities; PERT is event oriented
CPM uses arcs to represent activities; PERT uses node to specify events
PERT permits explicit treatment of probability for its time estimated; CMP does not
PERT is better suited to projects of high uncertainty; CPM is better suited to well
defined project with little uncertainty
1.19 Risk Management Planning
.MU - May 04, Oct. 04, June 05, Nov. 05, Nov. 06,
May 07, Nov. 07, May 08, Dec. 08, Dec. 09, June 10(Old).
Known : That can be uncovered after careful evaluation of project plan, business and
technical environment in which project is being developed and other reliable
information sources.
o e.g. : Unrealistic delivery date, lack of documentations, requirements or software
scope, poor development environment.
What is a risk ?
A series of activities :
Identification of risks using checklists and corporate databases.
o e.g. Pressman’s checklists
Analysis of risks to see how they affect the project
o Impact - Catastrophic, critical, marginal, negligible
o Driver - performance, support, cost, schedule
Risk prioritisation by rating
o Probability
o Impact
Planning for the likely, high impact risks :
o Avoid
o Control - plan, monitor, resolve
Does the software to be built interface with vendor supplied software products that are
unproven ?
Is a specialized user interface demanded by product requirements ?
Do requirements for the product demand the creation of program components that are
unlike any previously developed by your organization ?
Do requirements demand the use of new analysis, design, or testing methods ?
Do requirements demand the use of unconventional software development methods,
such as formal methods, AI-based approaches, artificial neural networks ?
Do requirements put excessive performance constraints on the product ?
Is the customer uncertain that the functionality requested is “do-able” ?
Other potential risks
Schedule, resources, and product definition have all been dictated by the customer or
upper management and are not in balance.
Schedule is optimistic, “best case”, rather than realistic, “expected case”.
Schedule omits necessary tasks · Schedule was based on the use of specific team
members, but those team members were not available.
Cannot build a product of the size specified in the time allocated.
Product is larger than estimated (in lines of code, function points, or percentage of
previous project’s size).
Effort is greater than estimated (per line of code, function point, module, etc.).
Re-estimation in response to schedule slips is overly optimistic or ignores project
history.
Excessive schedule pressure reduces productivity.
Target date is moved up with no corresponding adjustment to the product scope or
available resources.
A delay in one task causes cascading delays in dependent tasks, etc.
The following questions have derived from risk data obtained by surveying
experienced software project managers. The questions are ordered by their relative
importance to the success of a project.
1. Have top software and customer managers formally committed to support the project ?
Software Engineering (MU) 1-159 Introduction
The project manager identify the risk drivers that affect software risk components
performance, cost, support, and schedule. In the context of this discussion, the risk
components are defined in the following manner :
Performance risk : the degree of uncertainty that the product will meet its requirements
and be fit for its intended use.
Cost risk : the degree of uncertainty that the project budget will be maintained.
Support risk : the degree of uncertainty that the resultant software will be easy to
correct, adapt, and enhance.
Schedule risk : the degree of uncertainty that the project schedule will be maintained
and that the product will be delivered on time.
The impact of each risk driver on the risk component is divided into one of four
impact categories negligible, marginal, critical, or catastrophic
Software Engineering (MU) 1-160 Introduction
Risk projection, also called risk estimation, attempts to rate each risk in two ways : the
likelihood or probability that the risk is real and the consequences of the problems associated
with the risk, should it occur. The project planner, along with other managers and technical
Software Engineering (MU) 1-161 Introduction
Individual team members are polled in round-robin fashion until their assessment of risk
probability begins to converge.
Next, the impact of each risk is assessed. Each risk component is assessed, and an
impact category is determined. The categories for each of the four risk components
performance, support, cost, and schedule are averaged to determine an overall impact
value.
Once the first four columns of the risk table have been completed, the table is sorted by
probability and by impact. High-probability, high-impact risks percolate to the top of the
table, and low-probability risks drop to the bottom. This accomplishes first-order risk
prioritization.
The project manager studies the resultant sorted table and defines a cutoff line. The
cutoff line (drawn horizontally at some point in the table) implies that only risks that lie
above the line will be given further attention. Risks that fall below the line are
re-evaluated to accomplish second-order prioritization.
All risks that lie above the cutoff line must be managed. The column labeled RMMM
contains a pointer into Risk Mitigation, Monitoring and Management Plan or
alternatively, a collection of risk information sheets developed for all risks that lie above
the cutoff.
Risk probability can be determined by making individual estimates and then developing
a single consensus value. Risk drivers can be assessed on a qualitative probability scale
that has the following values: impossible, improbable, probable, and frequent.
Mathematical probability can then be associated with each qualitative value (e.g., a
probability of 0.7 to 1.0 implies a highly probable risk).
1. Determine the average probability of occurrence value for each risk component.
2. Determine the impact for each component based on the criteria shown.
3. Complete the risk table and analyze the results as described in the preceding sections.
The overall risk exposure (or sometimes called impact), RE, is determined using the
following relationship :
RE = PC
Software Engineering (MU) 1-165 Introduction
where P is the probability of occurrence for a risk, and C is the cost to the project
should the risk occur.
Because both factors are difficult to estimate, only the discrete scale (e.g. five-point)
may be used. The effect of the assessment may be presented in the XY diagram, where one
axis stands for probability and the other stands for potential loss (Fig.1.41).
The RE is the expected value of the loss due to a particular risk. For risk prioritization
using RE, the higher the RE, the higher the priority of the risk item.
For example, assume that the software team defines a project risk in the following
manner :
Risk identification : Only 70 percent of the software components scheduled for reuse
will, in fact, be integrated into the application. The remaining functionality will have to
be custom developed.
Risk probability : 80% (likely).
Risk impact : 60 reusable software components were planned. If only 70 percent can be
used, 18 components would have to be developed from scratch (in addition to other
custom software that has been scheduled for development). Since the 100 LOC and local
data indicate that the software engineering cost for each LOC is $14.00, the overall cost
(impact) to develop the components would be 18 100 14 = $25,200.
Risk exposure : RE = 0.80 25,200 ~ $20,200.
Software Engineering (MU) 1-166 Introduction
Risk exposure can be computed for each risk in the risk table, once an estimate of the
cost of the risk is made. The total risk exposure for all risks (above the cutoff in the risk
table) can provide a means for adjusting the final cost estimate for a project. It can also
be used to predict the probable increase in staff resources required at various points
during the project schedule.
The project team should revisit the risk table at regular intervals, re-evaluating each
risk to determine when new circumstances cause its probability and impact to change. As a
consequence of this activity, it may be necessary to add new risks to the table, remove some
risks that are no longer relevant, and change the relative positions of still others.
At this point in the risk management process, we have established a set of triplets of
the form : [ri, li, xi] where ri is risk, li is the likelihood (probability) of the risk, and xi is the
impact of the risk.
In the context of software risk analysis, a risk referent level has a single point, called
the referent point or break point, at which the decision to proceed with the project or
terminate it (problems are just too great) are equally weighted.
Therefore, during risk assessment, we perform the following steps :
1. Define the risk referent levels for the project.
Software Engineering (MU) 1-167 Introduction
2. Attempt to develop a relationship between each (ri, li, xi) and each of the referent
levels.
3. Predict the set of referent points that define a region of termination, bounded by a
curves or area of uncertainty.
4. Try to predict how compound combinations of risks will affect a referent level.
Represent the risk in condition-transition-consequence (CTC) format. That is, the risk
is stated in the following form :
Given that <condition> then there is concern that (possibly) <consequence>.
Using the CTC format for the reuse risk, we can write :
Given that all reusable software components must conform to specific design
standards and that some do not conform, then there is concern that (possibly) only 70 percent
of the planned reusable modules may actually be integrated into the as-built system,
resulting in the need to custom engineer the remaining 30 percent of components.
This general condition can be refined in the following manner :
Subcondition 1 : Certain reusable components were developed by a third party with no
knowledge of internal design standards.
Subcondition 2 : The design standard for component interfaces has not been solidified
and may not conform to certain existing reusable components.
Subcondition 3 : Certain reusable components have been implemented in a language
that is not supported on the target environment.
The consequences associated with these refined subconditions remains the same
(i.e., 30 percent of software components must be customer engineered), but the refinement
helps to isolate the underlying risks and might lead to easier analysis and response.
To mitigate this risk, project management must develop a strategy for reducing
turnover. Among the possible steps to be taken are :
Meet with current staff to determine causes for turnover (e.g., poor working conditions,
low pay, and competitive job market).
Mitigate those causes that are under our control before the project starts.
Once the project commences, assume turnover will occur and develop techniques to
ensure continuity when people leave.
Organize project teams so that information about each development activity is widely
dispersed.
Define documentation standards and establish mechanisms to be sure that documents are
developed in a timely manner.
Conduct peer reviews of all work (so that more than one person is “up to speed”).
Assign a backup staff member for every critical technologist.
As the project proceeds, risk monitoring activities commence. The project manager
monitors factors that may provide an indication of whether the risk is becoming more or less
likely. In the case of high staff turnover, the following factors can be monitored :
General attitude of team members based on project pressures.
Software Engineering (MU) 1-169 Introduction
Risk management and contingency planning assumes that mitigation efforts have
failed and that the risk has become a reality. Continuing the example, the project is well
underway and a number of people announce that they will be leaving. If the mitigation
strategy has been followed, backup is available, information is documented, and knowledge
has been dispersed across the team. In addition, the project manager may temporarily refocus
resources (and readjust the project schedule) to those functions that are fully staffed,
enabling newcomers who must be added to the team to “get up to speed.” Those individuals
who are leaving are asked to stop all work and spend their last weeks in “knowledge transfer
mode.” This might include video-based knowledge capture, the development of
“commentary documents,” and/or meeting with other team members who will remain on the
project.
RMMM Plan : Documents all work performed as part of risk analysis, and is used by
the project manager as part of the overall project plan alternatively, each risk is documented
individually using a risk information sheet (RIS).
Risk information sheet
Risk ID : P02-4-32 Date : 5/9/02 Prob : 80% Impact : high
Description :
Only 70 percent of the software components scheduled for reuse will, in fact, be integrated
into the application. The remaining functionality will have to be custom developed.
Refinement / context :
Subcondition 1 : Certain reusable components were developed by a third party with no
knowledge of integral design standards.
Subcondition 2 : The design standard for component interfaces has not been solidified and
may not conform to certain existing reusable components.
Subcondition 3 : Certain reusable components have been implemented in a language that is
not supported on the target environment.
Software Engineering (MU) 1-170 Introduction
Mitigation / monitoring :
1. Contact third party to determine conformance with design standards.
2. Press for interface standards completion; consider component structure when deciding
on interface protocol.
3. Check to determine number of components in subcondition 3 category; check to
determine if language support can be acquired.
Management / contingency plan/trigger :
RE computed to be $20,200. Allocate this amount within project contingency cost.
Develop revised schedule assuming that 18 additional components will have to be custom
built; allocate staff accordingly.
Trigger : Mitigation steps unproductive as of 7/1/02
Current status :
5/12/02 : Mitigation steps initiated.
Originator : Asmita T. Assigned : Vaishali Wadghare.
Fig. 1.43 : Risk information sheet (RIS)
1.0 Introduction
Probability and impact for risk m is described Section 2.1.2 is repeated for each of
m risks.
2.2 Risk refinement
High probability/high impact risks are refined using the CTC approach.
What contingency plans should we put into plan under the assumption that risk m
will occur ? Section 3.3 is repeated for each of m risks.
A discussion of special conditions that may trigger project critical risks and the
actions required should these conditions occur.
Software Engineering (MU) 1-172 Introduction
Mitigation
The cost associated with a late delivery is critical. A late delivery will result in a late
delivery of a letter of acceptance from the customer. Without the letter of acceptance,
the group will receive a failing grade for the course. Steps have been taken to ensure a
timely delivery by gauging the scope of project based on the delivery deadline.
Monitoring
A schedule has been established to monitor project status. Falling behind schedule
would indicate a potential for late delivery. The schedule will be followed closely
during all development stages.
Management
Late delivery would be a catastrophic failure in the project development. If the project
cannot be delivered on time the development team will not pass the course. If it
becomes apparent that the project will not be completed on time, the only course of
action available would be to request an extension to the deadline from the customer.
Mitigation
In order to prevent this from happening, the software will be developed with the end
user in mind. The user-interface will be designed in a way to make use of the program
convenient and pleasurable.
Monitoring
The software will be developed with the end user in mind. The development team will
ask the opinion of various outside sources throughout the development phases.
Specifically the user-interface developer will be sure to get a thorough opinion from
others.
Management
Should the program be resisted by the end user, the program will be thoroughly
examined to find the reasons that this is so. Specifically the user interface will be
investigated and if necessary, revamped into a solution.
Software Engineering (MU) 1-173 Introduction
Mitigation
In order to prevent this from happening, meetings (formal and informal) will be held
with the customer on a routine business. This insures that the product we are
producing, and the requirements of the customer are equivalent.
Monitoring
The meetings with the customer should ensure that the customer and our organization
understand each other and the requirements for the product.
Management
Should the development team come to the realization that their idea of the product
requirements differs from those of the customer, the customer should be immediately
notified and whatever steps necessary to rectify this problem should be taken.
Preferably a meeting should be held between the development team and the customer
to discuss at length this issue.
Mitigation
In order to prevent this from happening, the development team will be required to
learn the languages and techniques necessary to develop this software. The member
of the team that is the most experienced in a particular facet of the development tools
will need to instruct those who are not as well versed.
Monitoring
Each member of the team should watch and see areas where another team member
may be weak. Also if one of the members is weak in a particular area it should be
brought to the attention by that member, to the other members.
Management
The members who have the most experience in a particular area will be required to
help those who don’t out should it come to the attention of the team that a particular
member needs help.
Mitigation
Poor code commenting can be minimized if commenting standards are better
expressed. While standards have been discussed informally, no formal standard yet
exists. A formal written standard must be established to ensure quality of comments in
all code.
Software Engineering (MU) 1-174 Introduction
Monitoring
Reviews of code, with special attention given to comments will determine if they are
up to standard. This must be done frequently enough to control comment quality. If
they are not done comment quality could drop, resulting in code that is difficult to
maintain and update.
Management
Should code comment quality begin to drop, time must be made available to bring
comments up to standard. Careful monitoring will minimize the impact of poor
commenting. Any problems are resolved by adding and refining comments as
necessary.
1.20.1 Measurements
Schedule : By monitoring the actual schedule can we properly assess if the project is on
time or if there is a delay.
Effort : Generally effort is recorded through some on-line system (like the weekly
activity report system) which allows a person to record the amount of time spent against
a particular activity in a project. At any point, total effort on an activity can be
aggregated.
Software Engineering (MU) 1-175 Introduction
Defects : If defects found are being logged, monitoring can focus on how many defects
have been found so far, what percentage of defects are still open, and other issues.
Size : The size of delivered software can be measured in terms of LOC or function
points. At a more gross level, just the number of modules or number of features might
suffice.
Milestone analysis
Activity-level monitoring :
This type of monitoring may be done daily in project team meetings or by the project
manager checking the status of all the tasks scheduled to be completed on that day.
Status reports :
Prepared weekly to take stock of what has happened and what needs to be done.
Status reports typically contain a summary of the activities successfully completed since
the last status report, any activities that have been delayed, any issues in the project that
need attention, and if everything is in place for the next week.
Milestone analysis :
It is done at each milestone or every few weeks, if milestones are too far apart, and is
more elaborate.
Analysis of actual versus estimated for effort and schedule.
If the deviation, project managers try to understand the reasons for the variation and
apply corrective and preventive actions.
Defects found by different quality control tasks, and the numbers of defects fixed are
reported.
Software Engineering (MU) 1-176 Introduction
Once the project gets underway, the project manager has to monitor the project
continuously to ensure that it progresses as per the plan. The project manager designates
certain key events such as completion of some important activities as milestones. For
example, a milestone can be the completion and review of the SRS document, completion of
the coding and unit testing, etc. once a milestone is reached, the project manager can assume
that some measurable progress has been made. If any delay or deviation is noticeable, then
corrective actions might have to be taken. This may entail reworking all the schedules and
producing a fresh schedule.
Software Engineering (MU) 1-177 Introduction
As already mentioned, the PERT charts are especially useful in project monitoring and
control. A path in this graph is any set of consecutive nodes and edges from the stating node
to the last node. A critical path in this graph is a path along which every milestone is
critical to meeting the project timeline. In other words, if any delay occurs along a critical
path, the entire project would get delayed. It is therefore necessary to identify all the critical
paths in a schedule – adhering to the schedules of the task appearing on the critical paths is
of prime importance to meet the delivery date. The readers may note that there may be more
than one critical path in a schedule. The tasks along a critical path are called critical tasks. If
necessary, a manager may switch resources from a non critical task to a critical task so that
all milestones along the critical path are met.
Earned Value Analysis : One approach to measuring progress in a software project is
to calculate how much has been accomplished. This is called earned value analysis. It is
basically the percentage of the estimated time that has been completed. Additional measures
can be calculated.
Although this is based on estimated effort, it could be based on any quantity that can
be estimated and is related. It is basically the percentage of the estimated time that has been
completed. Additional measures can be calculated.
Although this is based on estimated effort it could be based on any quantity that can
be estimated and is related.
Basic measures
Budgeted Cost of Work (BCW) : The estimated effort for each work task.
Budgeted Cost of Work Scheduled (BCWS) : The sum of the estimated effort for each
work task that was scheduled to be completed by the specified time.
Budget at Completion (BAC) : The total of BCWS and thus the estimate of the total
effort for the project.
Planned Value (PV) : The percentage of the total estimated effort that is assigned to a
particular work task; PV=BCW/BAC.
Budgeted Cost of Work Performed (BCWP) : The sum of the estimated efforts for the
work tasks that have been completed by the specified time.
Actual Cost of Work Performed (ACWP) : The sum of the actual efforts for the work
tasks that have been completed.
Software Engineering (MU) 1-178 Introduction
Progress indicators
2 35 20 2/15/2001 2/15/2001
3 20 40 2/25/2001 3/1/2001
4 40 40 4/15/2001 4/1/2001
5 60 10 6/1/2001
6 80 20 7/1/2001
Soln. :
BCWP for 5/1/2001 is the same as BCWS in this example because the scheduled work has
been completed. Thus SPI = 145/145 = 1.
The schedule variance is 145 – 145 = 0. The cost performance index = 145/170=0.853
percent. This indicates that the actual effort is greater than the estimated effort. The cost
variance is 145 – 170 = – 25. This also indicates that more effort has been required than was
estimated.
The project appears to be on schedule but is costing more than was planned.
Ex. 1 : The project started on January 1 and should be finished by June 1. It is now
March 1. Complete the following table. Calculate EV, SPI, SV and CV. Determine
whether the project is on time. Justify your answer. Show your work.
1 30 10 0.15
2 20 30 0.10 Yes
3 50 30 0.25 Yes
4 100 5 0.50
Soln. :
BAC = 200 BCWS = 50 BCWP = 70 ACWP = 60
EV = 70/200 = 0.35 SV = 70 – 50 = 20 SPI = 70/50 = 1.4 CV = 70 – 60 = 10
The project is ahead of schedule.
Ex. 2 : Use a spreadsheet to calculate the PV and the progress indicators for the
following project at half-month intervals from January 1 through September 1.
1 30 37 1/1 2/1
2 25 24 2/15 2/15
3 30 41 3/1 3/15
4 50 47 4/15 4/1
5 60 63 5/1 4/15
6 35 31 5/15 6/1
Software Engineering (MU) 1-180 Introduction
7 55 58 6/1 6/1
8 30 28 6/15 6/15
9 45 43 7/1 7/15
10 25 29 8/1 8/15
11 45 49 8/15 9/1
Soln. :
Bcw Pv Acw Sched Actual
1 30 0.070 37 1-Jan 1-Feb
2 25 0.058 24 15-Feb 15-Feb
3 30 0.070 41 1-Mar 15-Mar
4 50 0.116 47 15-Apr 1-Apr
5 60 0.140 63 1-May 15-Apr
6 35 0.081 31 15-May 1-Jun
7 55 0.128 58 1-Jun 1-Jun
8 30 0.070 28 15-Jun 15-Jun
9 45 0.105 43 1-Jul 15-Jul
10 25 0.058 29 1-Aug 15-Aug
11 45 0.105 49 15-Aug 1-Sep
BAC 430
bcws bcwp acwp ev spi sv cpi cv
1-Jan 30 0 0 0.00 0 – 30 0 0
15-Jan 30 0 0 0.00 0 – 30 0 0
1- Feb 30 30 37 0.07 1.00 0 0.81 –7
15- Feb 55 55 61 0.13 1.00 0 0.90 –6
1-Mar 85 55 61 0.13 0.65 – 30 0.90 –6
15-Mar 85 85 102 0.20 1.00 0 0.83 – 17
1-Apr 85 135 149 0.31 1.59 50 0.91 – 14
15- Apr 135 195 212 0.45 1.44 60 0.92 – 17
Software Engineering (MU) 1-181 Introduction
Exercise
Q. 1 An extension is to be built to a sports hall. Details of the activities and given below.
Activity Time (in days)
A Lay foundations 7
B Build walls 10
C Lay drains and floor 15
D Install fittings 8
G Plaster ceiling 2
J Paint outside 3
Some of these activities cannot be started until others have been completed :
B must be after C
C must be after A
D must be after B
Software Engineering (MU) 1-182 Introduction
E must be after C
G must be after F
H must be after G
I must be after F
J must be after H
Q. 2 Find the critical paths for each of the activity networks shown below
(a)
(b)
Software Engineering (MU) 1-183 Introduction
(c)
Q. 3 Your local school decide to put on a musical. These are the many jobs to be done by
the organizing committee and the times they take :
B Rehearsals 12 weeks
S Arrange seating 1
2 days
Q. 4 A project consists of ten activities. A-J. The duration (in days) of each activity and the
activities preceding each of them are as follows.
A 10 -
B 4 -
C 8 B
D 6 C
E 8 I
F 5 -
G 10 A, D
H 2 G
I 4 -
J 10 D, F, I
Activity A B C D E F G H
Duration 4 4 3 5 4 1 6 5
Software Engineering (MU) 1-185 Introduction
B must follow A
(a) Draw an activity network in which the activities are represented by vertices.
(b) Find a critical path by inspection and write down the earliest and latest starting
times for each activity.
Q. 6 The eleven activities A to K which makes up a project are subject to the following
precedence relations.
C, F, J A 7
E B 6
- C 9
B, H D 7
C, J E 3
- F 8
A, I G 4
J H 9
E, F I 9
- J 7
B, H, I K 5
(b) Find :
(c) Calculate the float of each activity and hence determine the critical path.
Software Engineering (MU) 1-186 Introduction
Review Questions
Q. 3 How software products are classified according to the range of potential application
areas ? (Section 1.1)
Q. 4 How software products are classified according to how closely software users or
software purchasers are associated with software development ? (Section 1.1)
Q.6 What are the key objectives of software engineering are? Explain Phased development
process. (Section 1.5)
Q. 9 If the sequence of activities is provided by the Process, what is the difficulty in following
it in a Project? (Section 1.6.1)
Q. 10 What is process ? What are different types of processes ? What do you mean by
verification and validation ? (Section 1.7)
Q. 14 What are different Processes and Products of the Waterfall Model? Discuss
advantages and disadvantages of waterfall model ? (Section 1.9.1)
Q. 17 What do you mean by Prototype ? Enlist different types of prototypes ? Discuss merits
and limitation of prototype model (Section 1.9.2)
Q. 19 When to use prototype model ? What are the reasons for prototyping can also be
problematic ? (Section 1.9.2)
Q. 21 When to use Iterative enhancement model ? How it is different from prototyping and
incremental development approach ? (Section 1.9.4)
Q. 22 Explain RAD model. Discuss its advantages and disadvantages. (Section 1.9.5)
Q. 25 What are different types of projects are supported in spiral model. Discuss advantages
and limitations of spiral model ? (Section 1.9.7)
Q. 30 Explain Time Boxing model? How it is different from waterfall and iterative approach ?
(Section 1.9.10)
Q. 31 Explain Time, Effort, and Team Size in timeboxing model (Section 1.9.10)
Q. 32 How stages having unequal durations are managed in timeboxing model ? How
exceptional conditions are handled in timeboxing model ? (Section 1.9.10)
Q. 34 Timeboxing model is not suitable for what type of projects ? (Section 1.9.10)
Software Engineering (MU) 1-188 Introduction
Q. 38 What are selections Criteria for Software Process Models ? (Section 1.11)
Q. 41 Where to use / not use Agile Development ? (Sections 1.13.2 and 1.13.3)
Q. 44 Explain Team Composition and Roles in the Agile Methods. (Section 1.13.9)
Q. 47 Explain process matrices. What are private and public metrics ? (Section 1.14.2)
Q. 48 How should we use metrics during the project itself ? (Section 1.14.3)
Q. 49 What is the Difference between Direct and Indirect Measures ? (Section 1.14.4)
Q. 52 What are the primary reasons for cost and schedule estimation ? Cost in project is due
to what factors ? (Section 1.15)
Q. 61 Explain different steps that are carried out to estimate phase-wise effort.
(Section 1.15.4.3)
Q. 62 Why COCOMO II Model is developed despite of original COCOMO model has been
very successful in software estimation. (Section 1.15.5)
Q. 82 What is risk analysis? Define threat. Explain how threats are identified.
(Section 1.19.1)
Q. 86 How the risk table is created? How do we assess the consequences of a risk ?
(Sections 1.19.7 and 1.19.8)
Q. 92 What are various ways to track the project schedule ? (Section 1.20.3)
Q. 94 The software used to control a scanner requires 32,000 of C and 42,000 lines of
smalltalk. Estimate the number of function points for software inside the copier.
(Sections 1.15.2 and 1.15.3)
May 2004
Q. 1 Explain the approach used by SEI (Software Engineering Institute) to determine the
current state of process maturity of an organization. (10 Marks)
Software Engineering (MU) 1-191 Introduction
Soln. :
Level 5, optimized
Quantitative feedback systems in place to identify process weaknesses and strengthen
them.
Project teams analyze defects to determine their causes.
Software processes are evaluated and updated to prevent known types of defects.
Level 4, Managed
Detailed software process and product quality metrics establish the quantitative
evaluation foundation.
Software Engineering (MU) 1-192 Introduction
Level 3, Defined
Level 2, Repeatable
Basic project management processes are established to track cost, schedule, and
functionality.
Planning and managing new products is based on experience with similar projects.
Level 1, Initial
Q. 3 Explain how ‘Project Scheduling and Tracking’ is done for a software development
project. (Sections 1.18 and 1.20) (10 Marks)
Q. 5(a) Explain CMM and the Key Process Areas at each level. (10 Marks)
Software Engineering (MU) 1-194 Introduction
Oct. 2004
Q. 8 What is risk projection ? Explain how a risk table is developed. What is the importance
of the data entered in risk table ? (Section 1.19) (10 Marks)
June 2005
Q. 10 Explain in detail ‘Spiral Model’ with advantages and disadvantages. What is the
difference between the ‘Spiral Model’ and ‘Object Oriented Model’ ? Discuss in detail
(Sections 1.9.6 and 1.9.7) (8 Marks)
Q. 11 Explain how FP base cost estimation is carried out. (Section 1.15.3) (7 Marks)
Q. 12. Explain how process based cost estimation is carried out (Section 1.15) (5 Marks)
Nov. 2005
Q. 15 Explain in detail the water fall model with advantages and disadvantages.
(Section 1.9.1) (10 Marks)
Q. 17 Discuss how ‘Risk identification and Tracking’ is done for a software development
project. (Section 1.19) (10 Marks)
May 2006
Q. 20 Enlist and explain the steps requires to perform a cost estimation using COCOMO
model ? (Section 1.15.4) (10 Marks)
Q. 21 What are milestones ? How are they set, achieved and reviewed ? How are they used
in project monitoring ? (Sections 1.18 and 1.20) (10 Marks)
The information you gather and present in your feasibility study will help you:
List in detail all the things you need to make the business work;
Identify logistical and other business-related problems and solutions;
Develop marketing strategies to convince a bank or investor that your business is worth
considering as an investment; and
Serve as a solid foundation for developing your business plan.
Software Engineering (MU) 1-196 Introduction
Even if you have a great business idea you still have to find a cost-effective way to
market and sell your products and services. This is especially important for store-front retail
businesses where location could make or break your business.
For example, most commercial space leases place restrictions on businesses that can
have a dramatic impact on income. A lease may limit business hours/days, parking spaces,
restrict the product or service you can offer, and in some cases, even limit the number of
customers a business can receive each day.
Description of the Business : The product or services to be offered and how they will be
delivered.
Conclusions : Discusses how the business can succeed. Be honest in your assessment
because investors won’t just look at your conclusions they will also look at the data and will
question your conclusions if they are unrealistic.
Nov. 2006
Q. 26 Explain the FP based and LOC based estimation. Give its limitation.
(Section 1.15.3 and 1.15.2) (10 Marks)
Q. 27 Explain in detail Risk identification and Risk projection. (Section 1.19) (10Marks)
Software Engineering (MU) 1-197 Introduction
Q. 28 What are the advantages of Object Oriented Software Engineering. (10 Marks)
Ans. :
Encapsulation
Objects
Class and Inheritance
Instances and Instantiation
Methods and Messages
Simplicity : software objects model real world objects, so the complexity is reduced and
the program structure is very clear.
Reusability : Reusability is a desired goal of all development and is based on the
reluctance of reinventing something when it has already been invented. Objects contain
both data and functions that act on data, objects can be thought of as self-contained
"boxes" (encapsulation). This feature makes it easy to reuse code in new systems.
Messages provide a predefined interface to an object's data and functionality. If you
Software Engineering (MU) 1-198 Introduction
know this interface, you can make use on an object in any context you want. OOP
languages, such as C# , make it easy to expand on the functionality of these "boxes",
even if you don't know much about their implementation.
Increased Quality : Increases in quality are largely a by-product of this program reuse.
If 90% of a new application consists of proven, existing components, then only the
remaining 10% of the code has to be tested from scratch. That observation implies an
order-of-magnitude reduction in defects.
Faster Development : OOD (Object oriented development) leads to faster development.
Many of the claims of potentially reduced development time are correct in principle.
Maintainable : OOP methods make code more maintainable. Objects can be maintained
separately, making locating and fixing problems easier. The principles of good OOP
design contribute to an application's maintainability.
Scalable : Object oriented applications are more scalable then structured approach. As
an object's interface provides for reusing the object in new software, it also provides all
the information needed to replace the object without affecting other code. This makes it
easy to replace old and aging code with faster algorithms and newer technology.
Modularity : Object-oriented systems have a natural structure for modular design:
objects, subsystems, framework, and so on. Thus, OOD systems are easier to modify.
OOD systems can be altered in fundamental ways without ever breaking up since
changes are neatly encapsulated.
Modifiability : It is easy to make minor changes in the data representation or the
procedures in an OO program. For example, the year 2000 (Y2K) problem may have
been eliminated by identifying a date object within a system and accessing this object
when you needed to date an operation. If the date object had the state variables of month,
day and year with each defined as two-character variables, the only change that would
be necessary to correct the Y2K problem was to change the year state variable of only
the date object.
Client/Server Architecture : Client/server applications involve transmission of messages
back and forth over a network, and the object-message paradigm of OOD meshes well
with the physical and conceptual architecture of client/server applications.
Q. 29 Write notes on : Feasibility Study.
(Refer Q. 24 of May 2006) (10 Marks)
Software Engineering (MU) 1-199 Introduction
May 2007
Q. 32 Explain how project scheduling and tracking is done for a software development
project. (Sections 1.18 and 1.20) (10 Marks)
Q. 33 What is Risk Projection ? Explain Methods of Risk Mitigation and Risk Management.
(Section 1.19) (10 Marks)
Q. 35 Write notes on :
(a) Empirical Estimation Model (Section 1.16) (10 Marks)
(b) Software Project Planning. (Section 1.17) (10 Marks)
Nov. 2007
Q. 37 Explain the FP based and Loc based estimation. Give its limitation.
(Sections 1.15.2 and1.15.3) (10 Marks)
Q. 40 Explain how project scheduling and tracking is done for a software development
project. (Sections 1.18 and 1.20) (10 Marks)
May 2008
A 2
B 3
NODES C 2
D 3
E 4
F 3
G 2
H 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Duration in Weeks
Fig. Q. 1.44(b) : Gantt Chart
Software Engineering (MU) 1-201 Introduction
Q. 45 When does the project planning activity start and end in a software life cycle ? What
the important activities software project managers perform during project planning.
(Section 1.17) (10 Marks)
Q. 46 Suppose you are developing a software product in the organic mode. You have
estimated the size of the product to be 70695 lines of code, compute effort and
development time. Assuming cost of 25,000 person month calculate total cost of
product (constants ba = 2.4. bb = 1.05, bc = 2.5, bd = 0.38) (10 Marks)
Ans. :
Q. 48 Based on the following statements, identify whether this is a project, product, process
risk. Justify your identification. (10 Marks)
(i) Size of software is estimated wrong by 15%.
(ii) Critical functions and features did not get communicated to the system analyst.
(iii) Report generator’s capabilities did not conform to the promised capabilities in the product
literature.
(iv) RAD Model is selected instead of incremental.
(v) Due to work pressure, prototype not developed. (Section 1.19.1)
Q. 49 Explain different activities performed during Risk Management. Which process Model
includes Risk analysis as it’s activity. (Sections 1.19 and 1.9.7) (10 Marks)
Dec. 2008
Component Based Model and Spiral Model. (Section 1.9.6 and 1.9.7)
Q. 53 Explain how Gantt-chart can be used for planning and controlling small projects with
suitable example ? What are the limitations of Gantt-Chart ?
(Section 1.18.7.2.A) (10 Marks)
Software Engineering (MU) 1-202 Introduction
May 2009
Q. 57 Explain in detail the incremental model with the advantages and disadvantages.
(Section 1.9.3) (10 Marks)
Q. 58 What are different size oriented metrics ? Give limitations of LOC.
(Sections 1.14 and 1.9.3) (10 Marks)
Q. 59 What are different types of Feasibility Studies conducted ? Give e.g. of each when it is
not feasible. (Refer Q. 24 of May 2006) (10 Marks)
Q. 60 Draw Gantt-chart and Activity Diagram for the following task set.
Activity Dependency Duration (in Weeks)
Al — 1
A2 A 2
A3 -— 5
A4 A1, A3 2
A5 A2, A3 3
A6 A5 7
A7 A4, A6 4
Ans. :
Fig. Q. 1.60(a)
Software Engineering (MU) 1-203 Introduction
(b) Gantt-chart :
Fig. Q. 1.60(b)
Dec. 2009
Q. 62 Explain how Gantt-chart can be used for planning and controlling small projects with
example ? What are the limitations of Gantt-chart ? (Section 1.18.7.2.A) (10 Marks)
Q. 64 Explain risk identification, risk projection, RMMM plan. (Section 1.19) (10 Marks)
Q. 66 Explain in detail software project plan with examples. (Section 1.17) (10 Marks)
June 2010
Q. 73 Explain how size-oriented metrics differ from function-oriented metrics. Discuss the
pros and cons of each. (Section 1.14) (10 Marks)
Q. 74 Explain how project scheduling and tracking is done for a software development
project. (Sections 1.18 and 1.20) (10 Marks)