Software Engineering
Software Engineering
CSE3111
Dr.Ileas Pramanik
Associate Professor
Dept. of CSE, Begum Rokeya University,Rangpur
Recommanded Books
• Recommended Text Book:
– Software Engineering A Practitioner's Approach
(6th / 7th Edition) by ROGER S. PRESSMAN
– Software Engineering by Ian Sommerville,
Addison-Wesley
– Learning UML By Sinan Si Alhir, Publisher : O'Reilly.
– Head First Design Patterns By Eric Freeman,
Elisabeth Freeman, Bert Bates, Kathy Sierra
2
Course Outline
• Introduction to Software Engineering
• Overview of Software Development Phases
• Requirements Engineering
• Systems Modeling Overview
• Software Design
• Software Testing
• Software Metrics and Quality
• Agile Development
• Software Project Management
• Project Estimation
• Team works
• Practical (LAB Problems, Project)
An Introduction to Software
Engineering
What is software?
• Software is
– instructions (computer programs) that when executed
provide desired function and performance, which could be
to perform a specific task, namely, result processing (CGPA
calculation) software.
– data structures (Make standard format for using)
that enable the programs to adequately manipulate
information, and integrate different fields uniquely (optimize
common things)
– documents (how to operate, working principle of tasks or
modules)
that describe the operation and use of the programs.
5
Dual Role of Software
• Software is a product
– Delivers computing potential (capability)
– Produces, manages, acquires, modifies, displays, or
transmits information
• Software is a vehicle (medium) for delivering a
product
– Supports or directly provides system functionality
– Controls other programs (e.g., an operating system)
– Effects communications (e.g., networking software)
– Helps build other software (e.g., software tools)
6
What is software engineering?
• Software engineering is an engineering
discipline that is concerned with all aspects of
software production.
• Software engineers should~
o Adopt a systematic and organised approach to their
work
o Use appropriate tools and techniques depending on
the problem to be solved
o The development constraints and the resources
available.
IEEE Definition of Software Engineering
• The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software.
Another Definition of Software Engineering
13
Software Engineering
The SE field is arguably less than four decades old. Practitioners have been developing software for longer
than that, of course. Land [21] traces that history back to the early 1950s, fully 72 years ago. But in
academe, software engineering is a somewhat newer field. Its first conferences were held in the late
1960s, and its academic presence did not begin to separate off from computer science until the early
1980s.
What Is A Good Software?
• Software is intangible
• Good software is subjective
• Some qualities that are used to assess software:
– Correctness: a program satisfies its specifications.
– Reliability: a program satisfies its intended functions.
– Usability: the effort required to learn, operate,
prepare input, and interpret the output.
– Integrity: Control of access to unauthorized persons.
15
Software Crisis
• Early days- problem of writing efficient
program.
Causes:
Project budget, Time.
S/W was very inefficient, low quality, did not
meet requirements.
Software Crisis
INCREASING INCREASING Increasing
DEMAND COMPLEXITY challenges
SOFTWARE CRISIS
Solution (SE)
Analysis
Planning
Design
Maintenance Implementat
ion
SE
Develop a SW product
Development team
must identify suitable
life cycle model
SE life cycle model defines entry and exist criteria for every phase
Without SW life cycle it becomes difficult for SW project manages to maintain
the progress of project
Software Lifecycle Model
1.Waterfall Model
2. Prototyping Model
3. Evolutionary Model
4. Spiral Model
Waterfall Model
Prototype Model
Prototype Model
Spiral Model
Software product quality
SEI CMM Model(SE institute-
Capability Maturity Model)
Software doesn't "wear out”.
bathtub curve,
30
Software doesn't "wear out”.
31
Software is developed or engineered, it is
not manufactured
• Some similarities exist between software development and
hardware manufacture,
• the two activities are fundamentally different.
• High quality is achieved through good design, in both case
• In manufacturing phase for hardware can
– introduce quality problems
• that are nonexistent (or easily corrected) for software.
• Both activities are dependent on people,
– but the relationship between people applied and work
accomplished
• is entirely different
• Software costs are concentrated in engineering.
32
What Is A Good Software?
• Software is intangible
• Good software is subjective
• Some qualities that are used to assess software:
– Correctness: a program satisfies its specifications.
– Reliability: a program satisfies its intended functions.
– Usability: the effort required to learn, operate,
prepare input, and interpret the output.
– Integrity: Control of access to unauthorized persons.
33
What Is A Good Software …?
– Efficiency: amount of computing resources required.
– Maintainability: effort required to locate and fix
errors in an operational programs.
– Portability: required effort to transfer a program
from one hardware/software environment to
another.
– Testability: required effort to test a program to
ensure its performance and intended functions.
– Interoperability: effort required to couple programs.
– Reusability: reuse of programs in other applications.
34
Software Applications
• System Software (Compilers, editors, etc.)
• Application Software (real-time processing –
that monitors/analyzes/ controls real-world
events as they occur or Business Software)
• Engineering & Scientific Software
• Embedded Software
• Personal Computer Software
• Artificial Intelligence Software
35
More Software Applications
• Ubiquitous computing —
– Ubiquitous every where
– wireless networks
• Net sourcing —
– the Web as a computing engine
• Open source —
– ”free” source code open to the computing community (a blessing, but also
a potential curse!)
• Also …
– Data mining
– Grid computing
– Cognitive machines
– Software for nanotechnologies
36
Legacy Software
• What is legacy software?
– Legacy means heritage/ traditional / folklore
– Any soft. one of the 7 categories.
– Most of them – state-of-the-art
– Some of them are older- used for decades.
– Older programs – often called legacy software
37
Legacy Software
Why must it change?
– It must be fixed to eliminate errors.
– It must be enhanced to implement new functional and
non-functional requirements
– Software must be adapted to meet the needs of new
computing environments or technology.
– Software must be enhanced to implement new business
requirements.
– Software must be extended to make it interoperable
with other more modern systems or databases.
– Software must be re-architected to make it viable within
a network environment.
38
Software Myths
• Myth erroneous beliefs about software and the
process that is to built it~ early days of computing.
• Affect
– managers,
– customers (and other non-technical stakeholders) and
– practitioners
• Are believable because they often have elements of truth,
• but …
– Invariably lead to bad decisions,
• therefore …Insist on reality as you navigate your way through
software engineering
39
Management Myths
• “We already have a book of standards and procedures for
building software. It does provide my people with
everything they need to know …”
41
Practitioner’s Myths
• “Let’s start coding ASAP (as soon as possible), because once
we write the program and get it to work, our job is done …”