software engineeringlintang.staff.gunadarma.ac.id/downloads/files/38503/ppl_sarmag1_lyb.pdf ·...
Post on 29-Feb-2020
11 Views
Preview:
TRANSCRIPT
Software Engineering
Part I.
Aspects and Models of Software Development Process
Gunadarma University
1 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
2 Software Engineering
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
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
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
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
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
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
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
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
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
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
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
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
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
Software Development Process Models of Software Development Process
The Waterfall Model The Spirit
15 Software Engineering
Software Development Process Models of Software Development Process
The Waterfall Model As is
16 Software Engineering
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
Software Development Process Models of Software Development Process
Evolutionary Development Explained
18 Software Engineering
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
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
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
Software Development Process Models of Software Development Process
Formal System Development Example of System Specification in TLA+
22 Software Engineering
Software Development Process Models of Software Development Process
Formal System Development Formal Transformation and Proofs
P1 ∧ P2 ∧ P3 ∧ P4 ≡ TRUE
23 Software Engineering
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
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
Software Development Process Models of Software Development Process
Component-Reuse Oriented Development Phases of Development Process
26 Software Engineering
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
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
Software Development Process Models of Software Development Process
Incremental Development In a Diagram
29 Software Engineering
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
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
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
Software Development Process Models of Software Development Process
The Spiral Model (Boehm)
33 Software Engineering
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
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
Software Design & Specification
Software Specification Requirement Engineering Process
36 Software Engineering
Software Design & Specification
Software Design Process Activities
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
37 Software Engineering
Software Design & Specification
Software Design Process In a Diagram
38 Software Engineering
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
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
Software Design & Specification
Debugging Process
Locate Error → Design Error Repair →
Repair Error → Re-test Program →
Debug Documentation
41 Software Engineering
Software Testing & Evolution
The Testing Process
42 Software Engineering
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
Software Testing & Evolution
Testing Phases
44 Software Engineering
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
Software Testing & Evolution
System Evolution
46 Software Engineering
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
End
That’s All Folks
top related