Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

Introduction to Software Engineering

Somnuk Keretho, Assistant Professor


Department of Computer Engineering
Faculty of Engineering, Kasetsart University
Email: sk@nontri.ku.ac.th
URL: http://www.cpe.ku.ac.th/~sk

Somnuk Keretho/Kasetsart University

Outline of this presentation

Scope of Software Engineering


Object-Oriented Software Development
Software Process
Software Life-Cycle Models
Object Orientation
Software Quality Assessment

Reference to Chapter 1/2/3 of Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997.

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Software engineering is a discipline whose aim
is the production of fault-free software, that is
delivered on time, within budget, and satisfies
the users needs.

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Historical Aspects:
1967, a NATO group coined the term Software
Engineering
1968 NATO Software Engineering Conference
concurred that Software production should be an
engineering-like activity.
Using philosophies and paradigms of established
engineering disciplines to solve Software Crisis: that
the quality of software was generally unacceptably low
and that deadlines and cost limits were not being met.
Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Economic Aspects
Software Engineering v.s. Computer Science
The computer scientist investigates several ways to produce
software, some good and some bad.
But the software engineer is interested in only those techniques
that make sound economic sense.
For example: A coding technique that can execute very
efficiently but with higher maintenance cost may not be a good
choice.

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Maintenance Aspects
Software Life Cycle / Software Process

Requirements Phase
Specification (Analysis) Phase
Planning Phase
Design Phase
Implementation Phase
Integration Phase
Maintenance Phase (highest cost among all these phases)
Corrective, Perfective, and Adaptive Maintenance

Retirement

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Maintenance is so important, a major aspect of software engineering
consists of techniques, tools, and practices that lead to a reduction in
maintenance cost.

Requirement 2%
Specification 4%
Planning 1%
Design 6%
Module Coding 5%
Module Testing 7%
Integration 8%
Maintenance 76%

Maintenance
67%

Approximate relative costs of


the phases of the software life cycle.
Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Specification and Design Aspects
Software professionals are humans, and humans can
make error.
The fact that so many faults are introduced early in the
software life cycle, highlights another important aspects
of software engineering, namely, techniques that yield
better specifications and designs.
For example, reducing specification and design faults by 10%
will reduce the overall number of faults by 6-7%.

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Team Programming Aspects
Most software being developed and maintained by a
team of software engineers
Scope of software engineering must also include
techniques for ensuring that teams are properly
organized and managed.
For example, team programming leads to interface problems
among code components and communication problems among
team members.

Somnuk Keretho/Kasetsart University

Scope of Software Engineering


Several techniques have been suggested to help solve the
software crisis.
~1975-1985: Structured Paradigm
Structured Systems Analysis, Composite/Structured Design, Structured
Programming, Structured Testing
Lead to major improvements for software industry.
But only good for small programs (say, 5,000-50,000 lines of codes)
Not scale well with today larger programs (say, 500.000-5,000,000 LOC)
Not so good in software maintenance aspects, (for instance, because of the
separation of action-oriented and data-oriented in structured paradigm).

Object-Oriented Paradigm
An object is a unified software component that incorporates both data and
actions that operate of those data.

Somnuk Keretho/Kasetsart University

10

Scope of Software Engineering


Structured Paradigm

Object-Oriented Paradigm

Requirement Phase
Specification (Analysis) Phase

Requirement Phase
Object-Oriented Analysis
Phase
Planning Phase
Object-Oriented Design Phase
Object-Oriented
Programming Phase
Integration Phase
Maintenance Phase
Retirement

Planning Phase
Design Phase
Implementation Phase
Integration Phase
Maintenance Phase
Retirement

Comparison of life cycles of structures paradigm and object-oriented paradigm.


Somnuk Keretho/Kasetsart University

11

Object-Oriented Software Development


Three key words.
Software
Development
Object Orientation

Let us look at each in turn

Somnuk Keretho/Kasetsart University

12

Software
Programs
Documentation during the development of
programs (e.g. specification)
Primary aids for running the programs (e.g.
user manuals)
Secondary aids for running the programs (e.g.
key boards overlays)
Software is not just programs!
Somnuk Keretho/Kasetsart University

13

Software Life Cycle

Software is like humans.


It has a life cycle.
Software in a system is conceptualized first.
It becomes obsolescent at the end.
The period in between is called the software life
cycle.

Somnuk Keretho/Kasetsart University

14

Software Life Cycle Models

Build-and-Fix Model
Waterfall Model
Rapid prototyping model
Incremental Model
Spiral Model
Concurrent Development Model
Formal Methods Model
For the first four items, please refer to Chapter 3 of
Software Engineering with JAVA, S.R. Schach, McGraw-Hill, 1997.
Somnuk Keretho/Kasetsart University

15

Built-and-Fix Model
Unfortunately, many s/w products are
developed with built-and-fix model.
Without specification or any attempt in design,
just build a product, and reworked as many
times needed to satisfy the customer.
Unsatisfactory for any size of s/w development,
we better specify the various phases of software
process.

Somnuk Keretho/Kasetsart University

16

Why use a life cycle model?


Life cycle model breaks down the development
process into phases or stages.
This is because software development is
complex.
Breaking down the development process makes
it easier to manage.
Each phase can be performed in various ways.

Somnuk Keretho/Kasetsart University

17

Waterfall Model
Requirement

Changed Requirements verify

Verify

Specification

Verify

Planning

Verify

Design

Verify

Implementation

Testing

Integration
Development

Testing

Operation Mode

Maintenance
Retirement
Somnuk Keretho/Kasetsart University

18

Rapid Prototyping Model


A rapid prototype is a working model that is
functionally equivalent to a subset of the product
(internal structure is not concerned yet).
The sole use of rapid prototyping is to determine what
the clients real needs are, construct the rapid
prototype as rapidly as possible to speed up the s/w
development process.

Somnuk Keretho/Kasetsart University

19

Rapid Prototyping Model


Rapid Prototype
Specification

Changed Requirements verify

Verify

Verify

Planning

Verify

Design

Verify

Implementation

Testing

Integration
Development

Testing

Operation Mode

Maintenance
Retirement
Somnuk Keretho/Kasetsart University

20

Incremental Model
The s/w product is designed, implemented,
integrated, and tested as a series of incremental
builds, where a build consists of code pieces
from various modules interacting to provide a
specific functional capability.
It is sometimes necessary to re-specify,
re-design, re-code, or at worst, throw away
what has already been completed and start
again.
Somnuk Keretho/Kasetsart University

21

Incremental Model
Requirement

Verify

Specification

Verify

Planning

Verify

Architectural Design

Verify

For each build:


Perform detailed design,
implementation,
and integration. Test.
Deliver to client.

Development

Operation Mode

Maintenance
Retirement
Somnuk Keretho/Kasetsart University

22

Spiral Model
The idea of minimizing risk via the use of
prototypes and other means is the concept
underlying the spiral model.
A simplified spiral model is as a waterfall
model with each phase preceded by risk
analysis.
Before commencing each phase, an attempt is made to
control (resolve) the risks. If it is impossible to resolve
all the significant risks at a stage, then the project is
immediately terminated.
Somnuk Keretho/Kasetsart University

23

Full Spiral Model [Boehm, IEEE 1998]


Cumulative
cost

Progress
through steps

Evaluate alternatives,
identify, resolve risks

Determine
objectives,
alternatives,
constraints
Risk
Analysis
Risk
Analysis

Commitment

Prototype 1 Prototype 2

Review
Partition

Risk
Analysis

Risk
Analysis

Prototype 3

Operational
Prototype

Simulations, models, benchmarks


Requirement plan
life-cycle plan

Development Plan

Concept of
Operation

Requirement
Validation

Software
Product
Design

Plan next phase


Integration and Test
Plan

Detailed
Design

Software
Requirements

Code
Unit
Test

Design validation
and verification

Implementation

Acceptance
Test

Integration
Test

Develop, verify
next-level product
Somnuk Keretho/Kasetsart University

24

Software Development
Software is developed using a life cycle model.
Just a life cycle model is insufficient for
development.
We need:
A broad philosophy
A set of tools which support the philosophy.
A language which supports the philosophy.

Somnuk Keretho/Kasetsart University

25

Software Development Paradigm


A paradigm provides a general approach to
work during each phase of the life cycle model.
A paradigm is a broad philosophy.
A paradigm is not a specific model.

Somnuk Keretho/Kasetsart University

26

Some Software Development Paradigms

Functional Composition
Logic Programming
Structured Development
Object Orientation

Somnuk Keretho/Kasetsart University

27

Functional Development
A problem is expressed in termed of a set of
mathematical functions.
e.g. Double(x) = Add(x, x).

An algorithm is not specified.


Language such as Miranda, Gofer, Haskell
support this paradigm.
Poor execution speed.

Somnuk Keretho/Kasetsart University

28

Logic Programming
Consists of a problem description only.
e.g. Factorial(0) = 1.
Factorial(N) = N x Factorial(N -1).

Doesnt describe how to solve the problem.


Languages Prolog & Lisp support this
paradigm.

Somnuk Keretho/Kasetsart University

29

Structured Development
Also called SASD, SADT & Functional
Decomposition.
Breaks the system into processes & decomposes
them.
Languages C, Fortran, Pascal, Cobol, Basic
and a lot more support this paradigm.
By far the most popular paradigm.

Somnuk Keretho/Kasetsart University

30

Object Orientation

Most recent paradigm.


Treats a problem as a collection of objects.
Becoming very popular now.
More and more languages support this
paradigm now.

Somnuk Keretho/Kasetsart University

31

Tools for OO

Rambaugh (OMT)
Coad-Yourdon
Booch
UML

Somnuk Keretho/Kasetsart University

32

Languages for OO

C++
Smalltalk
Eiffel
Object C
Object Pascal
Java

Somnuk Keretho/Kasetsart University

33

Software Quality Assessment


CMM by SEI
ISO 9000

Somnuk Keretho/Kasetsart University

34

You might also like