Professional Documents
Culture Documents
Software Engineering
Unit - 1
Introduction to
Software & Software
Engineering
Why to Study Software Engineering?
+ +
Computer Data Documents
Program Structure Soft & Hard
What is Software?
Software is
1) Computer program that when executed provide desired
features, function & performance
2) Data Structure that enable programs to easily manipulate
information
3) Descriptive information in both hard and soft copy that
describes the operation and use of programs
+ +
Computer Data Documents
Program Structure Soft & Hard
The Evolving Role of Software
Dual Role of Software
1. As product
Act as information transformer —
Producing, managing,
modifying, displaying and/or
transmitting the source of
information
2. As process
The vehicle for delivering a
product as
To control the computer or to
establish communication
between the computer (Ex.
Networking software)
The Evolving Role of Software
The role of software is significantly changing over
past decade. There are many factors affecting the
role of software and those are:
Flow Charts
Design
Manuals
ER Diagram
Test Data
Testing
Test Results
List of Documentation Manuals
System Overview
Documentation
Reference Guide
Installation Guide
Operational Manuals
System Administration Guide
Characteristics of Software
Software is developed or engineered
• It is not manufactured like hardware
• Manufacturing phase can introduce quality problem that are
nonexistent (or easily corrected) for software.
• Both requires construction of “product” but approaches are
different
Software doesn’t “wear-out”
Infant
“Wear out”
morality
Failure Rate
Time
Actual Curve
Idealized Curve
Time
Software failure curve
custom built
Software Failure curve
12
Software Application Domains
System
Software
Point of Sale,
Artificial Customized
Application
intelligence Software
Software
Software
Software
Application Engineering
Web Domains
Application / Scientific
Software
16
Software Engineering Layered Approach
Software Engineering Tools allows automation of activities
which helps to perform systematic activities. A system for the
support of software development, called computer-aided
software engineering (CASE). Examples: Testing Tools,
Bug/Issue Tracking Tools etc…
Reality:
Even though we have all standard and procedures with us for
helping the developer to build the software, it is not possible
for software professional to build desired product.
This is because – the collection which we have should be
complete, it should reflect modern techniques and more
importantly it should be adaptable. It should also help the
software professional to bring quality in the product.
Management Myth - 2
Add more people to meet deadline of project.
Reality:
• Adding more people in order to catch the schedule will
cause the reverse effect on the software project
Reality:
Reality:
• It is true that software very flexible entity but if continuous
changes in the requirements have to be incorporated then
there are chances of introducing more and more errors in
the software.
• Similarly , the additional resources and more design
modifications may be demanded by the software.
Customer Myth - 2
We can start writing program by
using general problem statements
only. Later on using problem
description we can add up the
required functionalities in the
program.
Reality:
• It is not possible each time to have Comprehensive (detailed)
problem statements. We have to start with general problem
statement; however by proper communication with customer
the software professionals can gather useful information.
• The most important thing is that the problem statement should
be unambiguous (clear) to begin with.
Practitioner's (Developer) Myth - 1
Reality:
• Experts say "the sooner you begin 'writing code', the
longer it will take you to get done."
• Industry data indicates that 60 to 80 % effort expended on
software will be after it is delivered to the customer for the
first time.
Practitioner's (Developer) Myth - 2
There is no need of documenting the
software project; it unnecessarily
slows down the development process.
Reality:
• Documenting the software project helps in establishing ease
in use of software.
framework activity #n
Software Process Framework
A process is a collection of activities, actions and tasks that
are performed when some work product is to be created.
Each framework activity is populated by set of software
engineering actions.
Each software engineering action is defined by a task set.
Task Set:
A task set defines the actual work to be done to accomplish (achieve)
the objectives of a software engineering action.
• Ex. Action-Analysis and design where analysis encompasses a set of
work tasks(e.g., requirements gathering, elaboration, specification,
validation etc.)
• A list of the task to be accomplished
• A list of the work products to be produced
• A list of the milestones (special events) to determine project status
• A list of the quality assurance filters to be applied
Software Process Models
The process model is the abstract representation of process.
Also known as Software development life cycle (SDLC) or
Application development life cycle Models
Process models prescribe a distinct set of activities, actions,
tasks and milestones (deliverables) required to engineer
high quality software.
Process models are not perfect, but provide roadmap for
software engineering work.
Software models provide stability, control and organization to a
process that if not managed can easily get out of control.
Software process models are adapted (adjusted) to meet the
needs of software engineers and managers for a specific
project.
SDLC
(Software
Development
Life Cycle)
SDLC Phases
Deployment Planning
Construction
Different Process Models
Waterfall Model (Linear Sequential Model)
Prototyping Model
Agile Model
Waterfall
Model
The Waterfall Model
• Estimating, scheduling,
Planning tracking
• Delivery,
Deployment support,
feedback
The Waterfall Model cont.
This Model also called as the Classic life cycle or linear
sequential model.
• The Linear sequential model suggests a
systematic sequential approach to software development.
• Technology is understood.
• Easy to use
Drawbacks
• Unable to accommodate changes at later stages, that is
required in most of the cases.
Disadvantages
• Needs good planning and design to integrate components.
• Total cost is higher than Waterfall.
RAD Model
(Rapid
Application
Development)
RAD(Rapid Application Development )Model
Team - 1
Modeling
Construction
Integration
Communication Delivery
Team - 2 Feedback
Planning Modeling
Deployment
Construction
Team - 3
Component Reuse
Modeling
Business Automatic Code
Modeling Generation
Construction
Data Modeling Testing
Process Modeling
RAD Model Cont.
It is a type of incremental model in which;
components or functions are developed in
parallel.
Construction
of Prototype Quick Plan
Modeling
Quick Design
Prototyping model cont.
It works as follow
• Communicate with stockholders & define objective of
Software
• Identify requirements & design quick plan
• Model a quick design (focuses on visible part of software)
• Construct Prototype & deploy
• Stakeholders evaluate this prototype and provides feedback
• Iteration occurs and prototype is tuned based on feedback
Disadvantages
• It is impossible to know how long it will take.
• There is no way to know the numbers of iteration will be
required.
The Spiral Model
The Spiral Model cont.
The Spiral model is an evolutionary process model that
couples iterative nature of prototyping with the controlled
and systematic aspects of waterfall model.
Combination of water fall model and iterative waterfall
model(Incremental model)
Meta Model
It provides the potential for rapid development.
Software is developed in a series of evolutionary releases.
Early iteration release might be prototype but later
iterations provides more complete version of software.
It is divided into framework activities (C,P,M,C,D). Each activity
represent one segment of the spiral.
The Spiral Model cont.
When to use Spiral Model?
• For development of large scale / high-risk projects.
Disadvantages
• Can be a costly model to use.
• Risk analysis requires highly specific expertise.
• Project’s success is highly dependent on the risk analysis
phase.
• Doesn’t work well for smaller projects.
Concurrent Development Model
Allow a software team to
represent iterative and
concurrent elements of any
of the process models.
The Figure shows modeling
may be in any one of the
states at any given time.
Each activity, action or task on
the network exists
simultaneously (all together)
with other activities, actions
or tasks.
Concurrent Development Model (Cont…)
• For example,
Communication activity has completed its first iteration
and is in the awaiting changes state.
The modeling activity was in inactive state, now makes a
transition into the under development state.
Agile Process Model
Agile Process Model
• Ability to move quickly and respond to changes –
changes from requirements, technology and people.
• Agile SDLC model is a combination of iterative and
incremental process models with focus on process
adaptability and customer satisfaction by rapid
delivery of working software product.
• Agile Methods break the product into small
incremental builds.
• Every iteration involves cross functional teams
working simultaneously on various areas like
planning, requirements analysis, design, coding, unit
testing, and acceptance testing.
Agile Process Model (Cont…)
Advantages
• Customer satisfaction by rapid, continuous
delivery of useful software.
• Customers, developers and testers constantly
interact with each other.
• Daily cooperation between business people and
developers.
• Continuous attention to technical excellence
(quality) and good design.
• Regular adaptation to changing circumstances.
Agile Process Model (Cont…)
Disadvantages
• In case of some software, it is difficult to
estimate the effort required at the beginning
of the software development life cycle.
• The project can easily get “off track” if the
customer representative is not clear about final
outcome, that they want.
• Only senior programmers are capable of taking
the kind of decisions required during the
development process.
Component-Based Development
Component based Development
Commercial off the shelf (COTS) software components are
offered as product.
COTS provides set of functionality with well defined
interfaces that enables component to be integrated into
software.
The component based development model incorporates many
characteristics of the spiral model.
It is evolutionary in nature.
Component based development model constructs applications
from prepackaged software components.
Modeling and construction activities begin with the
identification of components.
Component based Development cont.
Component based development incorporates the following
steps
1. Available component-based products are researched &
evaluated for software development .
2. Component integration issues are considered
3. A software architecture is designed to accommodate the
components.
4. Components are integrated into the architecture.
5. Testing is conducted to insure proper functionality.
Component based Development cont.
Properties of Components
• Independent
• Standardized
• Deployable
• Documented
Advantages
• It leads to software reuse.
• Extensibility
• Maintainability
• It reduces development cycle time.
• Reduction in project cost.
Software Process & Software Product
Sr.
Process Product
No.
Process is a set of sequence steps that Product is the final production of the
1
have to be followed to create a project. project.
Process is focused on completing each
2 A product focuses on the final result.
step being developed.
The process consistently follows In the case of products, the firm
3
guidelines. guidelines are followed.
4 Process tends to be long-term. A product tends to be short-term.