50
Software Engineering Part I. Aspects and Models of Software Development Process Gunadarma University 1 Software Engineering

Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Engineering

Part I.

Aspects and Models of Software Development Process

Gunadarma University

1 Software Engineering

Page 2: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Outline

1 Introduction

2 Aspects of Software Engineering

Software Engineering

Problems in Software Engineering

3 Software Development Process

Definition

Models of Software Development Process

4 Software Design & Specification 5 Software Testing & Evolution

2 Software Engineering

Page 3: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Introduction

References I

Sommerville, Ian, “Software Engineering ”, Addison-Wesley,

1982

Pressman, Roger S, “Software Engineering: A Practitioner’s

Approach”, Boston, Mass: McGraw-Hill, 2005

Parnas, David, “Software Engineering Programmes are not

Computer Science Programmes”, Annals of Software

Engineering, 1998

Guide to the Software Engineering Body of Knowledge

(http://www.swebok.org)

Other S.E. Course Related Sites (Wikipedia, MIT, Cornell,

Ilmukomputer.com, SE course by Adang Suhendra, etc)

3 Software Engineering

Page 4: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Software Engineering

Outline

1 Introduction

2 Aspects of Software Engineering

Software Engineering

Problems in Software Engineering

3 Software Development Process

Definition

Models of Software Development Process

4 Software Design & Specification 5 Software Testing & Evolution

4 Software Engineering

Page 5: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Software Engineering

Software

Computer programs, a soft-molded mechanical that can be easily transformed or altered

Software Products :

Generic :

developed for general users / market user should follow developer specification

Bespoke / Tailor-made :

developed for particular customer developer should follow user’s specification / requirement

5 Software Engineering

Page 6: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Software Engineering

Software

Computer programs, a soft-molded mechanical that can be easily transformed or altered

Software Products :

Generic :

developed for general users / market user should follow developer specification

Bespoke / Tailor-made :

developed for particular customer developer should follow user’s specification / requirement

5 Software Engineering

Page 7: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Software Engineering

World of Software Engineering I

Application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software

1968 - NATO Software Engineering Conference, Garmisch,

Deutschland.

Term was popularized by F.L. Bauer

Pioneers:

C.A.R. Hoare David Parnas Barry Boehm & Fred Brooks

S.E. is

a form of engineering but not just set of good programmers (David Parnas) not engineering but that it should be (Steve McConnell) is an art and a science (Donald Knuth)

6 Software Engineering

Page 8: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Software Engineering

World of Software Engineering II

Engineers learns science + methods needed to apply science

Knowledge from computer engineering & science,

management, mathematics, project management, quality

management, software ergonomics, system engineering

Scientists can focus deeply on a subject, but engineers should

have relatively broad knowledge

That’s why distinction between computer science and software

engineering is fuzzy

7 Software Engineering

Page 9: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Problems in Software Engineering

Outline

1 Introduction

2 Aspects of Software Engineering

Software Engineering

Problems in Software Engineering

3 Software Development Process

Definition

Models of Software Development Process

4 Software Design & Specification 5 Software Testing & Evolution

8 Software Engineering

Page 10: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Problems in Software Engineering

Why should we learn S.Eng. ?

taken from : http://blog.amber.org/category/programming/

9 Software Engineering

Page 11: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Aspects of Software Engineering Problems in Software Engineering

Properties of Good Software

Maintainability

Software should be easily altered in evolution due to user’s

changing demand

Dependability

Software should be trustworthy on that users can entirely

depend their business process

Efficiency

Software should not waste system resources

Usability

Software must be usable in high degree by the users for which

it was designed

10 Software Engineering

Page 12: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Definition

Outline

1 Introduction

2 Aspects of Software Engineering

Software Engineering

Problems in Software Engineering

3 Software Development Process

Definition

Models of Software Development Process

4 Software Design & Specification 5 Software Testing & Evolution

11 Software Engineering

Page 13: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Definition

Software Development Process

Set of activities → goal is development or evolution of

software

Generic activities :

1 Specification Defining what system should do & constraints

2 Development Production phase: programming, documentations, error checking

3 Validation and verification Validate that software meets user’s need

4 Evolution Altering the software along with the changing of users’s needs

12 Software Engineering

Page 14: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Definition

Software Process Model

Simplified representation of software process from a specific

perspective

Perspectives:

Workflow based - sequence of activities Data-Flow based - information flow Role/Action based

Generic software process model:

Waterfall model Evolutionary Formal transformation Integration from reusable components Agile and eXtreme Software Development (New)

13 Software Engineering

Page 15: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Outline

1 Introduction

2 Aspects of Software Engineering

Software Engineering

Problems in Software Engineering

3 Software Development Process

Definition

Models of Software Development Process

4 Software Design & Specification 5 Software Testing & Evolution

14 Software Engineering

Page 16: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Waterfall Model The Spirit

15 Software Engineering

Page 17: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Waterfall Model As is

16 Software Engineering

Page 18: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Waterfall Model The Problems

Difficulty of accommodating change along the process

Inflexible partitioning of the project into distinct stages

Difficult to respond to changing customer requirements

Only appropriate when the requirements are well-understood

17 Software Engineering

Page 19: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Evolutionary Development Explained

18 Software Engineering

Page 20: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Evolutionary Development Problems and Applicability

Problems:

Lack of process visibility Systems are often poorly structured Special skills (for example, languages for rapid prototyping) may be required

Thus, applicable for:

small or medium-size interactive systems development of parts of large systems (e.g. user interface) short-lifetime systems

19 Software Engineering

Page 21: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Formal System Development Definition

Users’s requirement are specified in mathematical form

Transformed through different abstraction of specification to

an executable program

Requirement Definiiton → Formal Specification →

Formal Transformation → Executable Program →

Integration & System Testing

A transformation is correctness-preserving, thus it is

straightforward to prove that Executable Program conform

specification

“Cleanroom” approach

20 Software Engineering

Page 22: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Formal System Development The Use of Formal Methods

investing more effort in the early phases of software

development

reduces requirements errors as it forces a detailed analysis of

the requirements

incompleteness and inconsistencies can be discovered and

resolved

savings as made as the amount of rework due to requirements

problems is reduced

21 Software Engineering

Page 23: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Formal System Development Example of System Specification in TLA+

22 Software Engineering

Page 24: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Formal System Development Formal Transformation and Proofs

P1 ∧ P2 ∧ P3 ∧ P4 ≡ TRUE

23 Software Engineering

Page 25: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Formal System Development Problems and Applicability

Problems

Need for specialised skills and training to apply the technique Difficult to formally specify some aspects of the system

Applicability

Critical systems especially those where a safety or security case must be made before the system is put into operation

24 Software Engineering

Page 26: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Component Reuse Oriented Development Definition

Based on systematic reuse where systems are integrated from

existing components or COTS (Commercial-off-the-shelf) systems

Process stages

Component analysis Requirements modification System design with reuse Development and integration

This approach is becoming more important but still limited

experience with it

25 Software Engineering

Page 27: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Component-Reuse Oriented Development Phases of Development Process

26 Software Engineering

Page 28: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Process Iteration

Basic idea :

system requirements ALWAYS evolve in the course of a

project so process iteration where earlier stages are reworked

is always part of the process for large systems

Iteration can be applied to any of the generic process models

Two (related) approaches

Incremental development Spiral development

27 Software Engineering

Page 29: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Incremental Development Definition

Rather than deliver the system as a single delivery, the

development and delivery is broken down into increments with

each increment delivering part of the required functionality

User requirements are prioritised and the highest priority

requirements are included in early increments

Once the development of an increment is started, the

requirements are frozen though requirements for later

increments can continue to evolve

28 Software Engineering

Page 30: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Incremental Development In a Diagram

29 Software Engineering

Page 31: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

Incremental Development Advantages

Customer value can be delivered with each increment so

system functionality is available earlier

Early increments act as a prototype to help elicit requirements

for later increments

Lower risk of overall project failure

The highest priority system services tend to receive the most

testing

30 Software Engineering

Page 32: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

eXtreme programming

New approach to development based on the development and delivery of very small increments of functionality

Relies on constant code improvement, user involvement in the

development team and pairwise programming

31 Software Engineering

Page 33: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Spiral Model (Boehm)

Process is represented as a spiral rather than as a sequence of activities with backtracking.

Each loop in the spiral represents a phase in the process.

No fixed phases such as specification or design - loops in the

spiral are chosen depending on what is required.

Risks are explicitly assessed and resolved throughout the

process.

32 Software Engineering

Page 34: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Spiral Model (Boehm)

33 Software Engineering

Page 35: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Development Process Models of Software Development Process

The Spiral Model (Boehm)

Objective setting

Specific objectives for the phase are identified

Risk assessment and reduction

Risks are assessed and activities put in place to reduce the key risks

Development and validation

A development model for the system is chosen which can be any of the generic models

Planning

The project is reviewed and the next phase of the spiral is planned

34 Software Engineering

Page 36: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Software Specification

The process of establishing what services are required and the

constraints on the system’s operation and development

Requirements engineering process

Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation

35 Software Engineering

Page 37: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Software Specification Requirement Engineering Process

36 Software Engineering

Page 38: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Software Design Process Activities

Architectural design

Abstract specification

Interface design

Component design

Data structure design

Algorithm design

37 Software Engineering

Page 39: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Software Design Process In a Diagram

38 Software Engineering

Page 40: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Software Design Methods

Systematic approaches to developing a software design

The design is usually documented as a set of graphical models

Possible models

Data-flow model Entity-relation-attribute model Structural model Object models

39 Software Engineering

Page 41: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Programming & Debugging

Translating a design into a program and removing errors from that program

Programming is a personal activity - there is no generic

programming process

Programmers carry out some program testing to discover

faults in the program and remove these faults in the

debugging process

40 Software Engineering

Page 42: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Design & Specification

Debugging Process

Locate Error → Design Error Repair →

Repair Error → Re-test Program →

Debug Documentation

41 Software Engineering

Page 43: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

The Testing Process

42 Software Engineering

Page 44: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

The Testing Process Stages

Unit testing

Individual components are tested

Module testing

Related collections of dependent components are tested

Sub-system testing

Modules are integrated into sub-systems and tested. The focus here should be on interface testing

System testing

Testing of the system as a whole. Testing of emergent properties

Acceptance testing

Testing with customer data to check that it is acceptable

43 Software Engineering

Page 45: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

Testing Phases

44 Software Engineering

Page 46: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

Software Evolution

Software is inherently flexible and can change.

As requirements change through changing business

circumstances, the software that supports the business must

also evolve and change

Although there has been a demarcation between development

and evolution (maintenance) this is increasingly irrelevant as

fewer and fewer systems are completely new

45 Software Engineering

Page 47: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

System Evolution

46 Software Engineering

Page 48: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

Software Testing & Evolution

Automated Support

Computer-aided software engineering (CASE) is software to

support software development and evolution processes

Activity automation

Graphical editors for system model development Data dictionary to manage design entities Graphical UI builder for user interface construction Debuggers to support program fault finding Automated translators to generate new versions of a program

47 Software Engineering

Page 49: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems

End

That’s All Folks

Page 50: Software Engineeringlintang.staff.gunadarma.ac.id/Downloads/files/38503/PPL_Sarmag1_LYB.pdf · Outline 1 Introduction 2 Aspectsof Software Engineering Software Engineering Problems