Chapter 1
Chapter 1
Course Title
Software Engineering (SE3037)
Chapter 1
Software requirements fundamentals
2
History of software engineering
● The notion of software engineering was first proposed in 1968 at a
conference held to discuss what was then called the software crisis
(Naur and Randell 1969).
● It became clear that individual approaches to program development
did not scale up to large and complex software systems. These were
unreliable, cost more than expected, and were delivered late.
● Throughout the 1970s and 1980s, a variety of new software
engineering techniques and methods were developed, such as
structured programming, information hiding, and object-oriented
development.
● Tools and standard notations were developed which are the basis of
today’s software engineering.
http://software-engineering-book.com/web/history
3
Frequently asked questions about software
engineering
1. What is software?
Good software should deliver the required functionality and performance to the
user and should be maintainable, dependable, efficient and acceptable.
Coping with increasing diversity, demands for reduced delivery times and
developing trustworthy software. 5
Frequently asked questions about software
engineering
Roughly 60% of software costs are development costs, 40% are testing costs.
For custom software, evolution costs often exceed development costs.
There are no methods and techniques that are good for everything.
6
kinds of software product
● Two kinds of software product:
sold on the open market to any customer who can buy them.
■ Apps for mobile devices and software for PCs, such as word
processors and drawing tools.
7
Essential attributes of good software
The software should deliver the required functionality and performance to
the user and should be maintainable, dependable, efficiency and
acceptable.
● Maintainability
○ Software should be written in such a way 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.
○ Software has to be secure so that malicious users cannot access or
damage the system.
8
Essential attributes of good software (cont.)
● Efficiency
9
Software engineering
● Software engineering is an engineering field that is concerned with all
aspects of software production.
● Software engineers should adopt a systematic and organized approach
to their work and use appropriate tools and techniques depending on
the problem to be solved. Four fundamental activities are common to
all software production.
This example from the mental health care patient information system
(Mentcare) shows how a user requirement may be expanded into several
system requirements.
14
Readers of different types of requirements
specification
15
Functional and Non-functional requirements
16
Functional Requirements
● Describe what the system should do.
● They should describe the system functions, their inputs and outputs,
and exceptions in detail.
● Vary from general requirements covering what the system should do to
very specific requirements reflecting local ways of working or an
organization’s existing systems.
17
Functional Requirements (.cont)
● For example, here are examples of functional requirements for the
Mentcare system, used to maintain information about patients
receiving treatment for mental health problems:
2. The system shall generate each day, for each clinic, a list of
patients who are expected to attend appointments that day.
18
Requirements imprecision
● Problems arise when requirements are not precisely stated.
19
Requirements completeness and consistency
● Complete
● Consistent
20
Non-functional Requirements
● They define system properties and constraints e.g. reliability,
response time, maintainability, scalability, portability, and
storage requirements.
● Constraints are I/O device capability, system representations,
etc.
● Process requirements may also be specified mandating a
particular IDE, programming language or development
method.
● Often internal to an organization or required for fit /
compatibility with other comparable systems.
● Non-functional requirements may be more critical than
functional requirements. If these are not met, the system may
be useless.
21
Types of Non-functional Requirements
● Product requirements
● Organizational requirements
● External requirements
22
Types of Non-functional Requirements
23
Examples of possible non-functional requirements
for the Mentcare system
● Product requirement
24
Non-functional Requirements Implementation
25
Metrics for specifying non-functional requirements
26
Domain requirements
27
Domain requirements problems
● Understandability
28
Summary
● Software engineering is an engineering discipline that is concerned
with all aspects of software production.
● Software products consist of developed programs and associated
documentation. Essential product attributes are maintainability,
dependability, efficiency and usability.
● The software process consists of activities that are involved in
developing software products. Basic activities are software
specification, development, validation and evolution.
● Requirements for a software system set out what the system should do
and define constraints on its operation and implementation.
● Functional requirements are statements of the services that the system
must provide or are descriptions of how some computations must be
carried out.
● Non-functional requirements often constrain the system being
developed and the development process being used. 29
Questions
30