Chapter 1
Chapter 1
Chapter 1 1
1.1 Software Concepts
Chapter 1 3
1.2 Software Types
Application software
System software
Systems
Hardware
Chapter 1 4
1.2.1 Software Types
(functional perspective)
System software : Provides capabilities that make any
hardware useable by managing its operation.
Chapter 1 5
1.2.1 Software Types
(functional perspective)
Chapter 1 6
1.2.2 Software Types
(market perspective)
Software products types
Generic (build to market) : developed to be sold to a
range of different customers e.g. PC software such as
Excel or Word.
Bespoke (custom or build to order) : developed for a
single customer according to their specification.
Chapter 1 10
1.5 What is software engineering?
PROBLEM Constraints
Tools
Resources SOLUTION
Approaches
Chapter 1 11
1.6 Software engineering importance
Computer Software becomes a driving force because :
Software engineering is concerned with theories, methods and
tools for professional software development.
It is embedded in systems of all kinds : transportation, medical,
telecom, military, industrial entertainment, office products,
etc..
Serves as the basis for modern scientific investigation and
engineering problem solving.
It plays dual roles : product and delivery vehicle of itself.
It is the engine that drives business and decision making
The economies of ALL developed nations are dependent on
software.
Expenditure on software represents a significant fraction of
Chapter 1 12
1.7 What is the difference between software
engineering and computer science?
Computer
Science Customer
Theorie
Computer
s Problem
functions
Software
Engineering
Tools and
approaches to
solve Problem
Chapter 1 14
1.8 What is the difference between software
engineering and system engineering?
Chapter 1 15
1. 9 Who are involved in software engineering?
Sponsor system
Customer development
$$$$$
Needs
Developer
User Contractual
System
obligation
builder
Needs
Software system
Uses system
Chapter 1 16
1. 10 What is a software process?
A set of activities whose goal is the development or
evolution of software.
Generic activities in all software processes are:
Specification : what the system should do and its development
constraints
Development (design, and coding) - production of the
software system
Validation - checking that the software is what the customer
wants
Evolution - changing the software in response to changing
demands.
Different software processes organize these activities in
different
Chapter 1 ways and are described in different levels. 17
1.11 Who are the members of the
software development team?
Requirements Analyst
Definition and Analysis
System Design Designer
System Testing
System delivery Trainer
System maintenance
Chapter 1 18
1.12 What is a software process
model?
A simplified representation of a software process,
presented from a specific perspective.
Examples of process perspectives are
Workflow perspective - sequence of activities (what);
Data-flow or activity perspective - information flow (how);
Role/action perspective - who does what.
Generic process models
Waterfall;
Iterative development;
Component-based software engineering.
Chapter 1 19
1.13 What are the costs of software
engineering?
Chapter 1 21
1.14 What are software engineering
methods?
Chapter 1 22
1.15 What is CASE (Computer-Aided
Software Engineering)
Chapter 1 23
1.16 What are the attributes of good
software?
The software should deliver the required functionality and performance to the user
and should be maintainable, dependable and acceptable.
Maintainability (flexibility, scalability, simplicity)
Software must evolve to meet changing needs;
Dependability (reliability, security, and safety)
Software must be trustworthy;
Efficiency (performance, memory size)
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible
with other systems.
Chapter 1 24
1.17 What are the key challenges facing
software engineering?
Heterogeneity
Developing techniques for building software that can cope
with heterogeneous platforms and execution environments;
Delivery
Developing techniques that lead to faster delivery of
software;
Trust
Developing techniques that demonstrate that software can be
trusted by its users.
Chapter 1 25
1.18 Professional and ethical
responsibility
Confidentiality
Engineers should normally respect the confidentiality of their
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level of competence.
They should not knowingly accept work which is out with their
competence.
Chapter 1 27
1.19 Issues of professional
responsibility
Intellectual property rights
Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They
should be careful to ensure that the intellectual property of
employers and clients is protected.
Computer misuse
Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s
machine, say) to extremely serious (dissemination of viruses).
Chapter 1 28
1.20 Software project management
Software
Management
activities
developmen Software
analysis
t
Development Software
models design
Software
Chapter 1
implementation 30