Unit - I
Unit - I
Chapter-1
INTRODUCTION TO SOFTWARE ENGINEERING
Unit-I
Unit-1 Objective:
To introduce software engineering and to explain its importance
To set out the answers to key questions about software engineering
To introduce ethical and professional issues and to explain why they are of concern to
software engineers
5. Software is the collection of computer programs, procedures, Rules and associate with
documentation and data.
Software can be considered in a dual role (Product and a vehicle for delivering a Product)
1. Software is a product
Delivers computing potential
Produces, manages, acquires, modifies, displays, or transmits information
Here are the some more definitions in popular books published during the 1970s and 1980s
provide useful historical insight into the changing perception of computers and software and their
impact on
our culture.
Application Software:
Application Software consists of standalone programs that solve a specific business need.
Ex:(Point on sales transaction processing, Billing system in shopping mals.)
Embedded Software:
Embedded Software resides in read only memory and is used to control products and
systems for the consumer and industrial markets. It has very limited and mysterious
functions and control capability.
Product-line Software:
It is designed to provide a specific facility for use by many different customers.
Ex:(Inventory control products, word processing, spread sheets, graphics, multimedia etc.,)
Business Software:
Business information processing is the largest single software application area. Discrete
"systems" have evolved into management information system (MIS) software that accesses
one or more large databases containing business information. Applications in this area
restructure existing data in a way that facilitates business operations or management
decision making.
Ex:(payroll, accounts receivable/payable, inventory)
1.4 Software Myths:
Management myths:
Managers with software responsibility, like managers in most disciplines, are often under
pressure to maintain budgets, keep schedules from slipping, and improve quality.
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 is it used? Are software practitioners aware
of its existence? Does it reflect modern software engineering practice? Is it complete? Is it
streamlined to improve time to delivery while still maintaining a focus on quality? In many
cases, the answer to all of these questions is "no."
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. In the words of. At
first, this statement may seem counterintuitive. However, 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 outsource3 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.
Customer Myths:
Customers may be defined as follows:
An outside company that has requested software under contract.
A person next to your desk.
A technical group.
A marketing or sales group.
Customer Myths lead to false expectations (by the customer) and ultimately, dissatisfaction with the
developer.
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 information domain, function, behavior, performance, interfaces, design
constraints, and validation criteria is essential. These characteristics can be determined only after
thorough communication between customer and developer.
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. The customer can review requirements and recommend modifications with
relatively little impact on cost. 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 upheaval that requires additional resources and major design modification, that
is, additional cost. Changes in function, performance, interface, or other characteristics during
implementation (code and test) have a severe impact on cost. Change, when requested after
software is in production, can be over an order of magnitude more expensive than the same change
requested earlier.
Practitioner's Myths:
A Practitioner may be planning group, Developmet group, Verification group, Support group,
Marketing/Sales.
Myth: Once we write the program and get it to work, our job is done.
Reality: Someone once said that "the sooner you begin 'writing code', the longer
it'll take you to get done." 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. Software reviews are a "quality filter" that have
been found to be more effective than testing for finding certain classes of software defects.
Myth: The only deliverable work product for a successful project is the working program.
Reality: A working program is only one part of a software configuration that includes many
elements. Documentation provides a foundation for successful engineering and, more important,
guidance for software support.
Myth: Software engineering will make us create voluminous and unnecessary documentation
and will invariably slow us down.
Reality: Software engineering is not about creating documents. It is about creating quality. Better
quality leads to reduced rework. And reduced rework results in faster delivery times.
Chapter-2
A GENERIC VIEW OF PROCESS
Introduction: Before going to know about Software Engineering it is important to examine the
characteristics of software that make it different from other things that human beings build.
Let us know the difference between hardware and software, when hardware is built, the human
creative process (analysis, design, construction, testing) is ultimately translated into a physical form.
For example if we build a new computer, our initial sketches, formal design drawings, and
breadboarded prototype evolve into a physical product (chips, circuit boards, power supplies, etc.).
Therefore, software has characteristics that are considerably different than those of
hardware:
3. Althogh the industry is moving toward component-based assembly, most software continues
to be custome built.
In the hardware world, component reuse is a natural part of the engineering process. In
the software world, it is something that has only begun to be achieved on a broad scale.
A software component should be designed and implemented so that it can be reused in
many different programs.
In the 1960s, we built scientific subroutine libraries that were reusable in a broad array
of engineering and scientific applications. These subroutine libraries reused well-defined
algorithms in an effective manner but had a limited domain of application.
Today, we have extended our view of reuse to encompass not only algorithms but also
data structure. Modern reusable components encapsulate both data and the processing
applied to the data, enabling the software engineer to create new applications from
reusable parts.
For example, today's graphical user interfaces are built using reusable components that
enable the creation of graphics windows, pull-down menus, and a wide variety of
interaction mechanisms.
The data structure and processing detail required to build the interface are contained
with a library of reusable components for interface construction.
A number of task sets—each a collection of software engineering work tasks, project milestones,
work products, and quality assurance points—enable the framework activities to be adapted to the
characteristics of the software project and the requirements of the project team.
Finally, umbrella activities—such as software quality assurance, software configuration
management, and measurement—overlay the process model.
Umbrella activities are independent of any one framework activity and occur throughout
the process.
Framework Activities:
A common process framework is established by defining a small number of framework
activities that are applicable to all software projects, regardless of their size or complexity.
A number of task sets—each a collection of software engineering work tasks, project
milestones, work products, and quality assurance points—enable the framework activities to
be adapted to the characteristics of the software project and the requirements of the project
team.
Umbrella Activities:
Umbrella activities such as software quality assurance, software configuration management,
and measurement
Umbrella activities are independent of any one framework activity and occur throughout
the process.
There has been a significant emphasis on "process maturity".
Software requirements management
Software project planning
Software project tracking and oversight
Software quality assurance
Software configuration management
Software subcontract management
Formal technical reviews
Risk management
Measurement – process, project, product
Reusability management (component reuse)
Work product preparation and production
Capability Maturity Model Integration (CMMI) is a process improvement approach that helps
organizations improve their performance. CMMI can be used to guide process improvement across
a project, a division, or an entire organization.
According to the Software Engineering Institute (SEI, 2008), CMMI helps "integrate traditionally
separate organizational functions, set process improvement goals and priorities, provide guidance
for quality processes, and provide a point of reference for appraising current processes."
Level 1: Initial. The software process is characterized as ad hoc and occasionally even chaotic.
Few processes are defined, and success depends on individual effort.
Level 2: Manageable. Basic project management processes are established to track cost, schedule,
and functionality. The necessary process discipline is in place to repeat earlier successes on projects
with similar applications.
Level 3: Defined. The software process for both management and engineering activities is
documented, standardized, and integrated into an organizationwide software process. All projects
use a documented and approved version of the organization's process for developing and supporting
software. This level includes all characteristics defined for level 2.
Level 4: Quantitatively Managed. Detailed measures of the software process and product quality
are collected. Both the software process and products are quantitatively understood and controlled
using detailed measures. This level includes all characteristics defined for level 3.
Software
Process
Is examined
by Identifies
Identifies modification SPA Capabilities and
To SPA Software
Process risk of SP
Assessment
Leads Leads to
to
Software Capability
Process Determinatio
Improvement n
Motivates
The Personal Software Process (PSP) is a structured software development process that is
intended to help software engineers understand and improve their performance, by using a
"disciplined, data-driven procedure". The PSP was created by Watts Humphrey to apply the
underlying principles of the Software Engineering Institute's (SEI) Capability Maturity
Model (CMM) to the software development practices of a single developer. It claims to give
software engineers the process skills necessary to work on a Team Software Process (TSP) team.
"Personal Software Process" and "PSP" are registered service marks of the Carnegie Mellon
University.
PSP has been likened to applying Six Sigma toward Software development. Mukesh Jain led large
scale deployment of PSP/TSP in Microsoft India. Within 6 months, more than 2/3 of the projects
shipped were without any defects and 94% of the projects were delivered on time
The TSP is intended to improve the levels of quality and productivity of a team's software
development project, in order to help them better meet the cost and schedule commitments of
developing a software system.
The initial version of the TSP was developed and piloted by Watts Humphrey in the late 1990s and
the Technical Report for TSP sponsored by the U.S. Department of Defense was published in
November 2000. The book by Watts Humphrey, Introduction to the Team Software Process,
presents a view the TSP intended for use in academic settings, that focuses on the process of
building a software production team, establishing team goals, distributing team roles, and other
teamwork-related activities.
Chapter-3
PROCESS MODELS
Objectives:
To introduce software engineering and to explain its importance
To set out the answers to key questions about software engineering
To introduce ethical and professional issues and to explain why they are of concern to
software engineers
Introduction: A process model specifies a general process, usually as a set of stages in which a
project should be divided, the order in which the stages should be executed, any other constraints
and conditions on the execution of stages.
All software development can be characterized as a problem solving loop in which four distinct
stages are encountered:
1. Status quo
2. Problem definition
3. Technical development
4. Solution integration
1. Status quo:
It represents the current state of affairs.
2. Problem definition
Identifies the specific problem to be solved and defines them.
3. Technical development
Solves the problem through the application of some technology.
4. Solution integration
It applies the solution and delivers the results.
Ex: documents, programs, data, new business function, new product.
This waterfall model is also termed as linear sequential model. Linear ordering of activities has
some important consequences. First, to clearly identify the end of a phase and the beginning of the
next, some certification mechanism has to be employed at the end of each phase. This is usually
done by some verificatin and validation means that will ensure that output of a phase is consistent
with its input, and that the output of the phase is consistent with the overall requirements f the
system.
Waterfall model suggests a systematic, sequential approach to software development that begins at
the system level and progress through different phases like:
1. Analysis
2. Design
3. Coding
4. Testing
5. Support
Analysi Support
Design Code Test
s
3. Coding: The design must be translated into a machine-readable form. The code generation
step performs this task. If design is performed in a detailed manner, code generation can be
accomplished mechanistically.
4. Testing: Once code has been generated, program testing begins. The testing process focuses
on the logical internals of the software, ensuring that all statements have been tested, and on
the functional externals; that is, conducting tests to uncover errors and ensure that defined
input will produce actual results that agree with required results.
5. Support: Software will undoubtedly undergo change after it is delivered to the customer
(a possible exception is embedded software). Change will occur because errors have been
encountered, because the software must be adapted to accommodate changes in its external
environment (e.g., a change required because of a new operating system or peripheral
device), or because the customer requires functional or performance enhancements.
Software support/maintenance reapplies each of the preceding phases to an existing program
rather than a new one.
The linear sequential model is the oldest and the most widely used paradigm for software
engineering. However, this model has some drawbacks.
Drawbacks:
1. Real projects rarely follow the sequential flow that the model proposes. Although the linear
model can accommodate iteration, it does so indirectly. As a result, changes can cause
confusion as the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The linear sequential
model requires this and has difficulty accommodating the natural uncertainty that exists at
the beginning of many projects.
3. The customer must have patience. A working version of the program(s) will not be available
until late in the project time-span. A major blunder, if undetected until the working program
is reviewed, can be disastrous.
When an incremental model is used, the first increment is often a core product.
That is, basic requirements are addressed, but many supplementary features (some known,
others unknown) remain undelivered. The core product is used by the customer (or
undergoes detailed review).
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.
This process is repeated following the delivery of each increment, until the complete product
is produced.
For small projects, the number of work tasks and their formality is low.
For larger, more critical projects, each task region contains more work tasks that are defined
to achieve a higher level of formality.
In all cases, the umbrella activities (e.g., software configuration management and software
quality assurance) are applied.
As this evolutionary process begins, the software engineering team moves around the spiral
in a clockwise direction, beginning at the center.
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 customer evaluation. In addition, the
project manager adjusts the planned number of iterations required to complete the software.
Unlike classical process models that end when software is delivered, the spiral model can be
adapted to apply throughout the life of the computer software.
An alternative view of the spiral model can be considered by examining the project entry
point axis, also shown in Figure.
Each cube placed along the axis can be used to represent the starting point for different types
of projects.
A “concept development project” starts at the core of the spiral and will continue (multiple
iterations occur along the spiral path that bounds the central shaded region) until concept
development is complete.
If the concept is to be developed into an actual product, the process proceeds through the
next cube (new product development project entry point) and a “new development project”
is initiated.
The new product will evolve through a number of iterations around the spiral, following the
path that bounds the region that has somewhat lighter shading than the core.
In essence, the spiral, when characterized in this way, remains operative until the software is
retired. There are times when the process is dormant, but whenever a change is initiated, the
process starts at the appropriate entry point (e.g., product enhancement).
3.5 The WINWIN Spiral Model:
The objective of this activity is to bring out project requirements from the customer.
In ideal context the developer simply asks the customer what is required and the customer
provides sufficient details.
In reality the customer and developer enter into a process of negotiation (give and take).
Boehm’s WINWIN spiral model defines a set of negotiation activities at the beginning of each pass
around the spiral. Rather than a single customer communication activity, the following activities are
defined:
1. Identification of the system or subsystem’s key “stakeholders.” (A stakeholder is anyone in
the organization that has a direct business interest in the system or product to be built and
will be rewarded for a successful outcome or criticized if the effort fails.)
2. Determination of the stakeholders’ “win conditions.”
3. Negotiation of the stakeholders’ win conditions to reconcile them into a set of win-win
conditions for all concerned (including the software project team).
The WINWIN spiral model introduces three process milestones, called anchor points , that help
establish the completion of one cycle around the spiral and provide decision milestones
before the software project proceeds.
The first anchor point, life cycle objectives (LCO), defines a set of objectives for each major
software engineering activity.
The second anchor point, life cycle architecture (LCA), establishes objectives
that must be met as the system and software architecture is defined.
The third anchor point Initial operational capability (IOC) represents a set of objectives
associated with the preparation of the software for installation/distribution, site preparation
prior to installation, and assistance required by all parties that will use or support the
software.
3.6 The Concurrent Development Model:
The concurrent development model, sometimes called concurrent engineering, has been described
in the following manner by Davis and Sitaram.
Unified process is an attempt to draw on the best features and characteristics of conventional
software process models.
It recognizes the importance of customer communication and makes more efficient methods
for describing the customer's view of a system.
The Unified process can be characterized as phases.
The phases of Unified Process are:
1. Inception
2. Elaboration
3. Construction
4. Transition
5. Production
Inception
The Inception phase of a Unified Process includes both customer communication and
planning activities.
By working together with the customer and end uers, the business requirements for the
software are identified, a rough architecture for the system is proposed.
Elaboration
Elobaration encompasses the customer communication and modeling activities.
This will 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.
They are: Use case model, analysis model, design model, implementation model and
deployment model.
Construction
The Construction phase develops the software components.
As components are being implemented, unit tests are designed and executed for each
component.
Transition
Transition phase encompasses the later stages of construction activity and the first part
of the deployment activity.
At the conclusion of the transition phase the software increments become a usable
software release.
Production
◦ It coincides with the deployment activity. In this phase the on going use of the software
is monitored.
◦ Support for the infrastructure is provided, and defect reports and request for changes are
submitted and evaluated.