1. Introduction to Software Engineering(1)
1. Introduction to Software Engineering(1)
Software
Engineering
1
What is software?
2
What is
software?
Programs
Documentation Operating
Procedures
Software=Program+Documentation+Operating
Procedures Components of software
3
Documentation manuals
are…
Analysis
Formal Specification
Context-Diagram
/Specification
Data Flow Diagrams
Flow Charts
Design
Entity-Relationship
Documentation Diagram
Manuals
Source Code Listings
Implementation Cross-Reference
Listing
Test Data
Testing Test Results
Operating
Procedures
Installation Guide
Operational
Manuals
S
y
s
t
e
m
5
Administration Guide
Software Products
6
Software products
Generic products
Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
Examples – PC software such as graphics programs,
project management tools; CAD software; software for
specific markets such as appointments systems for
dentists.
Customized products
Software that is commissioned by a specific customer to
meet their own needs.
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
7
Software Product
Software product is a product designated for
delivery to the user
Source Reports Documents
Codes
Manuals
Objects Plans
Codes Data
Test
Suites Test Prototypes
results
8
Product specification
Generic products
The specification of what the software should do
is owned by the software developer and
decisions on software change are made by the
developer.
Customized products
The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.
9
What is software
engineering?
Software engineering is an engineering discipline which
is concerned with all aspects of software production
Software engineers should
– adopt a systematic and organised approach to their
work
– use appropriate tools and techniques depending on
• the problem to be solved,
• the development constraints and
– use the resources available
1
0
What is software
At the firstengineering?
conference on software engineering
in 1968, Fritz
Bauer defined software engineering as “The establishment and
use of sound engineering principles in order to obtain
economically developed software that is reliable and works
efficiently on real machines”.
12
Frequently asked questions about
software engineering
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems
require a complete and analyzable specification to be
developed. You can’t, therefore, say that one method is
better than another.
What differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed
service-based systems. Web-based systems
development has led to important advances in
programming languages and software reuse.
13
Essential attributes of good
software
Product characteristic Description
14
Software Application
System software : ADomains
collection of programs written to
service other programs. Some system software (e.g.,
compilers, editors, and file management utilities)
Application software : Stand-alone programs that solve
a specific business need. Application software is used to
control business functions in real time (e.g., point-of-sale
transaction processing, real-time manufacturing process
control).
Web applications : These Applications called
“WebApps,” this network-centric software category spans
a wide array of applications. In their simplest form,
WebApps can be little more than a set of linked hypertext
files that present information using text and limited
graphics. 15
Software Application
Domains
Engineering/scientific software : It has been characterized by
“number crunching” algorithms. Applications range from
astronomy to volcanology, from automotive stress analysis to space
shuttle orbital dynamics, and from molecular biology to automated
manufacturing.
16
Software Application
Domains
Batch processing systems
These are business systems that are designed to process
data in large batches. They process large numbers of
individual inputs to create corresponding outputs.
Entertainment systems
These are systems that are primarily for personal use
and which are intended to entertain the user.
Systems for modeling and simulation
These are systems that are developed by scientists and
engineers to model physical processes or situations,
which include many, separate, interacting objects.
17
Software Application
Domains
Product-line software : Designed to provide a specific
capability for use by many different customers. Product-line
software can focus on a limited and esoteric marketplace (e.g.,
inventory control products) or address mass consumer
markets (e.g., word processing, spreadsheets, computer
graphics, multimedia, entertainment, database management,
and personal and business financial applications).
Artificial intelligence software : These makes use of non
numerical algorithms to solve complex problems that are not
amenable to computation or straightforward analysis.
Applications within this area include robotics, expert systems,
pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing. 18
Software engineering
fundamentals
Some fundamental principles apply to all types of software
system, irrespective of the development techniques used:
Systems should be developed using a managed and
understood development process. Of course, different
processes are used for different types of software.
Dependability and performance are important for all
types of system.
Understanding and managing the software specification
and requirements (what the software should do) are
important.
Where appropriate, you should reuse software that has
already been developed rather than write new software.
19
Software
./Software does Characteristics:
not wear out.
Software doesn’t wear out because the hard drive, USB drive,
computer memory, or other “container” it’s stored in (or on)
protects it from being damaged and degrade.
./ Software is developed or engineered not manufactured
./ Reusability of components (Maintenance is without spare
parts)
./ Software is flexible (Intangible)
20
Cont…
Well-Engineered Software
Well-engineered software is one that has the following
characteristics:
It is reliable
It has good user-interface
It has acceptable performance
It is of good quality
It is cost-effective
21
Software
Development
Software Development Life Cycle :Life
Suggests a systematic
Cycle
sequential approach to SW development that begins at the
system level and progresses through analysis, design,
coding, testing and support
22
Software Process
A generic framework
process framework for software engineering
encompasses five activities:
Communication: Before any technical work can commence,
it is critically important to communicate and collaborate
with the customer. The intent is to understand stakeholders
objectives for the project and to gather requirements that
help define software features and functions.
Planning: Defines the software engineering work by
describing the technical tasks to be conducted, the risks that
are likely, the resources that will be required, the work
products to be produced, and a work schedule. 23
Software Process
framework
Modeling: Creation of models to help developers and
customers understand the requires and software design
Construction: This activity combines code generation and
the testing that is required to uncover errors in the code.
Deployment: The software is delivered to the customer
who evaluates the delivered product and provides
feedback based on the evaluation.
24
Software
Process models
Waterfall/Linear Sequential model
Prototype model
Evaluation model
Spiral model
25
Waterfall model
Feasibility Study
Requirement Analysis
And Specification
Design and
Specification
Coding and
Module Testing
Document Driven Integration and
System Testing
The phases don't overlap
Delivery
i.e. design can’t begin until
analysis is finished Maintenance
26
Feasibility Study
Main aim – determine whether developing the product is financially and
technically feasible
Purpose is to produce a feasibility study document that evaluates the costs
and benefits of the proposed application
Document should contain:
Definition of the problem
Formulation of different solution strategies
Alternative solutions and their expected benefits
Cost/benefit analysis performed – determine which solution is the best
Any solution – not feasible – due to high cost, resource
constraints etc
Required resources, costs, delivery dates in each proposed
27
alternative solutions
Requirement Analysis and
Specification
(What
Studied by the todeveloper
customer and solve) .
New project – much interaction is required between the
user and the developer
Functional Requirements : what the product does
Non- Functional Requirements : This may be classified
into the following categories: Reliability (availability,
integrity etc), accuracy, performance, operating constraints,
human-computer interface issues, portability issues etc
28
Design Specification (How
to solve)
Description of architecture, module description
and relationships
29
Coding and Testing
Individual modules are tested before being delivered
to the customers
Alpha Testing : Carried out by the test team inside
the organization
Beta Testing : Performed by a selected group of
friendly customers
Acceptance Testing : Performed by the customer to
determine whether or not to accept the deliver of the
system
30
Maintenance
Requires much more effort than development phase
Development : Maintenance effort = 40:60 ratio
Involves performing any one/more of the following activities:
Corrective Maintenance : Correcting errors – not discovered
during the product development phase
Perfective Maintenance : Improving the implementation and
enhancing the functionalities according to customer’s
requirements
Adaptive Maintenance : Porting the SW to a new environment
31
Strength and weakness
Strength of Waterfall model
It is document driven
It is a good model to use when requirements are well understood and are quite
stable.
Late changes to requirements or design are limited
Implementing the product should be postponed until understanding the
objectives well.
Weakness of Waterfall model
The model is inflexible for change as each phase results are frozen.
This model forces the software developer to completely fulfill the scope of each
phase before moving on.
Requirements must be well-reviewed early 32
Cont…
Model is
Linear : Not possible. Need feedback
Rigid : results of each phase are frozen before proceeding to the next
phase
Monolithic : All planning is oriented to a single delivery date
inefficient performance
In the case where requirements are not clear, Prototyping
36
Cont…
Requirements gathering
Quick design
Customer
Refine Requirements
suggestion Build prototype
Acceptance by user
Customer evaluation –
prototype
Implement, Test
Maintain 37
Prototype model
Actual system developed using classical waterfall model
In development effort, requirement analysis and specification
is delivered to customer
38
Strengths and weakness
Strengths of the Prototyping Model
There is a much lower risk of confusion in terms of
miscommunication, misunderstanding user requirements or
system features.
New or unexpected user requirements can easily be
incorporated.
Prototyping development costs are offset by avoidance of the
usual high cost of rework and repair.
The prototype can be used as a formal specification because it
is tangible and well tried.
39
Cont…
Weaknesses of the Prototyping Model
Lack of early planning may cause project management
problems: unknown schedules, budgets and deliverables.
This Model results in potentially longer development cycles.
Seeing functions in working mode early in the life cycle
stimulates users into requesting additional functions.
When to use the Prototyping Model?
When requirements are not known at the beginning of the
project
When requirements are unstable and constantly changing
When users, for various reasons, do not have the capability of
expressing their requirements clearly.
When user requires proof of concept 40
Evolutionary model
Also known as successive version model
System – first broken into several modules or functional
units – incrementally developed and delivered
Developers first develop core modules – i.e., basic
requirements are addressed, but many supplementary
features remain undelivered
Initial product skeleton – refined into increasing levels
of capability by adding new functionalities in successive
versions
41
Cont…
Each version is a functioning system capable of
performing some more useful work
Core modules will be tested thoroughly
Disadvantage : difficult to subdivide the problem
Useful only for very large problems – where it is easier to
identify modules for incremental implementation
Evolves over a period of time
42
Cont…
43
Spiral model
•Focuses on identifying and eliminating high risk problems by careful
process design (Requirement analysis and Design Phases)
• Consequently, minimum and manageable risks filtered into
development phase
Development cycle is divided into 4 task areas
Requirement analysis – (identifies the objectives of the portion of the
44
Cont…
1- Requirement Analysis
4 5 2 -Risk Analysis
3 -Prototype 1
1 2
4 - Software Requirement
Analysis
9
3 5 - Risk Analysis
6 6- Prototype 2
8 7-Detailed Design
7
8-Construction
9-Testing and Evaluation
45
Cont…
Expects lot of rework in reverting to an earlier
phase and incorporating client feedback
Needs to perform risk analysis effectively
To eliminate losses arising due to uncertain dev
models, resource requirement, time etc
46
Selection of a Process
Model
Following criteria can be considered:
Business goals of the organization - Indicates the mindset of an organization
50
Difficulties of Software
The software process Process
is the way in which we produce
software.
Why is it difficult to improve software process ?
51
Software Metrics
A software metric is a measure of software characteristics
which are measurable or countable.
Software metrics are valuable for many reasons, including
measuring software performance, planning work items,
measuring productivity, and many other uses.
Software metrics can be classified into two types as follows:
1.Product Metrics
2.Process Metrics
52
Software Metrics
1. Product Metrics: These are the measures of various
characteristics of the software product. The two important
software characteristics are:
Size and complexity of software.
Quality and reliability of software.
These metrics can be computed for different stages of SDLC.
2. Process Metrics: These are the measures of various
characteristics of the software development process. For
example, the efficiency of fault detection. They are used to
measure the characteristics of methods, techniques, and tools
that are used for developing software.
53
Types of Software Metrics
Internal metrics: Internal metrics are the metrics used for
measuring properties that are viewed to be of greater importance
to a software developer. For example, Lines of Code (LOC)
measure.
External metrics: External metrics are the metrics used for
measuring properties that are viewed to be of greater importance
to the user, e.g., portability, reliability, functionality, usability,
etc.
Hybrid metrics: Hybrid metrics are the metrics that combine
product, process, and resource metrics. For example, cost per FP
where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the
project manager to check the project's progress.
54
Advantages of Software
For analysis, comparison, and critical study of different
Metrics
programming language concerning their characteristics.
In comparing and evaluating the capabilities and productivity
of people involved in software development.
In the preparation of software quality specifications.
In the verification of compliance of software systems
requirements and specifications.
In making inference about the effort to be put in the design
and development of the software systems.
In getting an idea about the complexity of the code.
In taking decisions regarding further division of a complex
module is to be done or not.
In guiding resource manager for their proper utilization.
In comparison and making design tradeoffs between software
development and maintenance cost and etc.
55
Disadvantages of
Software
The application Metrics
of software metrics is not always easy, and in
some cases, it is difficult and costly.
The verification and justification of software metrics are based
on historical/empirical data whose validity is difficult to
verify.
These are useful for managing software products but not for
evaluating the performance of the technical staff.
The definition and derivation of Software metrics are usually
based on assuming which are not standardized and may
depend upon tools available and working environment.
Most of the predictive models rely on estimates of certain
variables which are often not known precisely.
56
End of Chapter
One
Don’t forget to start your project
57