Chapter 1
What is Software
Engineering?
Abdisalam Issa-Salwe
Department of Computer Science
Faculty of Information Science and Technology
East Africa University
Shari L. Pledger and Joanne M. Atlee (2014): Software Engineering: Theory and Practice, 4th Edition
Contents
1.1 What is Software Engineering?
1.2 How Successful Have We Been?
1.3 What Is Good Software?
1.4 Who Does Software Engineering?
1.5 A System Approach
1.6 An Engineering Approach
1.7 Members of the Development Team
1.8 How Has Software Engineering Changed?
1.9 Information System Example
1.10 Real Time Example
1.11 What this Chapter Means for You
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1
Objectives
What we mean by software engineering
Software engineering’s track record
What we mean by good software
Why a system approach is important
How software engineering has changed since
1970s
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.1 What is Software Engineering
Solving Problems
Software products are large and complex
Development requires analysis and synthesis
Analysis: decompose a large problem into
smaller, understandable pieces
abstraction is the key
Synthesis: build (compose) a software from
smaller building blocks
composition is challenging
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
2
1.1 What is Software Engineering
Solving Problems (cont...)
The analysis process
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.1 What is Software Engineering
Solving Problems (cont...)
The synthesis process
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
3
1.1 What is Software Engineering
Solving Problems (cont...)
Method: refers to a formal procedure; a formal
“recipe” for accomplishing a goal that is typically
independent of the tools used
Tool: an instrument or automated system for
accomplishing something in a better way
Procedure: a combination of tools and
techniques to produce a product
Paradigm: philosophy or approach for building a
product (e.g., OO vs. structured approaches)
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.1 What is Software Engineering
Where Does the Software Engineer Fit In?
Computer science: focusing on computer
hardware, compilers, operating systems, and
programming languages
Software engineering: a discipline that uses
computer and software technologies as a
problem-solving tools
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
4
1.1 What is Software Engineering
Where Does the SW Engineer Fit in? (cont...)
Relationship between computer science and
software engineering
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.2 How Successful Have We Been?
Sidebar 1.1 Terminology for Describing Bugs
A fault: occurs when a human makes a mistake,
called an error, in performing some software
activities
A failure: is a departure from the system’s
required behaviour
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
5
1.3 What Is Good Software?
Sidebar 1.2 Perspective on Quality
The transcendental view: quality is something
we can recognize but not define
The user view: quality is fitness for purpose
The manufacturing view: quality is
conformance to specification
The product view: quality tied to inherent
product characteristics
The value-based view: depends on the amount
the customers is willing to pay for it
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.3 What is Good Software?
Good software engineering must always include a
strategy for producing quality software
Three ways of considering quality
The quality of the product
The quality of the process
The quality of the product in the context of the
business environment
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
6
1.3 What Is Good Software?
The Quality of the Product
Users judge external characteristics (e.g.,
correct functionality, number of failures, type of
failures)
Designers and maintainers judge internal
characteristics (e.g., types of faults)
Thus different stakeholders may have different
criteria
Need quality models to relate the user’s external
view to developer’s internal view
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.3 What Is Good Software?
The Quality of the Product (cont...)
McCall’s quality model
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
7
1.3 What Is Good Software?
The Quality of the Process
Quality of the development and maintenance
process is as important as the product quality
The development process needs to be modeled
Modeling will address questions such as
Where to find a particular kind of fault
How to find faults early
How to build in fault tolerance
What are alternative activities
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.3 What Is Good Software?
The Quality in the Context of the Business Environment
Business value is as important as technical
value
Business value (in relationship to technical
value) must be quantified
A common approach: return on investment
(ROI) – what is given up for other purposes
ROI is interpreted in different terms: reducing
costs, predicting savings, improving productivity,
and costs (efforts and resources)
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
8
1.3 What Is Good Software?
The Quality of the Context of the Business Environment
Industry’s definition of ROI
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.4 Who Does Software Engineering?
Customer: the company, organization, or
person who pays for the software system
Developer: the company, organization, or
person who is building the software system
User: the person or people who will actually use
the system
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
9
1.4 Who Does Software Engineering?
(cont...)
Participants (stakeholders) in a software
development project
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.5 System Approach
Hardware, software, interaction with people
Identify activities and objects
Define the system boundary
Consider nested systems, systems
interrelationship
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
10
1.5 System Approach
The Element of a System
Activities and objects
An activity is an event initiated by a trigger
Objects or entities are the elements involved
in the activities
Relationships and the system boundaries
A relationship defines the interaction among
entities and activities
System boundaries determine the origin of
input and destinations of the output
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.5 System Approach
The Element of a System (cont...)
Example of systems: a human respiratory system
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
11
1.5 System Approach
The Element of a System (cont...)
A computer system must also be clearly
described: System definition of a paycheck
production
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.5 System Approach
Interrelated Systems
Some systems are dependent to other systems
The interdependencies may be complex
It is possible for one system to exist inside
another system
If the boundary definitions are detailed, building
a larger system from the smaller ones is
relatively easy
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
12
1.5 System Approach
Interrelated Systems (cont...)
A layered system
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.6 Engineering Approach
Building a System
Requirement analysis and definition
System design
Program design
Writing the programs
Unit testing
Integration testing
System testing
System delivery
Maintenance
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
13
1.7 Members of the Development Team
Requirement analysts: work with the customers to
identify and document the requirements
Designers: generate a system-level description of what
the system is supposed to do
Programmers: write lines of code to implement the
design
Testers: catch faults
Trainers: show users how to use the system
Maintenance team: fix faults that show up later
Librarians: prepare and store documents such as
software requirements
Configuration management team: maintain
correspondence among various artefacts
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.7 Members of the Development Team
(cont...)
Typical roles played by the members of a
development team
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
14
1.8 How Has Software Engineering Changed?
The Nature of the Change
Before 1970s
Single processors: mainframes
Designed in one of two ways
as a transformation: input was converted
to output
as a transaction: input determined which
function should be performed
After 1970s
Run on multiple systems
Perform multi-functions
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
Wasserman's Seven Key Factors (cont...)
The key factors that have changed the software
development
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
15
1.8 How Has SE Changed?
Wasserman's Discipline of Software Engineering
Abstractions
Analysis and design methods and notations
User interface prototyping
Software architecture
Software process
Reuse
Measurement
Tools and integrated environments
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
Abstraction
A description of the problem at some level of
generalization
Hide details
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
16
1.8 How Has SE Changed?
Analysis and Design Methods and Notations
Provide documentation
Facilitate communication
Offer multiple views
Unify different views
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
User Interface Prototyping
Prototyping: building a small version of a system
Help users identify key requirements of a
system
Demonstrate feasibility
Develop good user interface
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
17
1.8 How Has SE Changed?
Software Architecture
A system’s architecture describes the system in
terms of a set of architectural units and
relationships between these units
Architectural decomposition techniques
Modular decomposition
Data-oriented decomposition
Event-driven decomposition
Outside-in-design decomposition
Object-oriented decomposition
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
Software Process
Many variations
Different types of software need different
processes
Enterprise-wide applications need a great deal
of control
Departmental applications can take advantage
of rapid development
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
18
1.8 How Has SE Changed?
Software Process (cont...)
Pictorial representation of differences in
development processes
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
Software Reuse
Commonalities between applications may allow
reusing artifacts from previous developments
Improve productivity
Reduce costs
Potential concerns
It may be faster to build a smaller application
than searching for reusable components
Generalized components take more time to build
Must clarify who will be responsible for
maintaining reusable components
Generality vs specificity: always a conflict
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
19
1.8 How Has SE Changed?
Measurement
Objective: describe quality goals in a quantitative
way
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
1.8 How Has SE Changed?
Tools and Integrated Environments
Platform integration (on heterogeneous networks)
Presentation integration (commonality of user
interface)
Process integration (linking tools and the
development process)
Data integration (to share common data)
Control integration (the ability of one tool to initiate
action in another one)
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
20
1.9 What this Chapter Means for You
Given a problem to solve
Analyze it
Synthesize a solution
Understand that requirements may change
Must view quality from several different
perspectives
Use fundamental software engineering concepts
(e.g., abstractions and measurements)
Keep system boundary in mind
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
Group discussion
Group 1: Discuss the importance of
Software Engineering?
Group 2: System Approach and give
examples of the element of a system
Group 3: How has SE changed? Discuss
the tools and integrated environments
changes
Department of Computer Science, Faculty of Information Science and Technology, East Africa University
21