1 - Introduction To Software Engineering
1 - Introduction To Software Engineering
Software Engineering
1
Syllabus
Software Engineering: Introduction, Importance,
Evaluation, Characteristics, Components. Software
Application; Software Development Process Models:
Waterfall Model, Prototyping Model, Spiral Model, RAD
Model, etc., Agile Modelling; Requirement
Engineering: Problem Analysis, Requirement
Verification, Requirement Validation Modularity;
Software Project Management: Cost Estimation
Project Scheduling, Risk Management, Quality
Assurance, Project Monitoring; Estimation
Techniques: Size estimation- LOC Estimation, Function
Count, Cost Estimation, Halstead Size Estimation,
Software Design: Analysis Modeling, Functional
modeling, Behavioral Modeling; Unified modeling
language; Software Architecture: Data Design: Data
2
modeling, data structures; Software Maintenance:
Books
Text Book
R. Mall, “Fundamental of Software Engineering”,
4th Edition, PHI, 2014
Ian Summerville, “Software Engineering”, 9th
Edition, Addition Wesley, 2002.
Reference Books
Pankaj Jalote, “Software Engineering a Precise
Approach”, Wiley, 2010.
Roger S. Pressman, “Software Engineering: A
Practitioners Approach”, 7th Edition, TMH, 2016.
3
4
What is Software Engineering?
Engineering approach to develop software.
Building Construction Analogy.
Systematic collection of past experience:
techniques,
methodologies,
Software engineering is the application of a
systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software. (Definition by IEEE). That is the application of
engineering to software.
The term software engineering first appeared in the
1968 NATO Software Engineering Conference, and was
meant to provoke thought regarding the perceived
"software crisis" at the time.
5
Software Engineering
Software engineering is:
An engineering discipline that provides
knowledge, tools, and methods for:
Defining software requirements
Performing software design
Software construction
Software testing
Software maintenance tasks
Software project management
6
Sub-disciplines of Software Engineering
Software engineering can be divided into 11 sub
disciplines. They are:
Software requirements: The elicitation, analysis,
specification, and validation of requirements for software.
Software architecture: The elicitation, analysis,
specification, definition and design, and validation and
control of software architecture requirements.
Software design: The design of software is usually done
with Computer-Aided Software Engineering (CASE) tools
and use standards for the format, such as the Unified
Modeling Language (UML).
Software development: The construction of software
through the use of programming languages.
Software testing
Software maintenance: Software systems often have
problems and need enhancements for a long time after they7
Sub-disciplines of Software Engineering
Software configuration management: Since software
systems are very complex, their configuration (such as
versioning and source control) have to be managed in a
standardized and structured method.
Software engineering management: The management of
software systems borrows heavily from project
management, but there are nuances encountered in
software not seen in other management disciplines.
Software development process: The process of building
software is hotly debated among practitioners; some of the
better-known processes are the Waterfall Model, the Spiral
Model, Iterative and Incremental Development, and Agile
Development.
Software engineering tools
Software quality
8
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 editing,
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. 9
Software Applications
1. System software: such as compilers, editors, file
management utilities
2. Application software: stand-alone programs for specific
needs.
3.Engineering/scientific software: Characterized by
“number crunching”algorithms. such as automotive stress
analysis, molecular biology, orbital dynamics etc
4. Embedded software resides within a product or system.
(keypad control of a microwave oven, digital function of
dashboard display in a car)
5. Product-line software focus on a limited marketplace to
address mass consumer market. (word processing,
graphics, database management)
6. WebApps (Web applications) network centric software.
As web 2.0 emerges, more sophisticated computing
environments is supported integrated with remote
database and business applications.
7. AI software uses non-numerical algorithm to solve10
Need for Software Engineering
The Five Drivers of Software Engineering
Manage complexity of large programs
Reduce time and cost of development
Reduce maintenance cost
Address “Software crisis” (Unacceptable low
quality of software, exceeds deadline and
budget.)
Produce quality software
11
Software Characteristics
Its characteristics that make it different from other
things human being build.
Features of such logical system:
Software is developed or engineered; it is not
manufactured in the classical sense which has quality
problem.
Software doesn't "wear out.” but it deteriorates (due
to change). Hardware has bathtub curve of failure
rate ( high failure rate in the beginning, then drop to
steady state, then cumulative effects of dust,
vibration, abuse occurs).
Although the industry is moving toward component-
based construction (e.g. standard screws and off-the-
shelf integrated circuits), most software continues to
be custom-built. Modern reusable components
encapsulate data and processing into software parts
12
to be reused by different programs. E.g. graphical
FAQ about software engineering
Question Answer
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 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.
13
Essential attributes of good software
Product characteristic Description
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
18
Benefits Of Software Quality
Reduced maintenance cost
Stable and useful product
Satisfy customer needs
Better chances for continuing releases
Build corporate culture and identity
Better chances for software and design reuse
19
McCall’s Quality Factors
McCall’s quality factors were proposed in the early 1970s. They are
as valid today as they were in that time. It’s likely that software built
to conform to these factors will exhibit high quality well into the 21st
century, even if there are dramatic changes in technology.
M a in ta in a b ility P o r ta b ility
F le x ib ility R e u s a b ility
T e s ta b ility
In te r o p e ra b ility
P R O D U C T R E V IS IO N P R O D U C T T R A N S IT I O N
P R O D U C T O P E R A T IO N
C o rre c tn e s s U s a b ility E ff ic ie n c y
21
McCall’s Quality Factors Model Tree
22
McCall’s Software Quality Factors
Factor Criteria Description
Product Maintainabilit Can I fix it?
Revision y
Flexibility Can I change it?
Testability Can I test it?
Product Portability Will I be able to use it on another
Transition machine?
Reusability Will I be able to reuse some of the other
software in other application?
Interoperabili Will I be able to interface it with another
ty system?
Product Correctness Does it do what I want?
Operation Reliability Does it do it accurately all the time?
Efficiency Will it run as well as it can?
Integrity Is it secure?
23
Usability Is it easy to use?
McCall Quality Model and Alternative Models
Alternative factor models
No. Software quality McCall’s classic Evans and Deutsch and
factor model Marciniak model Willis model
1 Correctness + + +
2 Reliability + + +
3 Efficiency + + +
4 Integrity + + +
5 Usability + + +
6 Maintainability + + +
7 Flexibility + + +
8 Testability +
9 Portability + + +
10 Reusability + + +
11 Interoperability + + +
12 Verifiability + +
13 Expandability + +
14 Safety +
15 Manageability +
16 Survivability +
24
Thank You
25