0% found this document useful (0 votes)
72 views

Software Engineering

This document provides an introduction to software engineering. It defines software engineering as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. It discusses the objectives of software engineering in improving quality, increasing customer satisfaction, and more. It also covers key concepts like the software lifecycle model, different types of software applications, and qualities of good software.

Uploaded by

Rakibul Hasan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views

Software Engineering

This document provides an introduction to software engineering. It defines software engineering as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. It discusses the objectives of software engineering in improving quality, increasing customer satisfaction, and more. It also covers key concepts like the software lifecycle model, different types of software applications, and qualities of good software.

Uploaded by

Rakibul Hasan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42

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

• The practical application of scientific


knowledge in the design and construction of
computer programs and the associated
documentation required to develop, operate,
and maintain them.
Objectives of Software Engineering
• To improve quality of software products
• To increase customer satisfaction
• To increase productivity
• To increase job satisfaction
• Software engineering is not programming.
Programming is an important part of software
engineering.
• “This is not a programming course”
What is the difference between software
engineering and computer science?
• Computer science is concerned with theory
and fundamentals; software engineering is
concerned with the practicalities of
developing and delivering useful software.
• Computer science theories are still insufficient
to act as a complete underpinning for
software engineering (unlike e.g. physics and
electrical engineering).
Difference between software engineering
and system engineering
• System engineering is concerned with all aspects
of computer-based systems development including
hardware, software and process engineering.
• Software engineering is part of this process
concerned with developing the software
infrastructure, control, applications and databases
in the system.
• System engineers are involved in system
specification, architectural design, integration and
deployment.
Software Characteristics
• Software Characteristics
– Software is developed or engineered, it is not
manufactured in the classical sense.
– Software doesn't "wear out.
– the industry is moving toward component-based
assembly, most software continues to be custom
built.

13
Software Engineering

• Engineering: Application of science tools and


methods to find cost effective solution to problems.

• Software Engineering: It is defined as systematic,


disciplined and quantifiable approach for the
development, operation, and maintenance of
software.

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

Same Same Tools


Same S/W
methods

Solution (SE)
Analysis

Planning
Design

Maintenance Implementat
ion

Software Lifecycle Model is a process model(Descriptive and Diagrammatic)


To overcome S/W crises

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 …”

• “If my project is behind the schedule, I always can add


more programmers to it and catch up …”
(called “The Mongolian Horde concept”)

• “If I decide to outsource the software project to a third


party, I can just relax: Let them build it, and I will just
pocket my profits …”
40
Customer Myths
• “A general statement of objectives is sufficient
to begin writing programs - we can fill in the
details later …”

• “Project requirements continually change but


this change can easily be accommodated
because software is flexible …”

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 …”

• “Until I get the program running, I have no way of assessing


its quality …”

• “The only deliverable work product for a successful project


is the working program …”

• “Software engineering is baloney (nonsense). It makes us


create tons of paperwork, only to slow us down …”
42

You might also like