Software Development Methodology
Software Development Principles
These principles are based on the Rational Unified Process (RUP) methodology, and include:
Iterative Software Development
On larger projects, each iteration lasts for an agreed time period, at which point the latest version of the software is tested, demonstrated and reviewed, allowing us to achieve:
- Concrete evidence of progress for the customer
- An opportunity for feedback and continuous improvement
- Agreement on the overall framework and project direction
We organise our work in such a way as to deal with the biggest risks first. This may involve investigating any unknown technologies which will be used on the project, or specifying and implementing the most important scenarios in the project.
Correct Architecture Design
It is essential to focus on the correct software architecture, which has a major bearing on factors such as scalability, performance and maintainability. Once the architecture is in place, it acts as the solid foundation upon which the rest of the application can be safely built.
Software Development Phases
1. Inception Phase
Initial phase for building understanding of type and scope of system; producing cost estimates
This phase deals with project requirements, initial concepts and scope. It sets out clearly what the project is trying to achieve. It usually includes a period of requirement gathering and analysis (which has strong commercial and marketing implications).
The deliverables of the inception phase would normally be:
- A business case for the project/product
- An outline requirements specification for the product
- An initial design specification for the product (high level)
- An initial project plan
- An initial project risk assessment
- Budgetary estimates for the subsequent project phases
Some of these deliverables would be produced by the customer (e.g. business case & requirements specification). Other deliverables would be produced by CAD Schroer (e.g. functional specifications, initial design specification, initial project plan, initial risk assessment & budgetary estimates). Some projects only include an inception phase, after which the customer would decide whether to perform additional Inception Phase work to build confidence or proceed to the Elaboration Phase.
2. Elaboration Phase
Prototyping phase in which technical tasks are delineated and perceived risks are quantified and dealt with
The overall purpose of the Elaboration phase is to flesh out the project by further assessing feasibility, refining the initial design, mitigating foreseeable risks, and quantifying the anticipated work required, before expending budget on any large scale or non-critical development work.
Specific objectives and deliverables of the Elaboration Phase are to:
- Investigate how best to satisfy the project requirements
- Identify any suitable cost and time saving third party components, tools & libraries
- Identify, analyse and find solutions for any major areas of foreseeable risk
- Develop a design for the product’s architecture
- Develop a design for the product’s user interface (main layout and forms)
- Develop a proof of concept deliverable to:
- Demonstrate the design and how it satisfies the main product use cases
- Prove the suitability of any chosen third party components, tools & libraries
- Prove solutions to deal with foreseeable areas of major risk
- Assess design performance and ease of learning & speed of use
- Provide an opportunity for feedback on the design
- Generate confidence in the design
The work performed in the Elaboration phase facilitates the refinement of the original proposals and budgetary estimates by CAD Schroer for subsequent phases to a much higher degree of accuracy, prior to commencement of the subsequent phases.
3. Construction Phase
Implementation phase where the remainder of functionality is implemented, and other project deliverables are concluded
The purpose of the Construction phase is to carry out the remaining project development work (usually the bulk of the development work) using the results of the Elaboration phase as the basis for this. It is normal for this phase to contain one or more sub-phases or “iterations” (in RUP terminology), especially for large projects.
Each iteration provides an opportunity to deliver an increasingly complete solution that can be tested by the customer. The deliverables of each iteration also offer an opportunity to provide feedback that can be incorporated into subsequent iterations. Depending on the project size and duration, each iteration would typically be planned to last for 4 weeks.
The work content of each iteration is usually largely made up of structured work content formulated at the end of the Elaboration phase. However, as feedback can also be incorporated to refine earlier work and incorporate new important ideas, or responses to emerging business opportunities, there is often a degree of organic development as well.
This iterative approach usually gives a good balance of planned, well structured development, and a prudent opportunity to refine previous work and adapt the overall development plan to suit the customer’s changing requirements, which inevitably arise on a large project, as do new ideas with the benefit of hindsight. In short, it maximises the likelihood of delivering what the customer ultimately really wants, as opposed to what was initially conceived.
4. Transition Phase
The purpose of the Transition phase is to hand over project collateral to the customer and deliver any other services required in conjunction with project completion.
Typical items we deliver include:
- Source code
- Key knowledge
- In-situ Testing
- On-site Training
- Any other materials developed during the project
Depending on the nature of the project, we often work alongside the customer’s team for a specified period of time to ensure a smooth handover.
CAD Schroer Customer Portal
Where relevant, CAD Schroer offers its clients password-controlled access to an online portal for real-time issue and project status reporting and tracking.
Contact us today to find out how we can help with your software development or consultancy requirements.