SE Unit 1 Introduction
SE Unit 1 Introduction
SE Unit 1 Introduction
Introduction to
Software &
Software Engineering
Outline
Looping
Software, Characteristics of Software, Software Application Domains
Software Engineering
Software Myths
• Management Myth
• Customer Myth
• Practitioner's/Developer Myth)
, Software Engineering Layered Approach
Software Process, Process Framework Activities , Umbrella Activities
Software Process Models
• The Waterfall Model
• Incremental Process Model
• Prototyping Model, Spiral Model
• Spiral Model
• Rapid Application Development Model (RAD)
Component based Development
Why to Study Software Engineering?
Software Development Life Cycle without Software Engineering
1 2 3 4 5
How the How the How the How the How the
Customer Project System Programme Business
Explains Leader Analyst r Works Consultant
Requirement understand design it on it describe it
it
Unit 1 – Introduction to Software & Software Engineering 3
Why to Study Software Engineering?
Software Development Life Cycle without Software Engineering
6 7 8 9 10
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
Unit 1 – Introduction to Software & Software Engineering 8
List of documentation & manuals
Formal Specification
Analysis / Documentation Manuals
Context Diagram
Specification
Data Flow Diagram
User Manuals Operational
Manuals
Documentation
Flow Charts
Manuals
Design
ER Diagram System Installation
Overview Guide
Source Code Listings
Beginner’s
Implementation Guide
Cross-Reference Listings Tutorials System
Administration
Test Data Guide
Reference
Testing Guide
Test Results
Failure Rate
morality
Actual Curve
Idealized Curve
Time Time
Management
Myths
Customer Myths
Realit Realit
y y
Are software practitioners aware of It takes much more than the latest
standard’s existence? model computers to do high-quality
Does it reflect modern software software development.
engineering practice? Computer-aided software engineering
Is it complete? (CASE) tools are more important than
hardware.
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.“
Unit 1 – Introduction to Software & Software Engineering 14
Management myth - 3 & 4
We can add more programmers I outsourced the development
and can catch up the schedule. activity, now I can relax and can
wait for the final working product.
Realit Realit
y y
Software development is not a If an organization does not
mechanistic process like manufacturing. understand how to manage and
In the words of Fred Brooks : "adding control software projects internally, it
people to a late software project makes it will invariably struggle when it
later." outsources software projects.
People who were working must spend
time educating the newcomers.
People can be added but only in a planned
and well-coordinated manner.
Realit Realit
y y
Experts say "the sooner you begin One of the most effective software
'writing code', the longer it will take you quality assurance mechanisms can be
to get done." applied from the beginning of a project
Industry data indicates that 60 to 80 % - the technical review.
effort expended on software will be after it Software reviews are more effective
is delivered to the customer for the first “quality filter” than testing for finding
time. software defects.
Realit Realit
y y
A working program is only one part of a Software engineering is not about
software configuration. creating documents. It is about creating
A variety of work products (e.g., models, a quality product.
documents, plans) provide a foundation Better quality leads to reduced rework.
for successful engineering and, more And reduced rework results in faster
important, guidance for software support. delivery times.
Quality
Main principle of Software Engineering is Quality Focus.
An engineering approach must have a focus on quality.
Total Quality Management (TQM), Six Sigma, ISO 9001, ISO 9000-3, CAPABILITY
MATURITY MODEL (CMM), CMMI & similar approaches encourages a continuous
process improvement culture
Process Layer
It is a foundation of Software Engineering; It is the glue that holds the technology layers
together and enables logical and timely development of computer software.
It defines a framework with activities for effective delivery of software engineering
technology
It establish the context in which technical methods are applied, work products (models,
documents, data, reports, forms, etc.) are produced, milestones are established, quality is
ensured, and change is properly managed.
Unit 1 – Introduction to Software & Software Engineering 20
Software Engineering Layered Approach Cont.
Method
It provides technical how-to’s for building software
It encompasses many tasks including communication, requirement analysis, design
modeling, program construction, testing and support
Tools
Software engineering tools provide automated or semi-automated support for the process
and the methods
Computer‐aided software engineering (CASE) is the scientific application of a set of tools
and methods to a software system which is meant to result in high‐quality, defect‐free,
and maintainable software products.
CASE tools automate many of the activities involved in various life cycle phases.
Software Process
Task Sets Work tasks
defined by a task set that identifies work … Work products
to be completed, product to be produced, … Quality assurance points
quality assurance points & milestones to Software Engineering action #1.k
indicate progress Task Sets Work tasks
… Work products
… Quality assurance points
The purpose of software process is
to deliver software in timely manner and framework activity #n
Software
Process models are not perfect but provide
Development
roadmap for software engineering work.
Life
Software models provide stability, control and Cycle
organization to a process that if not managed can
easily get out of control. Construction Modeling
Software process models are adapted (adjusted)
to meet the needs of software engineers and
managers for a specific project.
Unit 1 – Introduction to Software & Software Engineering 28
Different Process Models
Process model is selected based on
Process
different parameters Models
Type of the project & people Waterfall Model (Linear Sequential
Complexity of the project Model)
Size of team Incremental Process Model
Expertise of people in team
Prototyping Model
Working environment of team
Software delivery deadline The Spiral Model
Rapid Application Development Model
Agile Model
Communication
• Project initiation
• Requirements Planning
gathering • Estimating
• Scheduling Modeling
• Tracking • Analysis
• Design Construction
• Coding
• Testing Deployment
• Delivery
• Support
• Feedback
When requirements for a problems are well understood then this model is used
in which workflow from communication to deployment is linear
Unit 1 – Introduction to Software & Software Engineering 30
The Waterfall Model
When to Advantages
use ?
Simple to implement and manage
Requirements are very well known,
clear and fixed
Product definition is stable Drawbacks
Technology is understood Unable to accommodate changes at later
There are no ambiguous (unclear) stages, that is required in most of the
cases.
requirements
Working version is not available during
Ample (sufficient) resources with
development. Which can lead the
required expertise are available freely
development with major mistakes.
The project is short
Deadlock can occur due to delay in any
step.
Not suitable for large projects.
In such cases, there is a need of a process model that is designed to produce the software in
increments.
The incremental model combines elements of linear and parallel process flows.
This model applies linear sequence in an iterative manner.
Initially core working product is delivered.
Each linear sequence produces deliverable “increments” of the software.
Advantages
Users are actively involved in the development
Since in this methodology a working model of the system is provided, the users get a
better understanding of the system being developed
Errors can be detected much earlier
Unit 1 – Introduction to Software & Software Engineering 38
The Spiral 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
Each pass through the planning region results
in adjustments to
the project plan
Cost & schedule based on feedback
Modeling Construction
Business Modeling: Information flow among the It highlighting the use of pre-
business. existing software component.
Ex. What kind of information drives (moves)?
Who is going to generate information? Deployment
From where information comes and goes?
Integration of modules
Data Modeling: Information refine into set of developed by parallel teams,
data objects that are needed to support business. delivery of integrated software
Process Modeling: Data object transforms to and feedback comes under
information flow necessary to implement deployment phase.
business.
Unit 1 – Introduction to Software & Software Engineering 42
Rapid Application Development Model (RAD) Cont.
When to Use?
There is a need to create a system that can be modularized in 2-3 months of time.
High availability of designers and budget for modeling along with the cost of automated
code generating tools.
Resources with high business knowledge are available.
Advantages Drawback
Reduced development time. For large but scalable projects, RAD requires
sufficient human resources.
Increases reusability of components.
Projects fail if developers and customers are
Quick initial reviews occur.
not committed in a much-shortened time-
Encourages customer feedback. frame.
Integration from very beginning Problematic if system can not be
solves a lot of integration issues. modularized.
Not appropriate when technical risks are
Unit 1 – Introduction to Software & Software Engineering 43
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.
Advantages
It leads to software reuse.
It reduces development cycle time.
Reduction in project cost.
Evolutionary
Incremental