Unit 1
Unit 1
Today, software takes on a dual role. It is a product and, at the same time, the
vehicle for delivering a product. As a product, it delivers the computing potential
embodied by computer hardware or, more broadly, a network of computers that
are accessible by local hardware. Whether it resides within a cellular phone or
operates inside a mainframe computer, software is an information transformer—
producing, managing, acquiring, modifying, displaying, or transmitting
information that can be as simple as a single bit or as complex as a multimedia
presentation.
As the vehicle used to deliver the product, software acts as the basis for the
control of the computer (operating systems), the communication of information
(networks), and the creation and control of other programs (software tools and
environments). Software delivers the most important product of our time—
information.
. The role of computer software has undergone significant change over a time
span of little more than 50 years. Dramatic improvements in hardware
performance, profound changes in computing architectures, vast increases in
memory and storage capacity, and a wide variety of exotic input and output
options have all precipitated more sophisticated and complex computer-based
systems. The lone programmer of an earlier era has been replaced by a team of
software specialists, each focusing on one part of the technology required to
deliver a complex application.
Software Myths
Software myths are misleading attitudes that have caused serious problems
for managers and technical people alike. Software myths propagate
misinformation and confusion. There are three kinds of software myths:
1) Management myths:
Managers with software responsibility are often under pressure to maintain
budgets, keep schedules from slipping, and improve quality. Following are
the management myths:
Myth:
We already have a book that’s full of standards and procedures for
building software, won’t that provide my people with everything they need
to know?
Reality:
The book of standards may very well exist, but isn’t used. Most software
practitioners aren’t aware of its existence. Also, it doesn’t reflect modern
software engineering practices and is also complete.
Myth:
My people have state-of-the-art software development tools, after all, we
buy them the newest computers.
Reality:
It takes much more than the latest model mainframe, workstation, or PC to
do high-quality software development. Computer-aided software
engineering (CASE) tools
are more important than hardware for achieving good quality and
productivity, yet the majority of software developers still do not use them
effectively.
Myth:
If we get behind schedule, we can add more programmers and catch up
(sometimes called the Mongolian horde concept).
Reality:
Software development is not a mechanistic process like manufacturing. As
new people are added, people who were working must spend time
educating the newcomers, thereby reducing the amount of time spent on
productive development effort. People can be added but only in a planned
and well-coordinated manner.
Myth:
If I decide to outsource the software project to a third party, I can just relax
and let that firm build it.
Reality:
If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it outsources
software projects.
2) Customer myths:
Customer myths lead to false expectations (by the customer) and
ultimately, dissatisfaction with the developer. Following are the
customer myths:
Myth:
A general statement of objectives is sufficient to begin writing programs-
we can fill in the details later.
Reality:
A poor up-front definition is the major cause of failed software efforts. A
formal and detailed description of the functions, behavior, performance,
interfaces, design constraints, and validation criteria is essential.
Myth:
Project requirements continually change, but change can be easily
accommodated because software is flexible.
Reality
: It is true that software requirements change, but the impact of change
varies with the time at which it is introduced. When changes are
requested during software design, the cost impact grows rapidly.
Resources have been committed and a design framework has been
established. Change can cause heavy additional costs. Change, when
requested after software is in production, can be much more expensive
than the same change requested earlier.
3) Practitioner’s myths:
Practitioners have following myths:
Myth
: Once we write the program and get it to work, our job is done.
Reality:
Industry data indicate that between 60 and 80 percent of all effort
expended on software will be expended after it is delivered to the
customer for the first time.
Myth:
Until I get the program “running” I have no way of assessing its quality.
Reality:
One of the most effective software quality assurance mechanisms can
be applied from the inception of a project—the formal technical review.
Objectives of CMMI :
1. Fulfilling customer needs and expectations.
2. Value creation for investors/stockholders.
3. Market growth is increased.
4. Improved quality of products and services.
5. Enhanced reputation in Industry.
CMMI Representation – Staged and Continuous :
A representation allows an organization to pursue a different set of
improvement objectives. There are two representations for CMMI :
Staged Representation :
uses a pre-defined set of process areas to define improvement
path.
provides a sequence of improvements, where each part in the
sequence serves as a foundation for the next.
an improved path is defined by maturity level.
maturity level describes the maturity of processes in organization.
Staged CMMI representation allows comparison between different
organizations for multiple maturity levels.
Continuous Representation :
allows selection of specific process areas.
uses capability levels that measures improvement of an individual
process area.
Continuous CMMI representation allows comparison between
different organizations on a process-area-by-process-area basis.
allows organizations to select processes which require more
improvement.
In this representation, order of improvement of various processes
can be selected which allows the organizations to meet their
objectives and eliminate risks.
CMMI Model – Maturity Levels :
In CMMI with staged representation, there are five maturity levels described as
follows :
1. Maturity level 1 : Initial
processes are poorly managed or controlled.
unpredictable outcomes of processes involved.
ad hoc and chaotic approach used.
No KPAs (Key Process Areas) defined.
Lowest quality and highest risk.
2. Maturity level 2 : Managed
requirements are managed.
processes are planned and controlled.
projects are managed and implemented according to their
documented plans.
This risk involved is lower than Initial level, but still exists.
Quality is better than Initial level.
3. Maturity level 3 : Defined
processes are well characterized and described using standards,
proper procedures, and methods, tools, etc.
Medium quality and medium risk involved.
Focus is process standardization.
4. Maturity level 4 : Quantitatively managed
quantitative objectives for process performance and quality are set.
quantitative objectives are based on customer requirements,
organization needs, etc.
process performance measures are analyzed quantitatively.
higher quality of processes is achieved.
lower risk
5. Maturity level 5 : Optimizing
continuous improvement in processes and their performance.
improvement has to be both incremental and innovative.
highest quality of processes.
lowest risk in processes and their performance.
CMMI Model – Capability Levels
A capability level includes relevant specific and generic practices for a specific
process area that can improve the organization’s processes associated with
that process area. For CMMI models with continuous representation, there are
six capability levels as described below :
1. Capability level 0 : Incomplete
incomplete process – partially or not performed.
one or more specific goals of process area are not met.
No generic goals are specified for this level.
this capability level is same as maturity level 1.
2. Capability level 1 : Performed
process performance may not be stable.
objectives of quality, cost and schedule may not be met.
a capability level 1 process is expected to perform all specific and
generic practices for this level.
only a start-step for process improvement.
3. Capability level 2 : Managed
process is planned, monitored and controlled.
managing the process by ensuring that objectives are achieved.
objectives are both model and other including cost, quality,
schedule.
actively managing processing with the help of metrics.
4. Capability level 3 : Defined
a defined process is managed and meets the organization’s set of
guidelines and standards.
focus is process standardization.
5. Capability level 4 : Quantitatively Managed
process is controlled using statistical and quantitative techniques.
process performance and quality is understood in statistical terms
and metrics.
quantitative objectives for process quality and performance are
established.
6. Capability level 5 : Optimizing
focuses on continually improving process performance.
performance is improved in both ways – incremental and
innovation.
emphasizes on studying the performance results across the
organization to ensure that common causes or issues are identified and
fixed.
Template :
Pattern Name –
Meaningful name must be given to a pattern within context of software
process (e.g. Technical Reviews).
Forces –
The issues that make problem visible and may affect its solution also
environment in which pattern is encountered.
Type :
It is of three types :
1. Stage pattern –
Problems associated with a framework activity for process are described by
stage pattern. Establishing Communication might be an example of a staged
pattern. This pattern would incorporate task pattern Requirements Gathering
and others.
2. Task-pattern –
Problems associated with a software engineering action or work task and
relevant to successful software engineering practice (e.g., Requirements
Gathering is a task pattern) are defined by task-pattern.
3. Phase pattern –
Even when the overall flow of activities is iterative in nature, it defines
sequence of framework activities that occurs within process. Spiral Model or
Prototyping might be an example of a phase pattern.
Initial Context :
Conditions under which the pattern applies are described by initial context. Prior
to the initiation of the pattern :
1. What organizational or term-related activities have already occurred?
2. Entry state for the process?
3. Software engineering information or project information already exists?
For example, the Planning pattern requires that :
Collaborative communication has been established between customers
and software engineers.
Successful completion of a number of task patterns for the
communication pattern has occurred.
The project constraints, basic requirements, and the project scope are
known.
Problem :
Any specific problem is to be solved by pattern.
Solution –
Describes how to implement pattern successfully. This section describes how
initial state of process is modified as a consequence of initiation of pattern.
Resulting Context :
Once the pattern has been successfully implemented, it describes conditions.
Upon completion of pattern :
1. Organizational or term-related activities must have occurred?
2. What should be the exit state for the process?
3. What software engineering information has been developed?
Related pattern :
Provide a list of all process patterns that are directly related to this one. It can
be represented n a hierarchy or in some other diagrammatic form.
Known uses and Examples –
In which the pattern is applicable, it indicates the specific instances. For
example, communication is mandatory at the beginning of every software
project, is recommended throughout the software project, and is mandatory
once the deployment activity is underway.
Planning. This activity isolates requirements and develops both size and
resource estimates. In addition, defects estimate (the number of defects
projected for the work) is made. All metrics are recorded on worksheets or
templates. Finally, development tasks are identified and a project schedule is
created.
High level design. External specifications for each component to be
constructed are developed and a component design is created. Prototypes are
built when uncertainty exists. All issues are recorded and tracked.
High level design review. Formal verification methods are applied to uncover
errors in the design. Metrics are maintained for all important tasks and work
results.
Development. The component level design is refined and reviewed. Code is
generated, reviewed, compiled, and tested. Metrics are maintained for all
important tasks and work results.
Postmortem. Using the measures and metrics collected, the effectiveness of
the process is determined. Measures and metrics should provide guidance for
modifying the process to improve its effectiveness.
PSP stresses the need to identify errors early and, just as important, to understand the
types of errors that you are likely to make. PSP represents a disciplined, metrics based
approach to software engineering that may lead to culture shock for many
practitioners.
Build self directed teams that plan and track their work, establish goals, and
own their processes and plans. These can be pure software teams or integrated
product teams (IPTs) of 3 to about 20 engineers.
Show managers how to coach and motivate their teams and how to help them
sustain peak performance
Accelerate software process improvement by making CMM23 Level 5 behavior
normal and expected.
Provide improvement guidance to high-maturity organizations.
Facilitate university teaching of industrial-grade team skills.
project launch,
implementation,
postmortem.
Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
Requirements analysis and specification, design, implementation, and unit testing,
integration and system testing, and operation and maintenance. The steps always follow
in this order and do not overlap. The developer must complete every phase before the
next phase begins. This model is named "Waterfall Model", because its diagrammatic
representation resembles a cascade of waterfalls.
. Requirements analysis and specification phase: The aim of this phase is to understand the
exact requirements of the customer and to document them properly. Both the customer and the
software developer work together so as to document all the functions, performance, and
interfacing requirement of the software. It describes the "what" of the system to be produced
and not "how."In this phase, a large document called Software Requirement Specification
(SRS) document is created which contained a detailed description of what the system will do in
the common language.
Design Phase: This phase aims to transform the requirements gathered in the SRS into
a suitable form which permits further coding in a programming language. It defines the
overall software architecture together with high level and detailed design. All this work
is documented as a Software Design Document (SDD).
3. Implementation and unit testing: During this phase, design is implemented. If the
SDD is complete, the implementation or coding phase proceeds smoothly, because all
the information needed by software developers is contained in the SDD.
4. Integration and System Testing: This phase is highly crucial as the quality of the
end product is determined by the effectiveness of the testing carried out. The better
output will lead to satisfied customers, lower maintenance costs, and accurate results.
Unit testing determines the efficiency of individual modules. However, in this phase, the
modules are tested for their interactions with each other and with the system.
1. Communication
In this phase, developer and customer meet and discuss the overall objectives
of the software.
2. Quick design
Quick design is implemented when requirements are known.
It includes only the important aspects like input and output format of the
software.
It focuses on those aspects which are visible to the user rather than the
detailed plan.
It helps to construct a prototype.
3. Modeling quick design
This phase gives the clear idea about the development of software
because the software is now built.
It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
NOTE: The description of the phases of the spiral model is same as that of the
process model.
It suggests a process flow that is iterative and incremental, providing the evolutionary
feel that is essential in modern software development.
Inception
Elaboration
Conception
Transition
Production
The elaboration phase encompasses the communication and modeling activities of the
generic process model.
Elaboration refines and expands the preliminary use cases that were developed as part
of the inception phase and expands the architectural representation to include five
different views of the software the use case model, the requirements model, the design
model, the implementation model, and the deployment model.
The construction phase of the UP is identical to the construction activity defined for
the generic software process. Using the architectural model as input, the construction
phase develops or acquires the software components that will make each use case
operational for end users.
To accomplish this, requirements and design models that were started during the
elaboration phase are completed to reflect the final version of the software increment.
All necessary and required features and functions for the software increment (the
release) are then implemented in source code.
The transition phase of the UP encompasses the latter stages of the generic
construction activity and the first part of the generic deployment (delivery and
feedback) activity.
Software is given to end users for beta testing and user feedback reports both defects
and necessary changes. At the conclusion of the transition phase, the software
increment becomes a usable software release.
The production phase of the UP coincides with the deployment activity of the generic
process. During this phase, the ongoing use of the software is monitored, support for
the operating environment (infrastructure) is provided, and defect reports and requests
for changes are submitted and evaluated.