Unit 01 (A)
Unit 01 (A)
Software Engineering(CE4013)
Urvisha Patel
Assistant Professor
Why to Study Software Engineering?
• Software development Process needs to be engineered to
avoid the communication gap & to meet the actual
requirement of customer within stipulated budget & time.
The Nature of software
Dual Role of Software
• As product:-
Act as an information transformer—producing,
managing,acquiring, modifying, displaying or
transmitting information
• As process:-
The vehicle for delivering a product as - To control the
computer or to establish communication between the
computer (Ex. Networking software)
What is Software?
Software is
• Computer program that when executed provide desired features,
function & performance
• Data Structure that enable programs to easily manipulate information
• 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
The role of software is significantly changing over past
decade. There are many factors affecting the role of
software like:
• Changes in computer architectures.
• Improvement in hardware performance.
• Vast increase in amount of memory.
• Wide variety of input and output.
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
Time
Bathtub curve of hardware failure
Actual Curve
Idealized Curve
• During its life, software will undergo change. As changes are made, it is likely that
errors will be introduced, causing the failure rate curve to spike as shown in the
“actual curve”. Before the curve can return to the original steady-state failure rate,
another change is requested, causing the curve to spike again. Slowly, the minimum
failure rate level begins to rise
Software Application Domains
System
Software Point of Sale,
Artificial Customized
Application Software
intelligence
Software Software
•Design
•Flow Charts
•ER Diagram
•Implementation
•Source Code Listings
•Cross-Reference Listings
•Testing
•Test Data
List of Documentation Manuals
•Documentation Manuals
•User Manuals
•System Overview
•Beginner’s Guide Tutorials
•Reference Guide
•Operational Manuals
•Installation Guide
•System Administration Guide
Software Engineering: A Layered Technology
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
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
• i.e. software project will get delayed.
Because , we have to spend
more time on educating people or informing them about the
project.
Management Myth - 3
If a project outsourced to the third party than all worries
of software building is over.
Reality:
• When a company needs to outsource the project then it simply
indicates that the company does not know how to manage the
project.
• Sometimes outsourced projects required proper support for
development
Customer Myth - 1
Even if the software Requirements
are changing continuously it is
possible to accommodate these
changes in software.
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
Reality: program.
• 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:
• Documenting the software project helps in establishing ease in use
of software.
• Ithelps in creating better quality. Hence documentation is not
wastage of time but it is a must for any software project.
A Generic Process Model
Software Process
A process is a collection of activities, actions and tasks that are
performed when some work product is to be created.
• Activity
• A thing that is happening or going on by a person or group to achieve a
broad objective is applied regardless of the application domain, size of the
project, complexity of the effort
• E.g. Communication with Stakeholders
• Action
• a set of tasks that produce a major work product
Task Sets
Process
Work tasks
… Work products
… Quality assurance points
framework activity #n
Process Assessment & Improvement
A number of different approaches to software process assessment and
improvement have been proposed over the past few decades:
(CMMI –capability maturity model integration, SEI-software engineering institute)
• Standard CMMI Assessment Method for Process Improvement(SCAMPI)
SDLC
Deployment Planning
Software
Development
Life
Cycle
Construction
Modeling
Different Process Models
• Waterfall Model (Linear Sequential Model)
• Incremental Process Model
• Prototyping Model
• The Spiral Model
• Rapid Application Development Model
• Agile Model
The Waterfall Model
•Communication
•Project initiation, requirements gathering
•Planning
•Estimating, scheduling, tracking
•Modeling
•Analysis, design
•Construction
•Code, test
•Deployment
•Delivery, support, feedback
The Waterfall Model
• 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.
• When requirements for a problems are well understood then this
model is used in which work flow from communication to
deployment is linear.
• Once a phase is complete, you cannot go back and repeat the
process of previous phase.
The Waterfall Model
When to use ?
• Requirements are very well known, clear and fixed.
• Product definition is stable.
• Technology is understood.
• There are no ambiguous (unclear) requirements.
• Sufficient resources with required expertise are available freely.
• The project is short
The Waterfall Model
Advantages
• Simple to implement and manage
• Easy to use
Drawbacks
• Unable to accommodate changes at later stages, that is required in
most of the cases.
• Deadlock can occur due to delay in any step.
• Not suitable for large projects.
Incremental Process Model
• The Incremental Model
• The RAD Model
Incremental Model
Incremental Model
• This model applies linear sequence in a iterative manner.
• Initially core working product is delivered.
• Each linear sequence produces deliverable “increments” of the
software.
• For example, 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;
Incremental Model
When to Use ?
• When the requirements of the complete system are clearly
defined and understood but staffing is unavailable for a
complete implementation by the business deadline.
• When the major requirements are understood but some
requirement evolve within the passage of time.
• When product launch in the market is getting late.
• When customer have no problem of budget and time but he
demands for more and more quality in software.
Incremental Model
Advantages
• Generates working software quickly and early during the software
life cycle.
• It is easier to test and debug during a smaller iteration.
• Customer can respond to each built.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and handled
during iteration.
Disadvantages
RAD(Rapid Application Development )Model
Team - 1
Modeling
Construction Integration
Communication Delivery
Team - 2 Feedback
Planning Modeling
Deployment
Construction
Team - 3
Modeling Component Reuse
Business Modeling Automatic Code
Data Modeling Construction Generation
Process Modeling Testing
RAD Model
• It is a type of incremental model in which; components or
functions are developed in parallel.
• This can quickly give the customer something to see and use and to
provide feedback.
RAD Model
• Communication - This phase is used to understand business problem.
• Planning - Multiple software teams work in parallel on different
systems/modules.
• Modeling -
• Business Modeling: Information flow among the business.
• Data Modeling: Information refine into set of data objects that are needed to
RAD Model
• Construction - It highlighting the use of pre-existing software
component.
• Deployment - Deliver to customer basis on subsequent iteration.
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.
RAD Model
• Advantages
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Drawback
• For large but scalable projects, RAD requires sufficient human resources.
Evolutionary Process Models
• Prototyping Model
• Spiral Model
• Concurrent Development Model
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.
• Evolutionary models are
• Prototyping Model
Prototyping model
• Prototyping model is appropriate when
• 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.
Deployment &
Communication
Feedback
Construction
of Prototype Quick Plan
Modeling Quick
Design
Prototyping model
• 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
• Extensibility
• Maintenance
Formal Methods Model
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:
• The development of formal models is currently quite time consuming and
expensive.
• Because few software developers have the necessary background to apply
formal methods, extensive training is required.
• It is difficult to use the models as a communication mechanism for technically
unsophisticated customers.
• These concerns notwithstanding, the formal methods approach has gained
adherents among software developers who must build safety-critical software
Aspect-Oriented Software Development
Aspect-oriented software development (AOSD), often referred to as
aspect-oriented programming (AOP), is a relatively new software
engineering paradigm that provides
• a process and methodological approach for defining, specifying,
designing, and constructing aspects—
• “mechanisms beyond subroutines and inheritance for localizing the
expression of a crosscutting concern”
Software Process & Software Product
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
Thank you