0% found this document useful (0 votes)
34 views60 pages

Lecture1 and 2

Uploaded by

DANIYAL IRSHAD
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views60 pages

Lecture1 and 2

Uploaded by

DANIYAL IRSHAD
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 60

CSE 4306: PRINCIPLE OF SOFTWARE ENGINEERING [OE

IV]

The Problem Domain, The Software Engineering Challenges, The Software


Engineering Approach. Software Process, Desired Characteristics of Software
Process, Software Development process models. Software Requirements,
Problem Analysis, Requirement Specifications, Functional Specification with
Use Cases, Process Planning, Effort Estimation, Project Scheduling and
Staffing, Software Configuration Management Plan. Design Principle, Module
Level Concepts, Design Notations and Specifications, Structured Design
Methodology. OO Analysis and OO Design, OO Concepts, Unified Modelling
Language. Programming Principle and Guidelines, Coding Process, Testing
Fundamentals, Black Box Testing, White Box Testing, Testing Process.

References:
1. Pankaj Jalote, An integrated approach to software engineering, (3e), Narosa
2005
2. Ian Sommerville, Software Engineering, Pearson, (9e), 2010
3. Rajib Mall, Fundamentals of Software Engineering (3e), PHI learning 2009
4. Roger S. Pressman, Software Engineering A Practioner’s Approach, (6e),
McGraw-Hill, 2005

Department of Computer Science and


Friday, October 20, 2023 1
Engineering, MIT
Faculty member Details
• Manoj R
• Assistant Professor-Senior Scale
• CSE Dept
• AB5 1st floor Faculty chamber 3,cabin no 21
• Doing research in Block Chain Technology
• 15 years experience in Teaching
• Contact me @ 9740288939
• Email id- [email protected]

Department of Computer Science and


Friday, October 20, 2023 2
Engineering, MIT
3

Introduction to Software
Engineering
4

Overview

 Learning Objectives.

What is software engineering?

 Why is software engineering important?


5

By the end of this Lecture, you will...

Understand what software engineering is.


 Understand why software engineering is important.
Know answers to key questions related to the software
engineering discipline.
6

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,


developing and managing them.
7

Software Development Crises

Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
8

Software errors….the cost

Errors in computer software can have


devastating effects.
9

Software Crisis
Example 1: 2009,Computer glitch delays flights

Saturday 3rd October 2009-London, England (CNN)

•Dozens of flights from the UK were delayed Saturday after


a glitch in an air traffic control system in Scotland, but the
problem was fixed a few hours later.
•The agency said it reverted to backup equipment as
engineering worked on the system.
•The problem did not create a safety issue but could cause
delays in flights.
•Read more at:
http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flig
hts.delayed
10

Software Crisis
Example 2: Ariane 5 Explosion

•European Space Agency spent 10 years and $7 billion


to produce Ariane 5.

•Crash after 36.7 seconds.

•Caused by an overflow error. Trying to store a 64-bit


number into a 16-bit space.

•Watch the video:


http://www.youtube.com/watch?v=z-r9cYp3tTE
11

Software Crisis
Example 3: 1992, London Ambulance Service

•Considered the largest ambulance service in the


world.

•Overloaded problem.

•It was unable to keep track of the ambulances and


their statuses. Sending multiple units to some
locations and no units to other locations.

•Generates many exceptions messages.

•46 deaths.
12

Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
13

Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
.systems
that you encounter in your everyday
life which have software controlling
…them

List as many as you can


IEEE Definition
• “Software engineering is the application of
a systematic, disciplined, quantifiable
approach to the development, operation,
and maintenance of software; that is, the
application of engineering to software.”
15

Software Engineering

 The term software engineering first appeared in the 1968 NATO


Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..

 “.. An engineering discipline that is concerned with all aspects of


software production from the early stages of system specification
to maintaining the system after it has gone into use.” Sommerville,
pg.7
Which Principles Deployed by Software Engineering
Techniques to Overcome Human Cognitive
Limitations?

• Two important principles are


profusely used:
–Abstraction
–Decomposition
What is Abstraction?
• Simplify a problem by omitting
unnecessary details.
–Focus attention on only one aspect of
the problem and ignore other aspects
and irrelevant details.
–Also called model building.
Abstraction Example
• Suppose you are asked to develop an
overall understanding of some country.
– Would you:
• Meet all the citizens of the country, visit every
house, and examine every tree of the country?
– You would possibly refer to various types of
maps for that country only.
You would study an Abstraction…
• A map is:
– An abstract representation of a country.
– Various types of maps (abstractions) possible.
Decomposition Example
• Example use of decomposition
principle:
–You understand a book better when the
contents are organized into independent
chapters.
–Compared to when everything is mixed
up.
Why Study Software Engineering? (1)

• To acquire skills to develop large


programs.
–Handling exponential growth in complexity
with size.
–Systematic techniques based on abstraction
(modelling) and decomposition.
Why Study Software Engineering? (2)

• Learn systematic techniques of:

–Specification, design, user interface


development, testing, project
management, etc.

–Appreciate issues that arise in team


development.
Why Study Software Engineering? (3)

• To acquire skills to be a better


programmer:
• Higher Productivity

• Better Quality Programs


Software Crisis
• It is often the case that software products:
–Fail to meet user requirements.
–Expensive.
–Difficult to alter, debug, and enhance.
–Often delivered late.
–Use resources non-optimally.
Standish Group Report

28% Successful

49% Delayed or
cost overrun

23% Cancelled
Which Factors are Contributing to the Software
Crisis?
• Larger problems,

• Poor project management

• Lack of adequate training in software


engineering,

• Increasing skill shortage,

• Low productivity improvements.


Programs versus Software Products
• Usually small in size • Large

• Author himself is sole • Large number of users


user • Team of developers
• Single developer • Well-designed interface
• Well documented &
• Lacks proper user user-manual prepared
interface
• Systematic
• Lacks proper development
documentation
28

What is Software?

System
Documentation

User
Documentation
Programs versus Software Products
• Usually small in size • Large
• Author himself is sole • Large number of users
user
• Single developer • Team of developers
• Well-designed interface
• Lacks proper user
• Well documented &
interface
user-manual
• Lacks proper
• Systematic development
documentation
30

Types of Software

• 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.
• 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 or bespoke 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.
• 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.
31

Software Engineering vs. Computer Science


32

Software Engineering vs. Systems Engineering

Systems Engineering:
Interdisciplinary engineering field (computer, software, and process eng.).
Focuses on how complex engineering projects should be designed and managed.
Frequently asked questions about software
engineering
Question Answer

What is software? Computer programs and associated documentation. Software


products may be developed for a particular customer or may
be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
33
Frequently asked questions about software
engineering
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 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 managed
techniques and methods? 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 and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to
important advances in programming languages and software
reuse.
34
35

What is a Software Process?

 Activities and results that produce a software product:

SW Process Activity What is going on there?

What does the customer need?


Specification
What are the constraints?

Development Design & programming.

Validation Checking whether it meets requirements.

Evolution Modifications (e.g. customer/market).


36

What is a Software Process Model?

 Description of the software process that represents one view, such


as the activities, data or roles of people involved.

Examples of views Focus on…

Activities = human actions.


Workflow
What is input, output, and dependencies.

Activities = transformations of information.


Dataflow
How the input is transformed into output.
What is the role of people involved in each step of
Role/Action
the process?
37

Software Process Models

Component-Based
Waterfall approach Iterative development
Software Engineering CBSE

assembled form existing


components
38

The Cost of Software Engineering

 Depends on:
 The process used, and
 The type of software being developed.

 Each generic approach has a different profile of cost distribution.

 Roughly 60% of costs are development costs, 40% are testing


costs.

 For custom software, evolution costs often exceed development


costs.
Software costs
• Software costs often dominate computer system costs. The costs of
software on a PC are often greater than the hardware cost.

• • Software costs more to maintain than it does to develop.

• For systems with a long life, maintenance costs may be several times
development costs.

• • Software engineering is concerned with cost-effective software


development

39 10/20/23
3.Maintenance Aspects

– Maintenance
• software maintenance is much more complex
• Corrective maintenance
• Enhancement maintenance

– SE is fairly new (~25 years)

40 10/20/23
• Maintenance is a very costly phase
• Maintenance constitutes 67% of total cost
• Good software is maintained--Bad software is discarded

• Different types of maintenance

– corrective maintenance [20%]:

– adaptive maintenance [20%]:

– perfective maintenance [60%]:


41 10/20/23
– maintenance [20%]: Removing bug, fcorrectiveixing
errors
– enhancement
• adaptive maintenance [20%]: Changes in part of sym as a result
of some other change./ change in existing code/ upgrade the sym
• Triggered by changes in environment your software lives in like
OS, Hw, Sw dependencies etc..
• Eg: Updating the server, compiler…
• perfective maintenance [60%]: Modification of sw product after
delivery to improve performance, before they become faults.
• Eg: when Sw exposed to users they will think of different ways to
expand the system, suggest new features etc…

42 10/20/23
43

Cost distribution
Custom software development (Bespoke)
Software Model Waterfall Model
Cost units 0 25 50 75 100
Cost distribution
Software development activity Specification Design Development Integration and testing

Iterative Development
0 25 50 75 100

Specification Iterative Development System testing

Component-based Software Engineering


0 25 50 75 100

Specification Development Integration and testing

Development and evolution costs for long-lifetime systems


0 100 200 300 400

System development System evolution


44

Cost distribution
Generic software development

0 25 50 75 100

Specification Development System testing

Product development costs


45

What is CASE?

 Computer Aided Software Engineering.

 Programs that support:



Requirements analysis.

System modeling.

Debugging.

Testing.
46

Attributes of good software

 Functional attributes (performance; what the system does).


 Non-functional attributes (quality; how the system does it).

Product Characteristic Description


Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability, security, safety.
Efficiency Response time, processing time, memory utilization.
Usability Easy to learn how to use the system by target users.
Efficient to use the system by users to accomplish a task.
Satisfying to use by intended users.
47

Activity
 What are the key attributes for..
Cardiac monitor in an ICU
Interactive game Banking system
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature,
theme. bonds, money transfers. blood pressure.
48

Challenges facing software engineering

Challenge Why? Software needs to ..

Different computers, different


Heterogeneity platforms, different support systems.
Cope with this variability.

Businesses are more responsive


Be delivered in shorter time
Delivery  supporting software needs to
without compromising quality.
evolve as rapidly.

Software is a part of many aspects of


Demonstrate that it can be
Trust our lives (work, study, leisure).
trusted by users.
Software Engineering Project Management- KTU
49 10/20/23 Syllabus- Dr.VARGHESE S CHOORLAIL
High Level Design vs Low Level Design
• HLD -- High Level Design (HLD) is the overall system design
- covering the system architecture and database design.
• It describes the relation between various modules and
functions of the system. Data flow, flow charts and data
structures are covered under HLD.

• LLD -- Low Level Design (LLD) is like detailing the HLD. It


defines the actual logic for each and every component of the
system.
• Class diagrams with all the methods and relation between
classes comes under LLD. Programs specs are covered under
LLD.

50 10/20/23
51 10/20/23
52 10/20/23
53 10/20/23
• Phases of Life Cycle

– Requirements
– Specifications
– Design
– Implementation
– Integration
– Maintenance

54 10/20/23
Activities in requirements engineering
process

Software Engineering Project Management- KTU


55 10/20/23 Syllabus- Dr.VARGHESE S CHOORLAIL
• 1.Feasibility study:
Four steps
• Whether the identified can be achieved using the current software and
hardware technologies, under the current budget, etc.
• 2.Requirements elicitation and analysis:
• The process of deriving the system requirements through observation of
existing systems, discussions with stakeholders, etc.
• system models and prototypes
• 3.Requirements specification:
• The activity of writing down the information gathered during the elicitation
and analysis activity into a document that defines a set of requirements.
Two types of requirements may be included in this document;
• a.) user and b.)system requirements.
• 4.Requirements validation:
• During this process, our goal is to discover errors in the requirements
document. When errors are found, it must be modified to correct these
problems.
56 10/20/23
Software Design Process

Software Engineering Project Management- KTU


57 10/20/23 Syllabus- Dr.VARGHESE S CHOORLAIL
• The design process are sequential
• Interleaved.
• A feedback from one stage to another and rework can’t be avoided in any
design process.
• 1.Architectural design:
• It defines the overall structure of the system, the main components, their
relationships.
• 2.Interface design:
• It defines the interfaces between these components. The interface
specification must be clear.
• Therefore, a component can be used without having to know it’s
implemented. Once the interface specification are agreed, the components
can be designed and developed concurrently.

58 10/20/23
• 3.Component design:

• Take each component and design how it will operate, with the specific
design left to the programmer, or a list of changes to be made to
a reusable component.

• 4.Database design:

• The system data structures are designed and their representation in a


database is defined.

• This depends on whether an existing database is to be reused or a new


database to be created.

59 10/20/23
60

References

 PRESS&SUN-BULLETIN, The Binghamton Press Co., Binghamton, NY, October 1,1999.

 “Software Hell: Is there a way out?”, BUSINESS WEEK, December 6, 1999.

 IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE 1993.

 Sommerville, Ian “Software Engineering”, 9th edition, Addison-Wesley.

You might also like