Version 1.0 FUP Framfab Unified Process From a technical perspective...
Version 1.0 FUP Framfab Unified Process From a technical perspective...
Agenda What does FUP do for us? Classical problems in software development Best practices in software development How does FUP help us with this? Other Project Deliverables FUPs technical workflows FUP vs. RUP A few practical things...
Classical Problems in Software Development Inaccurate understanding of end-user needs Inability to deal with changing requirements Modules dont fit together Software thats hard to maintain or extend Late discovery of serious project flaws Poor software quality Unacceptable software performance Framfab: Deployment
Best Practices for Successful System Development Develop Iteratively Manage Requirements Use Component-based architectures Model Software Visually Verify Software Quality Control Changes to Software
The Practice The Foundation The Toolbox FUP Roles and Deliverables to help: Manage Requirements Verify Software Quality Control Changes to Software Manage the Deployment Process Iterative Development Suggests visual modeling with UML How does FUP help us with this?
Iterative Development What does it mean? Divide development into increments Correct problems in earlier iteration in next iteration Build the most critical functions first
Example We want to build a system with the functions A, B, C, D, E and F A and D are essential (essential functions or essential to architecture) B and F are important C and E would be nice to have… We plan three iterations: #1: A and D #2: B and F #3: C and E Build the most critical functions first Correct problems in earlier iteration in next iteration
Example, continued... Create a description of what Create a description of how Build the function Test the function What? (A-F) How? (A-F) Build! (A-F) Test! (A-F) Waterfall A-F ADAD ADAD ADAD ADAD BFBF BFBF BFBF A,D B,F CECE CECE CECE A-F Iterative (Evolutionary)
Example, continued... ADAD A-F ADAD ADAD ADAD BFBF BFBF BFBF A, D B,F CECE CECE CECE A-F Iterative, parallel Iterative, real
Iterative Development System Analysis & Design Implementation & Integration Test Requirements Planning & Administration Client Analysis & Strategy Development Preliminary Iteration(s) Iter. #1 Iterations Iter. #2 Iter. #n Iter. #n+1 Iter. #n+2 Iter. #m Iter. #m+1 Acquisition: Demonstrate feasibility - sell! (Definition +) Elaboration: Find a sound architecture! Production: Build critical functions first Transition: Correct problems DefinitionElaborationProductionTransitionAcquisition
Iterative Development Attacks the Risks Early... Find problems in architecture early Find problems in requirements early Test the development cycle early Avoid big-bang integration Continuously test Possibly skip late iterations Iterate!
System Designs Test Cases Test Procedures Test Protocols Test Reports Change Requests Defect List Requirements Attributes Iteration Reports Other Technical Deliverables
System Analysis & Design Implementation & Integration Test Requirements Planning & Administration DefinitionElaborationProductionTransitionAcquisition Client Analysis & Strategy Development The Technical Workflows
Requirements Definition Elaboration Production Transition Acquisition Objective... To understand functional and non-functional requirements - what are we building? Functionality, Security, performance, compatibility, manageability, usability... Requirements Input from... Project Brief, Communicative Concept, Technical Strategy, Stakeholders needs Roles... Responsible for Project Technology, Responsible for Usability Deliverables... Technical Brief, Functional Specification, Supplementary Specification Drives... System Analysis & Design
DefinitionElaborationProductionTransitionAcquisition Objective... To decide how the system will be built System Analysis & Design Input from... Functional Specification, Supplementary Specification, Project Manual (design patterns) Roles... Responsible for Project Technology, Responsible for System Design Deliverables... System Architecture System Designs Architectural Baseline Drives... Implementation & Integration System Analysis & Design
DefinitionElaboration ProductionTransition Acquisition Objective... To build the system Implementation & Integration Input from... System Architecture, System Designs, Project Manual (code standards) Roles... Responsible for Project Technology, System Design,System Environment, System Development, Client Programming Deliverables... Iterations (including Beta Version, Release Version) Requirements Attributes Iteration Reports Drives... Testing Implementation & Integration
Definition Elaboration ProductionTransitionAcquisition Objective... To verify that the system meets the requirements Test Input from... (Iterations), Test Plan, Test Cases, Test Procedures Roles... Responsible for Quality Assurance, Responsible for Testing, Responsible for Usability Deliverables... Test Protocols, Change Requests Defect List Test Reports Drives... Iterative Process Test To verify that the system does not meet the requirements!
DefinitionElaboration ProductionTransition Acquisition Objective... To plan and administrate for testing, deployment, iterations, routines Planning and Administration Deliverables... Test Plan, Deployment Plan, Project Manual, Technical Documentation Planning & Administration Roles... Responsible for Project Technology, Responsible for Quality Assurance, Responsible for System Environment
DefinitionElaborationProductionTransitionAcquisition Objective... To analyze the customers technical situation and develop a technical strategy Client Analysis & Strategy Development Input from... Business Strategy, Communicative Strategy Roles... Responsible for Client Technology Documented in... Technical Strategy Client Analysis & Strategy Development
FUP vs. RUP The Practice The Foundation The Toolbox FUP FUP: Strategic roles added FUP: Communicative roles added FUP: Technical roles simplified FUP: Deliverables simplified FUP: Deliverables attached to milestones RUP: Workers = FUP: Roles RUP is not described in three levels RUP: Inception = FUP: Acquisition + Definition RUP: Construction = FUP: Production FUP: The Strategic Workflows added FUP: The Communicative Workflows added RUP: Strongly related to UML RUP: Workflows described in detail
RUP References The Rational Unified Process - an introduction, by Philippe Kruchten The Unified Software Development Process, by Booch, Jacobson and Rumbaugh Software Project Management, by Walker Royce All books are from Addison-Wesley
A few practical things from a technical perspective... All projects need a person Responsible for Project Technology For smaller projects, this person can act as Responsible for Quality Assurance, Responsible for System Environment and Responsible for System Design as well Develop and follow an Iteration Plan Try to have at least two iterations during Production All deliverables should have one person responsible for it Responsible for establishment, approvals and updates Use versioning Plan for Testing and Deployment early Prove your architectural concepts! (Use component architectures and model visually)
Iterate!