AN INTRODUCTION TO
SOFTWARE ENGINEERING
CUSTOMER
Sponsors system
development

USER
Uses
system

$$
$
Co nee ,
ds
ob nt
lig rac
at tu
io al
n

DEVELOPER

Needs
Software system
Figure 1.7 Participants in software development.

Builds
system
SOFTWARE DEVELOPMENT STEPS

System Design

ANALYST

DESIGNER
PROGRAMMER

Program Design
Program Implementation

TESTER

Unit Testing
Integration Testing
System Testing

TRAINER
System Delivery
Maintenance

Figure1.11 The roles of the development team

DEVELOPER ROLES

Requirements Analysis
and Definition
Object technology

Desktop computing

Problems with waterfall

CHANGES IN
SOFTWARE
ENGINEERING

Time to market

Networking

Shifts in economics
User interfaces

Figure1.12 The key factors that have changed software development
OBJECTIVES
SOFTWARE ENGINEERING
FAQS ABOUT SOFTWARE ENGINEERING
FAQS ABOUT SOFTWARE ENGINEERING
FAQS ABOUT SOFTWARE ENGINEERING
FAQS ABOUT SOFTWARE ENGINEERING
WHAT IS SOFTWARE?
SOFTWARE PRODUCT DEVELOPED
FOR
TYPE OF SOFTWARE PRODUCTS
CREATING NEW SOFTWARE
VARIETY OF SOFTWARE PRODUCTS
VARIETY OF SOFTWARE PRODUCTS











Real time
Embedded systems
Data processing
pensions
Information systems
libraries
Sensors
System software
compilers
Communications
telephones
Offices
conferences
Scientific
forecasting
Graphical

: air traffic control
: digital camera, GPS
: telephone billing,
: web sites, digital
: weather data
: operating systems,
: routers, mobile
: word processing, video
: simulations, weather
: film making, design
CATEGORIES OF SOFTWARE PRODUCT


Generic (e.g., Microsoft Excel)



Packages (e.g., Mathematica)



Customized versions of generic packages (e.g.,
UTeM's payroll system)



Bespoke (customized) (e.g., IRS internal system)



Demonstration, prototype, research, …
WHAT IS SOFTWARE ENGINEERING?

Software engineering is an

engineering discipline that is
concerned with all aspects of software
production.
WHAT IS SOFTWARE ENGINEERING?

Software engineers should adopt a

systematic and organised approach
to their work and use appropriate tools and
techniques depending on the problem to
be solved, the development constraints and the
resources available.
Computer Science

Theories

Customer

Compute
r
Function
s
Software
Engineering

Tools and
Techniques
to Solve
Problem

Problem
SOFTWARE ENGINEERING VS COMPUTER
SCIENCE?
Computer Science

Software Engineering

Computer science is
concerned with theory and
fundamentals;
 Computer science theories
are still insufficient to act as
a complete underpinning for
software engineering (unlike
e.g. physics and electrical
engineering).





Software engineering is
concerned with the
practicalities of developing
and delivering useful
software.
SOFTWARE ENGINEERING VS SYSTEM
ENGINEERING?
System engineering




Concerned with all aspects
of computer-based systems
development including
hardware, software and
process engineering.
System engineers are
involved in system
specification, architectural
design, integration and
deployment.

Software engineering


concerned with developing
the software infrastructure,
control, applications and
databases in the system.
WHAT IS A SOFTWARE PROCESS?

A set of activities whose goal is the
development or evolution of
software.
WHAT IS A SOFTWARE PROCESS?
WHAT IS A SOFTWARE PROCESS?
WHAT IS A SOFTWARE PROCESS MODEL?

A simplified representation of a
software process, presented
from a specific perspective.
EXAMPLE OF PERSPECTIVES
GENERIC PROCESS MODELS
can lead to

Human Error

can lead to

Fault

Failure
SOFTWARE COSTS
Software costs often dominate computer system costs. The
costs of software on a PC are often greater than the hardware
cost.
 Software costs more to maintain than it does to develop. For
systems with a long life, maintenance costs may be several times
development costs.
 Software engineering is concerned with cost-effective software
development.

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 the type of system being developed
and the requirements of system attributes such as performance
and system reliability.
Distribution of costs depends on the development model that
is used.
WHAT IS CASE (COMPUTERAIDED SOFTWARE ENGINEERING)
Software systems that are intended to provide automated
support for software process activities.
 CASE systems are often used for method support.
 Upper-CASE


 Tools to support the early process activities of requirements and

design;



Lower-CASE
 Tools to support later activities such as programming, debugging and

testing.
Correctness
Reliability
Efficiency
Integrity
Usability
Maintainability
Testability
Flexibility
Portability
Reusability
Interoperability

Traceability
Completeness
Consistency
Accuracy
Error Tolerance
Execution Efficiency
Storage efficiency
Access control
Access audit
Operability
Training
Communicativeness
Simplicity
Conciseness
Instrumentation
Self-descriptiveness
Expandability
Generality
Modularity
Software System Independence
Machine Independence
Communications commonality
Data commonality

Figure 1.5 McCall’s quality model.
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
◦



Dependability
◦



Software must be trustworthy;

Efficiency
◦



Software must evolve to meet changing needs;

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.
WHAT ARE THE KEY
CHALLENGES FACING SOFTWARE
ENGINEERING?
Heterogeneity, delivery and trust.
 Heterogeneity


◦



Delivery

◦



Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Developing techniques that lead to faster delivery of software;

Trust

◦

Developing techniques that demonstrate that software can be trusted
by its users.
KEY POINTS
 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.
CONTINUE..
•

•

The software process consists of activities that are involved in
developing software products. Basic activities are software
specification, development, validation and evolution.
Methods are organised ways of producing software. They
include suggestions for the process to be followed, the
notations to be used, rules governing the system descriptions
which are produced and design guidelines.

Software engineering

  • 1.
  • 2.
    CUSTOMER Sponsors system development USER Uses system $$ $ Co nee, ds ob nt lig rac at tu io al n DEVELOPER Needs Software system Figure 1.7 Participants in software development. Builds system
  • 3.
    SOFTWARE DEVELOPMENT STEPS SystemDesign ANALYST DESIGNER PROGRAMMER Program Design Program Implementation TESTER Unit Testing Integration Testing System Testing TRAINER System Delivery Maintenance Figure1.11 The roles of the development team DEVELOPER ROLES Requirements Analysis and Definition
  • 4.
    Object technology Desktop computing Problemswith waterfall CHANGES IN SOFTWARE ENGINEERING Time to market Networking Shifts in economics User interfaces Figure1.12 The key factors that have changed software development
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    VARIETY OF SOFTWAREPRODUCTS           Real time Embedded systems Data processing pensions Information systems libraries Sensors System software compilers Communications telephones Offices conferences Scientific forecasting Graphical : air traffic control : digital camera, GPS : telephone billing, : web sites, digital : weather data : operating systems, : routers, mobile : word processing, video : simulations, weather : film making, design
  • 17.
    CATEGORIES OF SOFTWAREPRODUCT  Generic (e.g., Microsoft Excel)  Packages (e.g., Mathematica)  Customized versions of generic packages (e.g., UTeM's payroll system)  Bespoke (customized) (e.g., IRS internal system)  Demonstration, prototype, research, …
  • 18.
    WHAT IS SOFTWAREENGINEERING? Software engineering is an engineering discipline that is concerned with all aspects of software production.
  • 19.
    WHAT IS SOFTWAREENGINEERING? Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.
  • 20.
  • 21.
    SOFTWARE ENGINEERING VSCOMPUTER SCIENCE? Computer Science Software Engineering Computer science is concerned with theory and fundamentals;  Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).   Software engineering is concerned with the practicalities of developing and delivering useful software.
  • 22.
    SOFTWARE ENGINEERING VSSYSTEM ENGINEERING? System engineering   Concerned with all aspects of computer-based systems development including hardware, software and process engineering. System engineers are involved in system specification, architectural design, integration and deployment. Software engineering  concerned with developing the software infrastructure, control, applications and databases in the system.
  • 23.
    WHAT IS ASOFTWARE PROCESS? A set of activities whose goal is the development or evolution of software.
  • 24.
    WHAT IS ASOFTWARE PROCESS?
  • 25.
    WHAT IS ASOFTWARE PROCESS?
  • 26.
    WHAT IS ASOFTWARE PROCESS MODEL? A simplified representation of a software process, presented from a specific perspective.
  • 27.
  • 28.
  • 29.
    can lead to HumanError can lead to Fault Failure
  • 30.
    SOFTWARE COSTS Software costsoften dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.  Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.  Software engineering is concerned with cost-effective software development. 
  • 31.
    WHAT ARE THECOSTS 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 the type of system being developed and the requirements of system attributes such as performance and system reliability. Distribution of costs depends on the development model that is used.
  • 32.
    WHAT IS CASE(COMPUTERAIDED SOFTWARE ENGINEERING) Software systems that are intended to provide automated support for software process activities.  CASE systems are often used for method support.  Upper-CASE   Tools to support the early process activities of requirements and design;  Lower-CASE  Tools to support later activities such as programming, debugging and testing.
  • 33.
    Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability Traceability Completeness Consistency Accuracy Error Tolerance Execution Efficiency Storageefficiency Access control Access audit Operability Training Communicativeness Simplicity Conciseness Instrumentation Self-descriptiveness Expandability Generality Modularity Software System Independence Machine Independence Communications commonality Data commonality Figure 1.5 McCall’s quality model.
  • 34.
    WHAT ARE THEATTRIBUTES OF GOOD SOFTWARE?   The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. Maintainability ◦  Dependability ◦  Software must be trustworthy; Efficiency ◦  Software must evolve to meet changing needs; 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.
  • 35.
    WHAT ARE THEKEY CHALLENGES FACING SOFTWARE ENGINEERING? Heterogeneity, delivery and trust.  Heterogeneity  ◦  Delivery ◦  Developing techniques for building software that can cope with heterogeneous platforms and execution environments; Developing techniques that lead to faster delivery of software; Trust ◦ Developing techniques that demonstrate that software can be trusted by its users.
  • 36.
    KEY POINTS  Software engineeringis 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.
  • 37.
    CONTINUE.. • • The software processconsists of activities that are involved in developing software products. Basic activities are software specification, development, validation and evolution. Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines.