Software Engineering Software Engineering
Software Engineering Software Engineering
SOFTWARE ENGINEERING
ENGINEERING
SOFTWARE
SOFTWARE DEVELOPMENT
DEVELOPMENT
PROCESS
PROCESS
SOFTWARE DEVELOPMENT1
DEVELOPMENT
LEARNING OBJECTIVES
SOFTWARE DEVELOPMENT2
DEVELOPMENT
12
SOFTWARE DEVELOPMENT3
DEVELOPMENT
SOFTWARE DEVELOPMENT TYPES: SYSTEMS
AAsoftware
softwaresystem
systemisisaapurposeful
purposefulcollection
collectionof
ofinterrelated
interrelated
components
componentsthat
thatthat
thatwork
worktogether
togetherto
toachieve
achievesome
someobjective.
objective.
SOFTWARE DEVELOPMENT4
DEVELOPMENT
SOFTWARE DEVELOPMENT TYPES:
SOCIO-TECHNICAL SYSTEMS
Essential characteristics of socio-technical systems:
They have emergent properties (properties that appear only when the system functions as a whole).
● They are often non-deterministic (same input =/=> same output).
Their success depends not only on the system itself, but also on the organizational environment in which it operates.
–
Implications for software development:
–
–
As
Assoftware
softwareengineers,
engineers,weweneed
needtotobe
beconcerned
concernednot not
simply
simplywith
withthe
thesoftware
softwareitself,
itself,but
butwe
wealso
alsoneed
needtotohave
have
aabroader awareness of how the software interacts
broader awareness of how the software interacts with with
other
otherhardware
hardwareand
andsoftware
softwaresystems
systemsandandhow
howititisis
supposed
supposedtotobebeused
used
SOFTWARE DEVELOPMENT5
DEVELOPMENT
SOFTWARE DEVELOPMENT TYPES:PROJECTS
• Green field projects → new development Our primary focus
• Evolutionary projects → maintenance
– corrective – fix defects Most common type
– adaptive – adapt to new technology, new laws, etc.
– enhancements – add new features
– perfective – make more maintainable
SOFTWARE DEVELOPMENT6
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS:
A MANAGEMENT VIEW
SOFTWARE DEVELOPMENT7
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS:
A MANAGEMENT VIEW
Software systems are created by a dynamic process that moves through a series of
phases called the software development life-cycle.
1. Definition phase - The problem is identified, alternate system solutions are
studied and recommendations are made about committing the resources
required to design the system.
2. Design phase - The detailed design of the system selected in the definition
phase is carried out including the allocation of resources to equipment tasks,
personnel tasks and programming tasks. The technical specifications are
prepared for the performance of all allocated tasks.
3. Development phase - The system is constructed from the specifications
prepared in the design phase; the complete system is tested; the equipment is
acquired; the manuals are completed; staff is trained.
4. Operation phase - The new system is installed or there is a changeover from
the old system to the new system; the system is in use.
milestone: A management decision point that determines whether to proceed to
the next phase, cancel the project or redo parts of the previous phase.
SOFTWARE DEVELOPMENT8
DEVELOPMENT
12.1
SOFTWARE DEVELOPMENT PROCESS:
AN ENGINEERING VIEW
set of activities
Process
(workflows)
template
user
Application requirements result
Project Product
Domain
set of artifacts
models
participate code
customers manuals
.
users ..
People
software. engineers
..
SOFTWARE DEVELOPMENT9
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS:
AN ENGINEERING VIEW
SOFTWARE DEVELOPMENT10
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS:
AN ENGINEERING VIEW
SOFTWARE DEVELOPMENT11
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS
A MANAGEMENT VIEW AN ENGINEERING VIEW
● Definition phase ● Activities(methods)
→ focus is on WHAT – provide technical “how to's”
– project planning for building software
– requirements gathering
– feasibility ● Workflow(methodology)
– sequence in which methods
● Design phase will be applied
→ focus is on HOW – deliverables required
– software architecture – controls needed to ensure
– hardware architecture quality and coordinate
● Development phase change
→ focus is on BUILDING – milestones to assess
– coding – Tersting
– enhancements progress
● OPERATION phase ● Tools (support)
→ focus is on BUILDING – provide support for the
software development
– deployment -training
process
SOFTWARE DEVELOPMENT12
DEVELOPMENT
WHY IS PROCESS IMPORTANT IN SOFTWARE
DEVELOPMENT?
● Allows division of labour
➨ easier for each team member to know what to do
● Eases training
➨ can be standardized (e.g., courses)
SOFTWARE DEVELOPMENT13
DEVELOPMENT
SURVEY OF SOFTWARE DEVELOPMENT PROCESSES
SOFTWARE DEVELOPMENT15
DEVELOPMENT
12.4.1
produces an implemented
Coding collection of modules
produces a tested
Testing assembly of modules
Maintenance
SOFTWARE DEVELOPMENT16
DEVELOPMENT
WATERFALL PROCESS — PROS AND CONS
● pros
– imposes needed discipline (rigor and formality) on the development
process
– keeps the development process predictable and easy to monitor
– enforces standards requiring production of certain documents at
certain target dates
● cons
– assumes a linear development –> sequential flow of activities
– assumes results of each phase are frozen before proceeding to the
next phase –> revision of requirements is difficult
– provides no guidance as to what to do in each phase
– all planning is oriented toward a single product delivery date
–> product usually is not available for feedback until the end
of the development
SOFTWARE DEVELOPMENT17
DEVELOPMENT
12.4.4; 12.4.5
SOFTWARE DEVELOPMENT18
DEVELOPMENT
PROTOTYPING PROCESS — PROS AND CONS
● pros
– Allows requirements to be quickly explored to get a clearer
understanding of the system functionality.
– Allows user feedback and approval to be obtained
– Allows different solutions to be explored with a higher chance of
finding the “right” solution.
● cons
– Not really a complete development methodology –> often useful in
conjunction with another methodology
– The final “product” is not a complete system, but may be treated as
such by management
– The process is not visible → hard to measure progress;
documentation is often sparse or completely absent
SOFTWARE DEVELOPMENT19
DEVELOPMENT
FOURTH GENERATION (4G) SOFTWARE
DEVELOPMENT PROCESS
● 4G tools:
– database query language
– report generator
– screen painter
Requirements – charting/graphing tools
gathering – spreadsheet
– application generator
“Design”
strategy
Implementation
using 4G tools
Testing
SOFTWARE DEVELOPMENT20
DEVELOPMENT
PHASED SOFTWARE DEVELOPMENT PROCESS
Developers
Time
Users
SOFTWARE DEVELOPMENT21
DEVELOPMENT
PHASED PROCESS — INCREMENTS &
ITERATIONS
incremental development –> partial system; full functionality
SOFTWARE DEVELOPMENT22
DEVELOPMENT
PHASED PROCESS: PROS AND CONS
Pros
– Promotes system modularity � well-structured, robust, maintainable
→ Especially if an OO development process is used.
– Reduces the risk of project failure
→ Risk is confined to small parts of the system.
– Allows early training and feedback
→ Users can be trained and provide real-use feedback to developers on
early releases of the system.
– Can create new markets
→ Particularly for functionality never before offered.
– Allows frequent releases
→ Developers can fix bugs globally and frequently.
– Allows appropriate expertise to be applied
→ The development team can focus on different areas of expertise with
each release.
SOFTWARE DEVELOPMENT23
DEVELOPMENT
PHASED PROCESS: PROS AND CONS
Cons
– The system pieces need to be relatively small
→ It may be hard to map client requirements onto pieces of
the “right” size.
– It may be hard to identify common facilities needed by all
pieces.
→ The requirements are not defined in detail until a piece is
to be
implemented.
SOFTWARE DEVELOPMENT24
DEVELOPMENT
AGILE SOFTWARE DEVELOPMENT PROCESS
● Any phased (incremental) approach where the major goal is
responsiveness to change.
Example : Extreme Programming (XP)
● Requirements and analysis
– determine features needed; estimate time and cost for each
feature; client prioritizes features to be included in each iteration
● Implementation (for each iteration, also called a build)
– break into tasks
– for each task (where tasks can be carried out in parallel):
Major
• design test cases (test-driven development)
emphasis
• implement using pair programming is here.
• integrate into current product
Extreme Programming has only been proven successful for small scale
software projects when the client� s requirements are vague.
SOFTWARE DEVELOPMENT25
DEVELOPMENT
PHASED PROCESS — PROS
● frequent releases
➨ allows bugs to be fixed globally and frequently
SOFTWARE DEVELOPMENT26
DEVELOPMENT
12.4.3
Go, no-go
decision
Toward a
completed
system
SOFTWARE DEVELOPMENT27
DEVELOPMENT
SPIRAL PROCESS — RISKS
RISK
RISK
anything
anythingthat
thatendangers
endangersor
oreliminates
eliminatessuccess
successfor
foraaproject
project
GOAL:
GOAL deal with biggest risks as early as possible
SOFTWARE DEVELOPMENT28
DEVELOPMENT
QUESTION?
The greatest risk that you have to deal with in your course project
is:
SOFTWARE DEVELOPMENT29
DEVELOPMENT
SPIRAL PROCESS — PROS AND CONS
● pros
– Accommodates good features of previous processes (waterfall +
prototyping), while risk-approach reduces their problems
– Focuses early attention on options involving reuse
– Helps prepare for evolution of the system (e.g., enhancements,
maintenance)
– Relates desired objectives (ease of use, reliability, etc.) to product
development
– Focuses on early elimination of errors and weak solutions
– Helps to answer “How much is enough?” question in resource
allocation
● cons
– Relies on expertise in risk assessment
– Needs more elaboration of the different steps in a cycle
– More appropriate for internal rather than contract development.
SOFTWARE DEVELOPMENT30
DEVELOPMENT
CASE STUDY: A BUDGET CONTROL SYSTEM
Problem: Build a budget control system for a small(~30 persons), high-
tech software consulting and development company that
monitors whether the financial transactions involved in their various
software projects are proceeding according to the original budgets.
Initial findings
– code-and-fix
– waterfall
– prototyping
– fourth generation
– spiral
– phased
SOFTWARE DEVELOPMENT33
DEVELOPMENT
SOFTWARE DEVELOPMENT PROCESS —
BEST PRACTICES
Incorporating
Incorporatingbest
bestpractices
practicesleads
leadstotogood/appropriate
good/appropriate
methodologies
methodologiesand
andtools
toolsfor
forsoftware
softwareengineering
engineering
SOFTWARE DEVELOPMENT34
DEVELOPMENT
UNIFIED PROCESS — LIFE CYCLE
Phases
Core Workflows Inception Elaboration Construction Transition
Requirements
Analysis
Design
Implementation
Testing
SOFTWARE DEVELOPMENT35
DEVELOPMENT
UNIFIED PROCESS — LIFE CYCLE PHASES GOALS
SOFTWARE DEVELOPMENT36
DEVELOPMENT
UNIFIED PROCESS — LIFE CYCLE PHASES GOALS
SOFTWARE DEVELOPMENT37
DEVELOPMENT
12.4.6
Analysis model
Withdraw money
Design model
Implementation model
Bank Deposit money
Customer
Deployment model
SOFTWARE DEVELOPMENT40
DEVELOPMENT
UNIFIED PROCESS — ARCHITECTURE-CENTRIC
architecture
architecture:: AAhigh-level
high-leveloutline
outlineof
ofthe
the form
formof
ofthe
thesoftware
software
system.
system.
Legacy systems
Architecture
Standards & policies
Non-functional
requirements
Experience
Distribution needs
• previous architecture
• architecture patterns --> object broker, client/server, layers, etc.
architecture baseline: a skeleton of the system with all critical
parts, but with few software “muscles”
SOFTWARE DEVELOPMENT42
DEVELOPMENT
ARCHITECTURE — USE-CASE MODEL
Withdraw money
Transfer between
accounts
SOFTWARE DEVELOPMENT43
DEVELOPMENT
ARCHITECTURE — ANALYSIS MODEL (CLASSES)
Dispenser
Cashier
Interface
SOFTWARE DEVELOPMENT44
DEVELOPMENT
ARCHITECTURE — ANALYSIS MODEL (PACKAGES)
«package»
ATM
Interface
Bank
Customer
«package» «package»
Account Transaction
Management Management
SOFTWARE DEVELOPMENT45
DEVELOPMENT
ARCHITECTURE — DESIGN MODEL (CLASSES)
Card Reader
Display
Bank
Customer Client Transaction Account
Key Pad Manager Manager Manager
Withdrawal Account
Dispenser
Feeder
Cash
Counter
Dispenser
Sensor Persistent
Class
SOFTWARE DEVELOPMENT46
DEVELOPMENT
ARCHITECTURE — DESIGN MODEL (SUBSYSTEMS)
«subsystem»
ATM
Interface
Bank
Customer
dispensing
«subsystem» «subsystem»
Account Transaction
Management Management withdrawal
transactions
SOFTWARE DEVELOPMENT47
DEVELOPMENT
ARCHITECTURE — IMPLEMENTATION MODEL
Design Model Implementation Model
«executable»
client.exe
Client
Manager «resides» «compilation»
Dispenser
Feeder «resides»
«file»
Cash «resides»
Counter
«file»
dispenser.c
SOFTWARE DEVELOPMENT48
DEVELOPMENT
ARCHITECTURE — DEPLOYMENT MODEL
ATM
Bank
Client
Customer
internet
SOFTWARE DEVELOPMENT49
DEVELOPMENT
DETERMINE SOFTWARE ARCHTITECTURE: 4+1 VIEW
Analysis Model Use-case Model
Implemen
Design Logical Implementation -tation
Model
Model View View
Test
Analysts/ Model
End-user Programmers
Designers
Structure Functionality Software management
Use-Case
View
Deploy
Process Deployment -ment
View View Model
System Integrators System Engineering
Performance System topology
Scalability Delivery, installation
Throughput communication
SOFTWARE DEVELOPMENT51
DEVELOPMENT
UNIFIED PROCESS — ITERATIVE & INCREMENTAL
SOFTWARE DEVELOPMENT52
DEVELOPMENT
UNIFIED PROCESS — MILESTONES
milestone
milestone:: aamanagement
managementdecision
decisionpoint
pointininaaproject
project
that
thatdetermines
determineswhether
whethertotoauthorize
authorize
movement
movementto tothe
thenext
nextiteration/phase
iteration/phase
definition and agreement on the system scope an initial use-case model (10-20%)
capture and agreement on key requirements a project glossary
SOFTWARE DEVELOPMENT54
DEVELOPMENT
ELABORATION MILESTONE CRITERIA
Conditions of satisfaction Deliverables
SOFTWARE DEVELOPMENT55
DEVELOPMENT
CONSTRUCTION MILESTONE CRITERIA
Conditions of satisfaction Deliverables
the customer has agreed and is ready for the user manuals
transition of the software product to their description of this release
environment
SOFTWARE DEVELOPMENT56
DEVELOPMENT
TRANSITION MILESTONE CRITERIA
Conditions of satisfaction Deliverables
SOFTWARE DEVELOPMENT57
DEVELOPMENT
UNIFIED PROCESS — LIFE CYCLE ITERATION
Phases
Core Workflows Inception Elaboration Construction Transition
Requirements
Analysis
Iteration
Design
Implementation
Testing
SOFTWARE DEVELOPMENT60
DEVELOPMENT