PRJ566 Project Planning & Management Software Architecture
Systems Development Lifecycle (SDLC) Projects are developed according to a definite methodology called the SDLC Three major activities Analysis: understanding business needs Design: conceptualizing computer-system solution Implementation: construction, testing, and installation
Systems Development Lifecycle (SDLC) Two additional phases: Project planning Support
Aids to Assist in Analysis and Design Methodologies Comprehensive guidelines to follow for completing every SDLC activity Collection of techniques Examples: Structured, OO Models Representation of an important aspect of the real world Diagrams and charts Project planning aids
Software Architecture
Architectural Design Focuses on the overall structure of the system, the relationships among its major components and their interactions Is divided into sections or views
Models and Views Models are complete representations of the system: use case models, class diagrams Architectural views focus only on what is architecturally significant
The Architect The person responsible for the overall structure and design of the system In a small system the architect may serve the role of the analyst and the software designer, Programmer/Analyst Should be the most senior and responsible person on the technical team
The Architect Becomes the owner of the technical vision and his/her understanding of the overall system, coupled with his/her ability to to design a model of the system, is critical to the success of the project
The Architecture Document Designed to establish the overall structure of the entire project by describing various architectural views
Architectural Views A view is a specific perspective or focus. Typically an architectural view is a subset of the entire architecture.
Architectural Views The View Model developed by Philippe Krutchen The View Model The View Model developed by Philippe Krutchen The View Model
Use Case View Has precedence over the other views, because the use case view--the collected use cases from the requirements analysis--drives and motivates the rest of the design.
Use Case View It is the job of the architecture and ultimately the implementation to realize the use case requirements Focus is on the interaction of the classes and how these interactions serve to implement the use cases we analyzed previously
Logical View Represents the organization of the most significant classes and how they relate to one another The class design is integrated into the logical view, creating an integrated perspective of the entire system
Logical View Most comprehensive architectural view Incorporates the most significant aspects of all other views Provides an overview of the entire architecture, and in conjunction with the code itself, provides a guide to the software
Process View Focuses on how, in a system with multithreading or multiple processes, the concurrent tasks interact
Copyright © 1997 by Rational Software Corporation The Physical World Component diagrams illustrate the organizations and dependencies among software components A component may be A source code component A run time components or An executable component
Copyright © 1997 by Rational Software Corporation Course Offering Student Professor Component Diagram Course.dll People.dll Course User Register.exe Billing.exe Billing System
Copyright © 1997 by Rational Software Corporation Deploying the System The deployment diagram shows the configuration of run-time processing elements and the software processes living on them The deployment diagram visualizes the distribution of components across the enterprise.
Deployment View Focuses on the physical allocation of resources and the allocation of tasks among those resources in a distributed system
Copyright © 1997 by Rational Software Corporation Deployment Diagram Registration DatabaseLibraryDormMain Building
Implementation View Embodied in the code with its supporting documentation
How are architectural goals to be achieved? Model software objects after problem domain objects Build software systems like hardware systems, i.e. more pluggable View programming as assembling parts
How are architectural goals to be achieved? Build new software parts by extension “Grow” software systems through iterative development Achieve large-grain interoperability across heterogeneous systems and networks
Iteration Across Life Cycle Phases
The Spiral Life Cycle Model Phases can be broken into smaller pieces, each with a different type of risk
Copyright © 1997 by Rational Software Corporation InceptionElaborationConstructionTransition Iteration 1Iteration 2Iteration 3 Iteration Planning Rqmts Capture Analysis & Design Implementation Test Prepare Release “Mini-Waterfall” Process Use Cases Drive the Iteration Process
Copyright © 1997 by Rational Software Corporation Work Allocation Within an Iteration Work to be accomplished within an iteration is determined by The (new) use cases to be implemented The rework to be done Packages make convenient work packages for developers High-level packages can be assigned to teams Lower-level packages can be assigned to individual developers Use Cases make convenient work packages for test and assessment teams
Copyright © 1997 by Rational Software Corporation The Iteration Life Cycle: A Mini-Waterfall Results of previous iterations Up-to-date risk assessment Controlled libraries of models, code, and tests Release description Updated risk assessment Controlled libraries Iteration Planning Requirements Capture Analysis & Design Implementation Test Prepare Release Selected scenarios
Copyright © 1997 by Rational Software Corporation Detailed Iteration Life Cycle Activities Analysis & Design Determine the classes to be developed or updated in this iteration Update the object model to reflect additional design classes and associations discovered Update the architecture document if needed Begin development of test procedures Implementation Automatically generate code from the design model Manually generate code for operations Complete test procedures Conduct unit and integration tests
Copyright © 1997 by Rational Software Corporation Detailed Iteration Life Cycle Activities Test Integrate and test the developed code with the rest of the system (previous releases) Capture and review test results Evaluate test results relative to the evaluation criteria Conduct an iteration assessment Prepare the release description Synchronize code and design models Place products of the iteration in controlled libraries
Copyright © 1997 by Rational Software Corporation Iteration Assessment Assess iteration results relative to the evaluation criteria established during iteration planning: Functionality Performance Capacity Quality measures Consider external changes that have occurred during this iteration For example, changes to requirements, user needs, competitor’s plans Determine what rework, if any, is required and assign it to the remaining iterations
Copyright © 1997 by Rational Software Corporation Initial Project Risks Initial Project Scope Revise Overall Project Plan Cost Schedule Scope/Content Plan Iteration N Cost Schedule Assess Iteration N Risks Eliminated Revise Project Risks Reprioritize Develop Iteration N Collect cost and quality metrics Define scenarios to address highest risks Iteration N Risk Reduction Drives Iterations
Copyright © 1997 by Rational Software Corporation Three Important Features of the Iterative Approach Continuous integration Not done in one lump near the delivery date Frequent, executable releases Some internal; some delivered Attack risks through demonstrable progress Progress measured in products, not documentation or engineering estimates
Copyright © 1997 by Rational Software Corporation Resulting Benefits Releases are a forcing function that drives the development team to closure at regular intervals Cannot have the “90% done with 90% remaining” phenomenon Can incorporate problems/issues/changes into future iterations rather than disrupting ongoing production The project’s supporting elements (testers, writers, toolsmiths, CM, QA, etc.) can better schedule their work