|
Process
The process used to design, build and deploy a software application will vary between projects, and the below should serve as a guide to the typical process.
- Business Process Analysis and Design
- Mapping the current process using flow chart diagrams.
- Re-engineer as required - identify efficiencies.
- Determine design of existing/re-engineered business process including predicted ROI.
- Map the new process - based upon volume, predict performance metrics and capacity.
- Deliverables: Business process maps of existing and new business process which includes detailed step descriptions and may include an ROI report.
- Go No/Go decision. If go, then proceed to Software Requirements and Analysis.
- Software Requirements and Analysis
- Based on a mapped and documented business process, scope the size of the project.
- Based upon the scope, identify the business scenarios which the solution will cover. This determines the complexity of the project.
- Based upon the complexity of the application, develop a project plan and schedule that estimates the effort, cost and resources to develop the solution.
- Deliverables: Use case diagrams and documents, project plan with estimated effort (using estimation work sheet), cost, resources and deliverables.
- Go No/Go decision. If go, then proceed to Software Architecture and Design.
- Software Architecture and Design
- Design an architecture blueprint that details the physical, logical, process and development views of the model.
- Develop the framework for the architecture.
- Deliverables: Architecture and detailed design documents, software framework.
- Go No/Go decision. If go, then proceed to Large-scale Systems Design.
- Large-scale Systems Design
- Based upon the software architecture and detailed design, determine the scale of the solution based upon the volume and capacity requirements over the life span of the solution. Includes availability, reliability, failover.
- Deliverables: Systems design blueprint.
- Go No/Go decision. If go, then proceed to Construction.
- Construction
- Based upon the software architecture and detailed design, develop the code using the Development Guidelines and Application Server Developer Installation Guidelines.
- Daily build process to ensure instant assessment of the exectutable architecture. An executable architecture has the following characteristics:
- Exists as a real application that runs in some limited way.
- Carries out some or all of the behavior of scenarios chosen from the analysis phase.
- Is production quality code.
- Either constitutes a vertical slice that cuts through the complete application/system from top to bottom or goes horizontal by capturing most of the interesting elements of the domain model.
- Touches upon most if not all of the key architectural interfaces.
- Makes a number of explicit simplifying assumptions, yet is not so simple that it assumes away reality.
- Deliverables: Unit tested components, unit tested component integration.
- Go No/Go decision. If go, then proceed to Testing.
- Test Plans, Test Cases, Testing
- Based upon the deliverables at this stage, develop a test plan whose goals are to ensure early problem identification and to ensure the product is:
- In agreement with requirements, specifications, and design.
- Properly documented according to specified standards.
- Testable and maintainable.
- Identified, managed, audited and tested.
- Properly managed when changed using the Change Request Process.
- The cost of failing to plan for quality is costly. The realitive cost to fix a defect is 100 times greater relative to fixing the defect at Requirements versus After Delivery.
- Deliverables: Test plans, test cases (based on Use Cases), test results and metrics using a predictive model for targeting releases based upon defect fix rate, and change requests. The quality plan will include a business escalation process to resolve quality issues and a Software Risk Management strategy that is developed and maintained throughout the project lifecycle.
- Go No/Go decision. If go, then proceed to executing the deployment plan.
- Deployment, Operations and Maintenance Plans
- Based upon the systems design, develop a deployment plan to deploy and promote solutions from development servers to test servers and then to production servers.
- Based upon the systems design, develop a operations plan that covers system health monitoring, performance statistics, alarms, notifications, etc. for the operations of the solution.
- Based upon changing business requirements (starting from Business Process Analysis and Design) develop a maintenance plan that describes enhancements, deliverables and release dates of new functionality of the solution.
- Deliverables: Deployment, Operations and Maintenance Plans.
- Go No/Go. If go, then proceed to step 1, Business Process Analysis and Design and repeat the 6 steps.
|