ch-1
ch-1
1010043336
Unit-1
Introduction to
Software Engineering
1 2 3 4 5
How the How the How the How the How the
Customer Project System Programmer Business
Explains Leader Analyst Works Consultant
Requirement understand it design it on it describe it
Prof. Pradyumansinh U. Jadeja #3150711 (SE) 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
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 4
SDLC without Software Engineering
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 6
Software is dead…..!
The old School view of Software
You buy it
You own it &
It’s your job to manage it
That is coming to an end
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 7
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
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 8
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”
High failure rate in beginning, Then drop to steady state Increate failure rate due to
Change side effect
then cumulative effects on dust ,vibration ,abuse occur
Infant
“Wear out”
Failure Rate
Failure Rate
morality
Actual Curve
Idealized Curve
Time Time
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 10
Software Application Domains
System
• System Software
Software
• Application Software Point of Sale,
Artificial Customized
• Engineering / Application
intelligence Software
Software
Scientific Software Software
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 11
Software Engineering
Software Engineering is the science and art of building (designing and writing programs) a
software systems that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 12
Software Engineering Layered Approach
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.
Helping hand of Process
Used for code design, test and sell.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 15
Software Process
A process is a collection of activities, actions and tasks that are performed when some work
product is to be created
A process is not a rigid prescription for how to build the software, rather it is adaptable
approach that enables the people doing the work to pick and choose the appropriate set of
work actions and tasks
An activity try to achieve a broad objective (e.g., communication with stakeholders)
An activity is applied regardless of the application domain, size of the project, complexity of
the effort, or degree of accuracy with which software engineering is to be applied.
An action (e.g., architectural design) encompasses a set of tasks that produce a major work
product (e.g., an architectural design model).
A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that
produces a noticeable outcome.
Each of these activities, actions & tasks reside within a framework or model
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 16
Software Process Software Process Framework
Figure represents “The Software Process” Process framework
Each framework activity is populated by Umbrella activities
set of software engineering actions framework activity #1
Software Engineering action #1.1
Each software engineering action is Task Sets Work tasks
Software Process
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
framework activity #n
to deliver software in timely manner and
within sufficient quality to satisfy those
Who has given proposal for software
development and
Those who will use software
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 17
Process Framework Activities (CPMCD)
A process framework establishes the foundation for complete software engineering process, it encompasses five activities
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 20
Umbrella Activities Cont.
Reusability management: it defines criteria for work product reuse (including software
components) and establishes mechanisms to achieve reusable components.
Work product preparation and production: it encompasses (includes) the activities required
to create work products such as models, documents, logs, forms and lists.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 21
Software Process Models The process model is the abstract representation of process.
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.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 22
Different Process Models
Process model is selected based on Process Models
different parameters
Type of the project & people Waterfall Model (Linear Sequential Model)
Complexity of the project Incremental Process Model
Size of team
Expertise of people in team Prototyping Model
Working environment of team The Spiral Model
Software delivery deadline Rapid Application Development Model
Agile Model
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 23
The Waterfall Model Classic life cycle or linear sequential model
Communication
• Project initiation
Planning
• Requirements
gathering • Estimating
Modeling
• Scheduling
• Tracking • Analysis
Construction
• Design
• Coding
Deployment
• Testing
• Delivery
• Support
• Feedback
When requirements for a problems are well understood then this model is used in
which work flow from communication to deployment is linear
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 24
The Waterfall Model
When to use ? Advantages
Requirements are very well known, clear Simple to implement and manage
and fixed
Product definition is stable Drawbacks
Technology is understood Unable to accommodate changes at later
stages, that is required in most of the
There are no ambiguous (unclear)
cases.
requirements
Working version is not available during
Ample (sufficient) resources with required
development. Which can lead the
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.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 25
Incremental Process Model
There are many situations in which initial software requirements are reasonably well defined,
but the overall scope of the development effort prevent a purely linear process.
In addition, there may be a compelling need to provide a limited set of software functionality
to users quickly and then refine and expand on that functionality in later software releases.
In such cases, there is a need of a process model that is designed to produce the software in
increments.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 26
Incremental Process Model
Software Functionality & Features
The incremental model combines elements of linear and parallel process flows.
This model applies linear sequence in a iterative manner.
Initially core working product is delivered.
Each linear sequence produces deliverable “increments” of the software.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 27
Incremental Process Model
e.g. word-processing software developed using the incremental model
It might deliver basic file management, editing and
document production functions in the first increment
more sophisticated editing in the second increment; Advantages
spelling and grammar checking in the third increment; Generates working software quickly
and and early during the software life
cycle.
advanced page layout capability in the fourth
increment. It is easier to test and debug during a
smaller iteration.
When to use ?
Customer can respond to each built.
When the requirements of the complete system Lowers initial delivery cost.
are clearly defined and understood but staffing is Easier to manage risk because risky
unavailable for a complete implementation by pieces are identified and handled
the business deadline. during iteration.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 28
Evolutionary Process Models
When a set of core product or system requirements is well understood but the details of
product or system extensions have yet to be defined.
In this situation there is a need of process model which specially designed to accommodate
product that evolve with time.
Evolutionary Process Models are specially meant for that which produce an increasingly more
complete version of the software with each iteration.
Evolutionary Models are iterative.
They are characterized in a manner that enables you to develop increasingly more complete
versions of the software.
Evolutionary models are
Prototyping Model
Spiral Model
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 29
Prototyping model
When to use ?
Customers have general objectives of software but do not have detailed requirements for
functions & features.
Developers are not sure about efficiency of an algorithm & technical feasibilities.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 30
Prototyping model cont.
It works as follow
Communicate with stockholders & define
objective of Software
Deployment & Communication
Feedback Identify requirements & design quick plan
Model a quick design (focuses on visible
part of 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
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 32
The Spiral Model
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 33
The Spiral Model Cont.
When to use Spiral Model? Advantages
For development of large scale / High amount of risk analysis hence, avoidance of Risk
high-risk projects. is enhanced.
When costs and risk evaluation Strong approval and documentation control.
is important. Additional functionality can be added at a later date.
Users are unsure of their needs. Software is produced early in the Software Life Cycle.
Requirements are complex.
Disadvantages
New product line.
Significant (considerable) Can be a costly model to use.
changes are expected. Risk analysis requires highly specific expertise.
Project’s success is highly dependent on the risk
analysis phase.
Doesn’t work well for smaller projects.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 34
Rapid Application Development Model (RAD) It is a type of
incremental model in
Team - 1 which; components or
Communication functions are
Modeling
developed in parallel.
Construction
Planning • Integration
• Delivery Rapid development
Team - 2 • Feedback is achieved by
• Business Modeling
component based
Modeling Deployment construction
• Data Modeling Construction
• Process
Modeling This can quickly
Team - 3
• Component give the customer
Modeling Reuse something to see
• Automatic Code
Construction Generation
and use and to
• Testing provide feedback.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 35
Rapid Application Development Model (RAD) Cont.
Communication This phase is used to understand business problem.
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 data developed by parallel teams,
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.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 36
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-frame.
Encourages customer feedback. Problematic if system can not be modularized.
Integration from very beginning solves Not appropriate when technical risks are high
a lot of integration issues. (heavy use of new technology).
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 37
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.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 38
Component based Development
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.
Advantages
It leads to software reuse.
It reduces development cycle time.
Reduction in project cost.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 39
Product & Process
If the process is weak, the end product will suffer. But more confidence on process is also
dangerous.
People gain more satisfaction from the creative process as they do from the end product.
Like an artist enjoys the brush strokes as much as the framed result.
A writer enjoys the search for the proper metaphor (comparison) as much as the finished book.
As software professional, you should also derive as much satisfaction from the process as
the end product.
The duality (contrast) of product and process is one important element in keeping creative
people engaged as software engineering continues to evolve.
Prof. Pradyumansinh U. Jadeja #3150711 (SE) Unit 1 – Introduction to Software & Software Engineering 40