Software Engineering Chapter 1
Software Engineering Chapter 1
By Daniel A.
CHAPTER ONE
HISTORY AND OVERVIEW
Software Applications
Characteristics of software
3
WHAT IS SOFTWARE?
Software is collection of computer programs, procedures,
rules, and associated documentations and data .
This definition clearly states that software is not just programs,
but includes all the associated documentation and data.
4
SOFTWARE TYPES
There are different types of software. One of the most important
types are custom software, generic software and embedded
software.
compilers, etc
5
Embedded: Built into hardware
6
An important difference between these types of software is that, in
generic products, the organization that develops the software
controls the software specification.
For custom products, the specification is usually developed and
controlled by the organization that is buying the software.
software The
software developers must work to that specification.
9
SOFTWARE COSTS
10
SOFTWARE APPLICATIONS
12
SOFTWARE CHARACTERISTICS
13
SOFTWARE CRISIS
16
Many more projects fail because they don’t use software engineering.
Failures occur because:
of the size of the project relative to previous efforts
key personnel have left
of failure to understand requirements
19
Software Engineering: A layered Technology
tools
methods
a “quality” focus
20
Software Engineering is a layered technology (as shown in the
above slide) that relies on an organizational commitment to
quality.
Any engineering approach must rest on organizational
21
Method provides technical how-to’s for building
software. It encompasses many tasks including
communication, requirement analysis, design modeling,
22
FAQS ABOUT SOFTWARE ENGINEERING
Question Answer
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality and
What are the fundamental software engineering activities? Software specification, software development, software
validation and software evolution.
What is the difference between software engineering and Computer science focuses on theory and fundamentals;
computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.
What is the difference between software engineering and System engineering is concerned with all aspects of
system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
23
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced delivery
software engineering? times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs, 40% are
engineering? testing costs. For custom software, evolution costs often exceed
development costs.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.
24
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.
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.
26
SOFTWARE PROCESS MODEL
A simplified representation of a software process, presented
from a specific perspective.
28
SOFTWARE ENGINEERING METHODS
Structured approaches to software development which include
system models, notations, rules, design advice and process
guidance.
30
CHALLENGES FACING SOFTWARE
ENGINEERING
Heterogeneity, delivery and trust.
Heterogeneity
31
SOFTWARE QUALITY AND THE STAKEHOLDERS
33
Example - ATM stakeholders
Bank customers
Representatives of other banks
34
SOFTWARE QUALITY: CONFLICTS AND OBJECTIVES
36
SHORT TERM VS. LONG TERM QUALITY
Short term:
Does the software meet the customer’s immediate needs?
Long term:
Maintainability
Customer’s future needs
Scalability: Can the software handle larger volumes of data?
37
PROFESSIONAL & ETHICAL RESPONSIBILITY
38
Some issues of professional responsibilities are:
Confidentiality – respect the confidentiality of their
employers
Competence – not knowingly accept work which is out
39
Software engineers shall adhere to the following code of ethics
and professional principles
Act consistently with public interest
Act in the best interests of their clients
Ensure their products meet the highest professional standards
40
SUMMARY
Software engineering is an engineering discipline which is
concerned with all aspects of software production.
Software products consist of developed programs and associated