Unit I Full Notes
Unit I Full Notes
UNIT I
The Evolving role of Software – Software – The changing Nature of Software – Legacy software ––
A generic view of process– A layered Technology – A Process Framework – The Capability
maturity Model Integration (CMMI) – Process Assessment – Personal and Team Process Models –
Product and Process – Process Models – The Waterfall Model – Incremental Process Models –
Incremental Model – The RAD Model – Evolutionary Process Models – Prototyping – The Spiral
Model – The Concurrent Development Model – Specialized Process Models – the Unified Process.
triggered and/or accelerated by the explosive spread of the internet and most recently the web.
Computer industry has been delivering exponential improvement in price performance, but the
problems with software have not been decreasing. Software still come late, exceed budget and
are full of residual faults. As per the latest IBM report, “31% of the projects get cancelled before
they are completed, 53% over-run their cost estimates by an average of 189% and for every 100
projects, there are 94 restarts” .
SOFTWARE
Software is defined as
Instructions
- Programs that when executed provide desired function
Data structures
-Enable the programs to adequately manipulate information
Documents
-Describe the operation and use of the programs.
Definition of Engineering
-Application of science, tools and methods to find cost effective solution to problems
Definition of SOFTWARE ENGINEERING
- SE is defined as systematic, disciplined and quantifiable approach for the development,
operation and maintenance of software
Software is the set of instructions encompasses programs that execute within a computer of
any size and architecture, documents that encompass hard-copy and virtual forms, and data
that combine numbers and text. It also includes representations of pictorial, video, and audio
information. Software engineers can build the software and virtually everyone in the
industrialized world uses it either directly or indirectly. It is so important because it affects
nearly every aspect of our lives and has become pervasive in our commerce, our culture, and
our everyday activities. The steps to build the computer software is as the user would like to
build any successful product, by applying a process that leads to a high-quality result that
meets the needs of the people who will use the product. From the software engineer’s view, the
product is may be the programs, documents, and data that are computer software. But from
the user’s viewpoint, the product is the resultant information that somehow makes the user’s
world better. Software’s impact on the society and culture continues to be profound. As its
importance grows, the software community continually attempts to develop technologies that
will make it easier, faster, and less expensive to build high-quality computer programs. Some of
these technologies are targeted at a specific application domain like web-site design and
implementation; others focus on a technology domain such as object oriented systems and still
others are broad-based like operating systems such as LINUX. However, a software technology
has to develop useful information. The technology encompasses a process, a set of methods,
and an array of tools called as software engineering.
LEGACY SOFTWARE
Legacy software are older programs that are developed decades ago. The quality of legacy
software is poor because it has inextensible design, convoluted code, poor and nonexistent
documentation, test cases and results that are not achieved.
• Support core business functions
• Have longevity and business criticality
The foundation for S/W eng is the process layer. It is the glue that holds the technology layers
together and enables rational and timely development of computer S/W.
Process defines a framework that must be established for effective delivery of S/W eng
technology.
The software process forms the basis for management control of software projects and
establishes the context in which technical methods are applied, work products (models,
documents, data, reports, etc.) are produced, milestones are established, quality is
ensured, and change is properly managed.
S/W eng methods provide the technical “how to’s” for building S/W. Methods
encompass a broad array of tasks that include communication, req. analysis, design,
coding, testing and support.
S/W eng tools provide automated or semi-automated support for the process and the
methods.
When tools are integrated so that info. Created by one tool can be used by another, a
system for the support of S/W development called computer-aided software engineering
is established.
A PROCESS FRAMEWORK
Software process models can be prescriptive or agile, complex or simple, all-encompassing or
targeted, but in every case, five key activities must occur. The framework activities are
applicable to all projects and all application domains, and they are a template for every process
model.
Software process
Process framework
Umbrella activities
Framework activity #1
Software Engineering action
Each framework activity is populated by a set of S/W eng actions – a collection of related tasks
that produces a major S/W eng work product (design is a S/W eng action). Each action is
populated with individual work tasks that accomplish some part of the work implied by the
action.
The following generic process framework is applicable to the vast majority of S/W projects.
Communication: involves heavy communication with the customer (and other
stakeholders) and encompasses requirements gathering.
Planning: Describes the technical tasks to be conducted, the risks that are likely,
resources that will be required, the work products to be produced and a work schedule.
Modeling: encompasses the creation of models that allow the developer and customer to
better understand S/W req. and the design that will achieve those req.
Construction: combines code generation and the testing required uncovering errors in
the code.
Deployment: deliver the product to the customer who evaluates the delivered product
and provides feedback.
Each S/W eng action is represented by a number of different task sets – each a collection of
S/W eng work tasks, related work products, quality assurance points, and project milestones.
The task set that best accommodates the needs of the project and the characteristics of the
team is chosen.
The framework described in the generic view of S/W eng is complemented by a number of
umbrella activities. Typical activities include:
S/W project tracking and control: allows the team to assess progress against the
project plan and take necessary action to maintain schedule.
Risk Management: Assesses the risks that may affect the outcome of the project or the
quality.
Software quality assurance: defines and conducts the activities required to ensure
software quality.
Formal Technical Review: uncover and remove errors before they propagate to the next
action.
Measurement: defines and collects process, project, and product measures that assist
the team in delivering S/W that meets customers’ needs.
The Software Engineering Institute (SEI) has developed a comprehensive process meta-
model that is predicated on a set of system and software eng capabilities that should be
present as organizations reach different levels of process capability and maturity.
The CMMI defines each process area in terms of “specific goals” and the “specific
practices” required to achieve these goals.
Specific goals establish the characteristics that must exist if the activities implied by a
process area are to be effective.
Specific practices refine a goal into a set of process-related activities.
PROCESS ASSESSMENT
The process should be assessed to ensure that it meets a set of basic process criteria that have
been shown to be essential for a successful software engineering. This is used by industry
professionals.
The PSP model is good from the perspective that an individual software engineer can use it to
improve his or her personal productivity and work product quality. Both models are largely
iterative or evolutionary in their approach to software development. PSP and TSP are
interesting, but are not pivotal to an understanding of process issues. A key point of this
section is that individuals and teams should measure their work and the errors they make and
act to improve their approach so that the causes of errors are eliminated.
PROCESS MODELS
The classical waterfall model is intuitively the most obvious way to develop
software. Though the classical waterfall model is elegant and intuitively obvious,
it is not a practical model in the sense that it can not be used in actual software
development projects. Thus, this model can be considered to be a theoretical way
of developing software. But all other life cycle models are essentially derived from
the classical waterfall model. So, in order to be able to appreciate other life cycle
models it is necessary to learn the classical waterfall model.
Classical waterfall model divides the life cycle into the following phases as shown
in fig.
Feasibility Study
The main aim of feasibility study is to determine whether it would be financially
and technically feasible to develop the product.
� At first project managers or team leaders try to have a rough
understanding of what is required to be done by visiting the client side. They
study different input data to the system and output data to be produced by the
system. They study what kind of processing is needed to be done on these data
and they look at the various constraints on the behavior of the system.
Design
The goal of the design phase is to transform the requirements specified in
the SRS document into a structure that is suitable for implementation in some
programming language. In technical terms, during the design phase the software
architecture is derived from the SRS document. Two distinctly different
approaches are available: the traditional design approach and the object-oriented
design approach.
� Traditional design approach
Traditional design consists of two different activities; first a structured
analysis of the requirements specification is carried out where the detailed
structure of the problem is examined. This is followed by a structured design
activity. During structured design, the results of structured analysis are
transformed into the software design.
� Object-oriented design approach
In this technique, various objects that occur in the problem domain and the
solution domain are first identified, and the different relationships that exist
among these objects are identified. The object structure is further refined to
obtain the detailed design.
During this phase, each module is unit tested to determine the correct
working of all the individual modules. It involves testing each module in isolation
as this is the most efficient way to debug the errors identified at this stage.
Maintenance
Maintenance of a typical software product requires much more than the
effort necessary to develop the product itself. Many studies carried out in the
past confirm this and indicate that the relative effort of development of a typical
software product to its maintenance effort is roughly in the 40:60 ratio.
Maintenance involves performing any one or more of the following three kinds of
activities:
� Correcting errors that were not discovered during the product
development phase. This is called corrective maintenance.
� Improving the implementation of the system, and enhancing the
functionalities of the system according to the customer’s requirements. This is
called perfective maintenance.
� Porting the software to work in a new environment. For example, porting
may be required to get the software to work on a new computer platform or with
a new operating system. This is called adaptive maintenance.
The process models in this category tend to be among the most widely used (and
effective) in the industry.
increment # n
Co m m u n i c a t i o n
Pla nning
M ode ling
analy s is Co n s t ru c t i o n
des ign
c ode De p l o y m e n t
t es t d e l i v e ry
fe e dba c k
deliv ery of
nt h increment
increment # 2
Co m m u n i c a t i o n
Pla nning
M ode ling
analy s is Co n s t ru c t i o n
des ign c ode De p l o y m e n t
t es t d e l i v e ry
fe e dba c k
deliv ery of
increment # 1 2nd increment
Co m m u n i c a t i o n
Pla nning
M ode ling
analy s is Co n s t ru c t i o n
des ign c ode De p l o y m e n t
t es t d e l i v e ry deliv ery of
fe e dba c k
1st increment
When an increment model is used, the 1st increment is often a core product. The
core product is used by the customer.
As a result of use and / or evaluation, a plan is developed for the next increment.
The plan addresses the modification of the core product to better meet the needs of
the customer and the delivery of additional features and functionality.
The process is repeated following the delivery of each increment, until the complete
product is produced.
If requirements are well understood and project scope is constrained, the RAD process
enables a development team to create a fully functional system within a short period of
time.
Mr. John Blesswin Page 14
Software Engineering Unit-I
1. For large, but scalable projects, RAD requires sufficient human resources to
create the right number of RAD teams.
Co n st ru ct io n
com ponent reuse
Team # 2 autom atic code
Communicat ion generation
testing
Modeling
business m odeling
dat a m odeling
process m odeling
Planning
Const ruct ion Deployment
Team # 1 com ponent reuse int egrat ion
aut om at ic code
generat ion
delivery
Modeling t est ing feedback
business modeling
dat a modeling
process modeling
60 - 90 days
Software evolves over a period of time; business and product requirements often change
as development proceeds, making a straight-line path to an end product unrealistic.
Software Engineering needs a process model that has been explicitly designed to
accommodate a product that evolves over time. Evolutionary process models are
iterative. They produce increasingly more complete versions of the Software with each
iteration.
a. Prototyping
Customers often define a set of general objectives for Software, but doesn’t identify
detailed input, processing, or input requirements. Prototyping paradigm assists the
Software engineering and the customer to better understand what is to be built when
requirements are fuzzy.
Q u i ck p l an
Co m m u n icat io n
Mo d e l i n g
Q u i ck d e si g n
Deployment
De live r y
& Fe e d b ack Co n st r u ct io n
of
p r o t o t yp e
The prototyping paradigm begins with communication where requirements and goals of
Software are defined. Prototyping iteration is planned quickly and modeling in the form
of quick design occurs. The quick design focuses on a representation of those aspects of
the Software that will be visible to the customer “Human interface”. The quick design
leads to the Construction of the Prototype.
The prototype is deployed and then evaluated by the customer. Feedback is used to
refine requirements for the Software. Iteration occurs as the prototype is tuned to
satisfy the needs of the customer, while enabling the developer to better understand
what needs to be done. The prototype can serve as the “first system”. Both customers
and developers like the prototyping paradigm as users get a feel for the actual system,
and developers get to build Software immediately. Yet, prototyping can be problematic:
The key is to define the rules of the game at the beginning. The customer and the
developer must both agree that the prototype is built to serve as a mechanism for
defining requirements.
The spiral model is an evolutionary Software process model that couples the iterative
nature of prototyping with the controlled and systematic aspects of the waterfall model.
The first circuit around the spiral might result in the development of a product
specification; subsequent passes around the spiral might be used to develop a
prototype and then progressively more sophisticated versions of the Software. Each
pass through the planning region results in adjustments to the project plan. Cost and
schedule are adjusted based on feedback derived from the customer after delivery.
Unlike other process models that end when Software is delivered, the spiral model can
be adapted to apply throughout the life of the Software.
planning
es tim ation
s cheduling
ris k analys is
communication
modeling
analys is
des ign
start
deployment
construction
delivery
code
feedback tes t
none
represent s t he st at e
Under of a sof t ware eng ineering
act ivit y or t ask
development
A wait ing
changes
Under review
Under
revision
Baselined
Done
The Formal Methods Model encompasses a set of activities that leads to formal
mathematical specifications of Software. Formal methods enable a Software engineer to
specify, develop, and verify a computer-based system by applying a rigorous,
mathematical notation. A variation of this approach, called clean-room Software
engineering is currently applied by some software development organizations.
Although not a mainstream approach, the formal methods model offers the promise of
defect-free Software. Yet, concern about its applicability in a business environment has
been voiced:
B/C few software developers have the necessary background to apply formal
methods, extensive training is required.
The figure below depicts the phases of the UP and relates them to the generic activities.
Ela b o r a t io n
Inc e p t io n
c o nst r uc t io n
Release
t r a nsit io n
soft ware increment
p r o d uc t io n
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.
The transition phase of the UP encompasses the latter stages of the generic construction
activity and the first part of the generic deployment 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 “user manuals, trouble-shooting guides, and installation procedures.)
The production phase of the UP coincides with the development activity of the generic
process. The on-going use of the software is monitored, support for the operating
environment is provided and defect reports and requests for changes are submitted and
evaluated.
UP Phases
Incept ion Elaborat ion Const ruct ion Transit ion Product ion
Workflows
Requirements
Analysis
Design
Implementation
Test
Support
Iterations #1 #2 #n-1 #n