You are on page 1of 35

CHAPTER 1 – INTRODUCTION

TO SOFTWARE ENGINEERING
What is Software?

Software is: (1) instructions (computer programs) that when


executed provide desired features, function, and performance;
(2) data structures that enable the programs to adequately
manipulate information and (3) documentation that describes the
operation and use of the programs.
What is Software?

▪ Software is developed or engineered, it is not manufactured in the


classical sense.
▪ Definition from Cambridge Dictionary:
▪ Development:
the process in which someone or something grows or changes and
becomes more advanced
▪ Manufacture:
the process to produce goods in large numbers, usually in a factory
using machines
What is Software?

▪ Software doesn't "wear out."


▪ Although the industry is moving toward component-based
construction, most software continues to be custom-built.
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 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.
Product specification

 Generic products
▪ 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 products
▪ 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.
Application types

 Stand-alone applications
 Interactive transaction-based applications
 Embedded control systems
 Batch processing systems
 Entertainment systems
 Systems for modeling and simulation
 Data collection systems
 Systems of systems
Software engineering

 Software engineering is an engineering discipline that is concerned


with all aspects of software production from the early stages of
system specification through to maintaining the system after it has
gone into use.
 Engineering discipline
▪ Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
 All aspects of software production
▪ Not just technical process of development. Also project
management and the development of tools, methods etc. to
support software production.
What are SE Methods?

▪ Structured approaches to software development which include


system models, notations, rules, design advice and process
guidance
▪ Model descriptions
▪ Descriptions of graphical models which should be produced
▪ Rules
▪ Constraints applied to system models
▪ Recommendations
▪ Advice on good design practice
▪ Process guidance
▪ What activities to follow
What are the Costs of Software Engineering?

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


costs
▪ For custom software, evolution costs often exceed
development costs
▪ Costs vary depending on
▪ type of system being developed
▪ the requirements of system attributes such as performance
and system reliability
▪ Distribution of costs depends on the development model that is
used.
Importance of software engineering

 More and more, individuals and society rely on advanced software


systems. We need to be able to produce reliable and trustworthy
systems economically and quickly.
 It is usually cheaper, in the long run, to use software engineering
methods and techniques for software systems rather than just write
the programs as if it was a personal programming project. For most
types of system, the majority of costs are the costs of changing the
software after it has gone into use.
Key Challenges

▪ Heterogeneity
▪ Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
▪ Business and social change
▪ Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available. They need
to be able to change their existing software and to rapidly develop new
software.
▪ Security and Trust
▪ As software is intertwined with all aspects of our lives, it is essential that
we can trust that software.
Key Challenges

▪ Heterogeneity
▪ Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
▪ Business and social change
▪ Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available. They need
to be able to change their existing software and to rapidly develop new
software.
▪ Security and Trust
▪ As software is intertwined with all aspects of our lives, it is essential that
we can trust that software.
Key Challenges

▪ Heterogeneity
▪ Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
▪ Business and social change
▪ Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available. They need
to be able to change their existing software and to rapidly develop new
software.
▪ Security and Trust
▪ As software is intertwined with all aspects of our lives, it is essential that
we can trust that software.
Key Challenges

▪ Heterogeneity
▪ Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
▪ Business and social change
▪ Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available. They need
to be able to change their existing software and to rapidly develop new
software.
▪ Security and Trust
▪ As software is intertwined with all aspects of our lives, it is essential that
we can trust that software.
Software process activities

 Software specification
 Software development
 Software validation
 Software evolution
“The Software Crisis”

 We’ve been in the midst of a crisis ever since the 1968 NATO
meeting that christened software engineering
 “We are unable to produce or maintain high-quality software at
reasonable price and on schedule.”
Some “crisis” issues

 Relative cost of hardware/software


 Low productivity
 “Wrong” products
 Poor quality
 Constant maintenance
 Technology transfer is slow
Causes of Software Crisis

▪ Project running over budget.


▪ Project running over time.
▪ Software was very inefficient.
▪ Software was of low quality.
▪ Software often didn’t meet requirements.
▪ Project were unmanageable and code difficult to maintain.
▪ Software was never delivered.
Example of Software Crisis

▪ https://www.youtube.com/watch?v=gp_D8r-2hwk
▪ https://www.youtube.com/watch?v=W3YJeoYgozw
Solution of Software Crisis

▪ Software Engineering
Solution of Software Crisis

▪ In software engineering, the possible solution to software crisis is


the proper use of software metrics and the proper utilization of these
metrics .
▪ For the implementation of this solution to the problem of software
crisis some pre-requisites are there
▪ Knowledge of basic statistics and experimental design.
▪ Basic understanding of commonly used software life cycle
models, at least to the level covered in an introductory senior or
graduate-level software engineering course.
▪ Experience working as a team member on a software
development project.
Solution of Software Crisis

For the projects which are delivered late must adopt the following
methodology:
▪ Project Planning & Scheduling → for the projects which are
delivered late must adopt the following methodology.
▪ Cost Estimation → For the projects running out of budget, cost
estimation methodology must be applied.
▪ Risk Management → In order to cope up with the increasing
system complexity, risk management should be applied.
Cost of Quality

 COST OF QUALITY (COQ) is a measure that quantifies the cost of


control/conformance and the cost of failure of control/non-
conformance. In other words, it sums up the costs related to
prevention and detection of defects and the costs due to
occurrences of defects.
Cost of Quality

▪ Making changes to improve software quality requires time and


money to:
▪ Spot the problem
▪ Isolate its source
▪ Connect it to the real cause
▪ Fix the requirements, design, and code
▪ Test the fix has not caused new problems
▪ Change the documentation
Essential attributes of good software

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing
needs of customers. This is a critical attribute because software change is an inevitable
requirement of a changing business environment.

Dependability and security Software dependability includes a range of characteristics including reliability, security
and safety. Dependable software should not cause physical or economic damage in the
event of system failure. Malicious users should not be able to access or damage the
system.

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.

Acceptability Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable and compatible with other systems that they
use.
Achieving Software Quality

▪ Software quality is the result of good project management and solid


engineering practice
▪ Software Engineering methods
▪ Project Management techniques
▪ Quality Control
▪ Quality Assurance
Achieving Software Quality

▪ Software quality is the result of good project management and solid


engineering practice
▪ Software Engineering methods
▪ Project Management techniques
▪ Quality Control
▪ Quality Assurance
Achieving Software Quality

▪ Software quality is the result of good project management and solid


engineering practice
▪ Software Engineering methods
▪ Project Management techniques
▪ Quality Control
▪ Quality Assurance
Achieving Software Quality

▪ Software quality is the result of good project management and solid


engineering practice
▪ Software Engineering methods
▪ Project Management techniques
▪ Quality Control
▪ Quality Assurance
Achieving Software Quality

▪ Software quality is the result of good project management and solid


engineering practice
▪ Software Engineering methods
▪ Project Management techniques
▪ Quality Control
▪ Quality Assurance
Total Quality Management (TQM)

Customers will seek out Improved quality that exceeds


the highest quality customer expectations will generate
product more revenues that exceed the cost
of quality

Therefore,
quality is “free”

You might also like