You are on page 1of 46

Introduction of Software

Engineering

UCS 503 Software Engineering 1


A Glimpse of Syllabus
UCS503 SOFTWARE ENGINEERING
UCS503: SOFTWARE ENGINEERING L -3 T-0 P-2 Cr 4.0
Course objective: To apply principles of software development and evolution. To specify,
abstract, verify, validate, plan, develop and manage large software and learn emerging trends in
software engineering.
Software Engineering and Processes: Introduction to Software Engineering, Software
Evolution, Software Characteristics, Software Crisis: Problem and Causes, Software process
models (Waterfall, Incremental, and Evolutionary process models and Agile), Software quality
concepts, process improvement, software process capability maturity models, Personal Software
process and Team Software Process, Overview of Agile Process.
Requirements Engineering: Problem Analysis, Requirement elicitation and Validation,
Requirements modeling: Scenarios, Information and analysis classes, flow and behavioral
modeling, documenting Software Requirement Specification (SRS).
Software Design and construction: System design principles: levels of abstraction
(architectural and detailed design), separation of concerns, information hiding, coupling and
cohesion, Structured design (top-down functional decomposition), object-oriented design, event
driven design, component-level design, test driven design, data-structured centered, aspect
oriented design , function oriented, service oriented, Design patterns, Coding Practices:
Techniques, Refactoring, Integration Strategies, Internal Documentation.
Software Verification and Validation: Levels of Testing, Functional Testing, Structural
Testing, Test Plan, Test Case Specification, Software Testing Strategies, Verification &
Validation, Unit, Integration Testing, Top Down and Bottom Up Integration Testing, Alpha &
Beta Testing, White box and black box
UCS 503 testing
Software techniques, System Testing and Debugging.
Engineering 2
Syllabus-Contd.
Software Project Management: SP Estimation of scope(LOC,FP
etc),time(Pert/CPM Networks), and cost(COCOMO models),
Quality Management, Plan for software Quality Control and
Assurance, Earned Value Analysis.
Advanced Topics: Formal specification, CASE Tools, Software
Business Process Reengineering, Configuration Management.

Laboratory work: Implementation of Software Engineering


concepts and exposure to CASE
tools like Rational Software suit, Turbo Analyst, Silk Suite.
Follow entire SDLC depending on project domain.

UCS 503 Software Engineering 3


Course Learning Outcomes (CLOs):
On completion of this course, the students will be able to

1. Analyze software development process models, including agile models


and traditional
models like waterfall.
2. Demonstrate the use of software life cycle through requirements
gathering, choice of process model and design model.
3. Apply and use various UML Models for software analysis, design and
testing.
4. Acquire knowledge about the concepts of application of formal
specification, CASE tools and configuration management for software
development.
5. Analysis of software estimation techniques for creating project
baselines.
UCS 503 Software Engineering 4
Text Books:
1. Pressman R., Software Engineering, A Practitioners
Approach, McGraw Hill International (2014).
2. Sommerville I., Software Engineering, Addison-Wesley
Publishing Company (2010).

Reference Books:
1. Jalote P., An integrated Approach to Software Engineering,
Narosa(2005).
2. Booch G.,RambaughJ.,JacobsonI.,The Unified Modeling
Language

UCS 503 Software Engineering 5


Lecture Objectives

Identify the scope and necessity of software


engineering.
Identify the causes and solutions for software
crisis.
Discussion on Software Myths
Differentiate a piece of program from a
software product.
UCS 503 Software Engineering 6
Scope and Necessity of Software Engineering
Software engineering is an engineering approach for software development.
We can alternatively view it as a systematic collection of past experience.
The experience is arranged in the form of methodologies and guidelines.
A small program can be written without using software engineering
principles. But if one wants to develop a large software product, then
software engineering principles are indispensable to achieve a good
quality software cost effectively. These definitions can be elaborated with
the help of a building construction analogy.
Suppose you have a friend who asked you to build a small wall as shown
below. You would be able to do that using your common sense. You will
get building materials like bricks; cement etc. and you will then build the
wall.

Fig. 1.1 A Small Wall


UCS 503 Software Engineering 7
Scope and Necessity of Software Engineering
But what would happen if the same friend asked you to build a large multistoried
building as shown in fig. 1.2

Fig. 1.2: A Multistoried Building

You don't have a very good idea about building such a huge complex.
It would be very difficult to extend your idea about a small wall construction into
constructing a large building.
Even if you tried to build a large building, it would collapse because you would not
have the requisite knowledge about the strength of materials, testing, planning,
architectural design, etc.
Building a small wall and building a large building are entirely different ball games.
You can use your intuition and still be successful in building a small wall, but
building a large building requires knowledge of civil, architectural and other
engineering principles.
UCS 503 Software Engineering 8
Scope and Necessity of Software Engineering

Without using software engineering principles it would be difficult to develop large


programs. In industry it is usually needed to develop large programs to
accommodate multiple functions.
A problem with developing such large commercial programs is that the complexity
and difficulty levels of the programs increase exponentially with their sizes as shown in
fig. 1.3.

UCS 503 Software Engineering 9


Scope and Necessity of Software Engineering

For example, a program of size 1,000 lines of code has


some complexity. But a program with 10,000 LOC is not
just 10 times more difficult to develop, but may as well
turn out to be 100 times more difficult unless software
engineering principles are used.
In such situations software engineering techniques come
to rescue. Software engineering helps to reduce the
programming complexity. Software engineering
principles use two important techniques to reduce
problem complexity:
abstraction and decomposition.

UCS 503 Software Engineering 10


Evolving Role of Software

UCS 503 Software Engineering 11


Evolving Role of Software

UCS 503 Software Engineering 12


IBM Data Compilation (2001)

UCS 503 Software Engineering 13


Evolving Role of Software

UCS 503 Software Engineering 14


Factors Contributing to Software Crisis

UCS 503 Software Engineering 15


Some Software Failures

UCS 503 Software Engineering 16


Some Software Failures

UCS 503 Software Engineering 17


Some Software Failures

UCS 503 Software Engineering 18


Some Software Failures

UCS 503 Software Engineering 19


Some Software Failures

UCS 503 Software Engineering 20


Some Software Failures

UCS 503 Software Engineering 21


Some Software Failures

UCS 503 Software Engineering 22


Some Software Failures

UCS 503 Software Engineering 23


What is Software?
The product that software professionals build and then support over
the long term.
Software encompasses:
(1) instructions (computer programs) that when executed provide
desired features, function, and performance;
(2) data structures that enable the programs to adequately store and
manipulate information and
(3) documentation that describes the operation and use of the
programs.

UCS 503 Software Engineering 24


UCS 503 Software Engineering 25
UCS 503 Software Engineering 26
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.

UCS 503 Software Engineering 27


UCS 503 Software Engineering 28
UCS 503 Software Engineering 29
UCS 503 Software Engineering 30
UCS 503 Software Engineering 31
UCS 503 Software Engineering 32
UCS 503 Software Engineering 33
UCS 503 Software Engineering 34
UCS 503 Software Engineering 35
UCS 503 Software Engineering 36
UCS 503 Software Engineering 37
UCS 503 Software Engineering 38
UCS 503 Software Engineering 39
UCS 503 Software Engineering 40
UCS 503 Software Engineering 41
UCS 503 Software Engineering 42
UCS 503 Software Engineering 43
UCS 503 Software Engineering 44
UCS 503 Software Engineering 45
Software Engineering Definition
The seminal definition:
[Software engineering is] the establishment and use of
sound engineering principles in order to obtain
economically software that is reliable and works
efficiently on real machines.

The IEEE definition:


Software Engineering: The application of a systematic,
disciplined, quantifiable approach to the development,
operation, and maintenance of software; that is, the
application of engineering to software.

UCS 503 Software Engineering 46

You might also like