Professional Documents
Culture Documents
Sem I 2013/2014
Pendahuluan
Definitions System/Product Engineering Hierarchy From Requirements to User Acceptance Test Waterfall, Incremental, Iterative, Spiral, etc Unified Process Agile development
System software Application software Engineering or Scientific Software Embedded software Product-line software (includes entertainment software) Web-Applications Artificial intelligence software
Software Engineering
Software engineering is the establishment of sound engineering principles in order to obtain reliable and efficient software in an economical manner. Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. Software engineering encompasses a process, management techniques, technical methods, and the use of tools.
World View
Detail View
capabilities
Hardware
Software
processing requirement
Data Function Behaviour
program component
Requirements Analysis
Requirements Gathering
User Requirements
Hardware Requirements
10
Software Requirements
Requirements Decomposition
Complete Requirements
R1
R2
R3
R1.1
R1.2
R1.3
R2.1
R2.2
R3.1
R3.2
R3.3
11
R1.1
R1.2
R1.3
R2.1
R2.2
R3.1
R3.2
R3.3
D1.1
D1.2
D1.3
D2.1
D2.2
D3.1
D3.2
D3.3
DD1
DD2
DD3
DD4
DD5
DD6
DD7
DD8
DD9
DD10
12
R1 R1.1 D1.1 DD1 DD2 R1.2 D1.2 DD3 R1.3 D1.3 DD4 R2.1 D2.1 DD5
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
13
Unit Testing
Complete Requirements
R2 R1.3 D1.3 R2.1 D2.1 DD5 C5 T5 R2.2 D2.2 DD6 C6 T6 R3.1 D3.1 DD7 C7 T7
DD4 C4 T4
Integration Test
Package1 Package2 Package3 Package4
C1 T1
C2 T2
C3 T3
C4 T4
C5 T5
C6 T6
C7 T7
C8 T8
C9 T9
C10 T10
Integration Test1
Integration Test2
Integration Test3
Integration Test4
15
Package1
Package2
Package3
Package4
C1 T1
C2 T2
C3 T3
C4 T4
C5 T5
C6 T6
C7 T7
C8 T8
C9 T9
C10 T10
Integration Test1
Integration Test2
Integration Test3
Integration Test4
17
Waterfall Model
Requirement Engineering Requirement Analysis Global and Detailed Design Implementation/ Coding Deployment
18
Maintenance
Prototyping Model
19
Incremental Model
20
Spiral Model
22
23
24
V Model
User Acceptance Testing Integration Testing
User Requirements
Global Design
Detailed Design
Unit Testing
Coding
25 30-Aug-13
Hendradjaya
26
Domain Analysis
SW Arch Development
Domain Model
Structural Model
CBSE
Component Update
Application Software
Component Development
27
IF2036 RPL - IF ITB
Testing
Consists of A set of principles A collection of processes to use as a starting point Customizable process framework and knowledge base Use-case driven, architecture centric, iterative, and incremental software process Phases
28
Inception phase (customer communication and planning) Elaboration phase (communication and modeling) Construction phase Transition phase (customer delivery and feedback) Production phase (software monitoring and support)
IF3250-Proyek Perangkat Lunak (Informatika ITB)
Phases
Construction Transition
Design
Implementation
Test
P r e li m i n a r y I te r a t io n ( s ) it e r. #1 it e r. #2 it e r. #n it e r. #n+1 it e r. # n +2 it e r. #m it e r. #m +1
29
It e r a tio n s
IF2036 RPL - IF ITB
31
Agile Manifesto
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Agile
Traditional
The items on the left is valued more than the right items.
32
What is Agile?
An iterative and incremental (evolutionary) approach performed in a highly collaborative manner with just the right amount of ceremony to produce high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders.
Core principles
Fits just right process Continuous testing and validation Consistent team collaboration Rapid response to change Ongoing customer involvement Frequent delivery of working software
33
Represents a reasonable compromise between conventional software engineering for certain classes of software and certain types of software projects
Deliver a successful system quickly Stresses on Continuous Communication and Collaboration among developers and customers Embraces a philosophy that encourages:
customer satisfaction, incremental software delivery, small project teams (composed of software engineers and stakeholders), informal methods, and minimal software engineering work products
Stress on-time delivery of an operational software increment over analysis and design
IF2036 RPL - IF ITB
34
12 Principles
Highest priority: user satisfaction Welcome changing requirement Deliver working software frequently Business people and developers work together daily Build around motivated individuals Face-to-face conversation Working software: primary measure of progress Promote sustainable development Continuous attention to technical excellence and good design Simplicity is essential Self-organizing team Tune and adjust team behavior at regular intervals
IF2036 RPL - IF ITB
35
Challenges in Agile
Compliance requirement
Low risk Critical, Audited
Geographical distribution
Co-located Global
Agile Development
Application complexity
Simple, single platform Complex, multi-platform
Team size
Under 10 developers 100s of developers
Degree of Governance
Informal Formal
36
Extreme Programming (XP) Adaptive Software Development (ASD) Dynamic Systems Development Method (DSDM) Scrum Crystal Feature Driven Development (FDD) Agile Modeling (AM) Agile Unified Process (AUP) Essential Unified Process (EssUP) Open Unified Process (OpenUP) Velocity tracking
* SEPA 6th ed, Roger S. Pressman 37
IF2036 RPL - IF ITB
Agile Methodology is develop based on iterative and incremental development It is based on feedback from the clients. In this methodology the requirements and solutions evolve through collaboration between self-organizing, cross-functional teams who work in close liaison with the clients. It promotes evolutionary development, adaptive planning and encourages rapid and flexible response to change. It is suitable for
Product (and less for services) Smaller to medium sized products A team of 100 members was also noted to be a success
38
The requirements from the client is collected iteratively and in an evolutionary manner. Each stage, including the requirement analysis stage, needs to be completed and finalized, before moving on to the next stage. Less documentation
Because of smaller team size, extensive informal communication makes high quality software development feasible. But it would be difficult to ensure high quality in larger projects, due to this methodological limitation, which is mostly made by choice to ensure faster delivery of software projects.
IF3250-Proyek Perangkat Lunak (Informatika ITB)
40
Agile Methodology is develop based on iterative and incremental development It is based on feedback from the clients. In this methodology the requirements and solutions evolve through collaboration between self-organizing, cross-functional teams who work in close liaison with the clients. It promotes evolutionary development, adaptive planning and encourages rapid and flexible response to change. It is suitable for
Product (and less for services) Smaller to medium sized products A team of 100 members was also noted to be a success
41
Relaxed
Little documentation Light process Low ceremony
Disciplined
Well-documented Traceability Change Control Board High ceremony
Iterative
Risk driven Continuous integration and testing
42
IF3250-Proyek Perangkat Lunak (Informatika ITB)
Relaxed
Little documentation Light process Low ceremony
Disciplined
Well-documented Traceability Change Control Board High ceremony
Agile
Agility at Scale
Iterative
RUP Framework
Disciplined
Well-documented Traceability Change Control Board High ceremony
OpenUP
RUP Light
Iterative
Risk driven Continuous integration and testing
44
Only produce the artifacts that add value, minimize formality if possible Use informal resources (brief document templates) and not formal resources When in doubt of value, dont do it You can improve upon things later on move on Focus on phase objectives. E.g. Inception is NOT about describing all requirements in detail
Analysis Paralysis
45
Life Cycle
Look beyond a flawed 5-minute perception of what RUP phases are about Produce working (tested) code every iteration (exception maybe Inception) Problem: Complete misunderstanding of what Elaboration is about RUP focuses on rapidly producing an Executable Architecture 10-20% of code, critical capabilities implemented, not a lot of paper design Attack risks early, or they attack you Hard on you now, but makes life easier later
46
Teams of generalists and multitasking experts No place for I only do <X> mentality Unlikely to build the right product A lot of waste Change enables improvement Document changes in development case
47
Development Approach
Teams of generalists and multitasking experts No place for I only do <X> mentality Unlikely to build the right product A lot of waste Change enables improvement Document changes in development case
48
RUP DSDM
49
IF3250-Proyek Perangkat Lunak (Informatika ITB)
Iteration planning
A few hours
A few days
Each iteration implements the highest-priority work items New work items can be added at any time Work items can be reprioritized at any time
51
52
53
54
Customize RUP
RUP for Small Projects / RUP for Maintenance Make it smaller by deselecting content packages not needed Remove artifacts not needed (additional support for this in RMC 7.2) Choose to publish only the delivery process, versus entire configuration A 1-3 page description of the process you use Reference your RUP process and other sources, no need to duplicate info Update development case after each iteration review / retrospective Update delivery process if significant changes
55
Elaboration
Construction
Transition
Vision, high-level requirements, business case Not detailed requirements Baseline architecture, key capabilities partially implemented Not detailed design Develop a beta release with full functionality
56
Typically one short iteration Produce vision document and initial business case
Only produce what has value Initial use-case and (optional) domain models (10-20% complete) Focus on what is required to get agreement on big picture Reduce risk by identifying key requirements Acknowledge that requirements will change
57
Inception: 5 people, 2 weeks (for a 6 month project) => 400 hours 2 hour joint UC workshop with key stakeholders ~10 hours
Outline UCs: 4 hours per critical, 2 per important, and 1 per less important ~ 32
UC walkthrough: 1 hour per important UC, 30 min for all others x 5 people ~ 48 hours
Focus is on extended team converging on what application they are building, not to lock down on requirements
Further updates based on walkthrough ~ 10 hours Discussion: Is it worth to spend ~100 hours on getting concurrence on an initial UC Model?
58
Elaboration can be a day long or several iterations Balance mitigating key technical and business risks with producing value (tested code) Detail ~top 3rd most essential requirements (so you can estimate and prioritize) Produce (and validate) an executable and stable architecture
Define, implement and test interfaces of major components. Partially implement some key components. Identify dependencies on external components and systems. Integrate shells/proxies of them. Roughly 10% of code is implemented. 20% of use cases drive 80% of the architecture
IF3250-Proyek Perangkat Lunak (Informatika ITB)
59
Incrementally define, design, implement and test more and more scenarios
Incrementally evolve executable architecture to complete system Evolve architecture as you go along Partial deployment strategy depends greatly on what system you build
Daily build with automated build process You may have to have a separate test team if you have
60
Project moves from focusing on new capabilities to stabilizing and tuning Produce incremental bug-fix releases Update user manuals and deployment documentation Execute cut-over Conduct post-mortem project analysis
61
References
Per Kroll, RUP and Agility at Scale, A slide presentation from IBM Software Group Roger Pressman, Software Engineering: A Practitioner Approach, Prentice Hall
62