Software Outsourcing Methodology
Through many years of providing outsourcing services on custom software, web and database development, Softerra has been using a standardized and refined software development methodology which is solid and clearly defined, yet flexible to meet the individual needs of diverse custom solutions. This methodology represents a powerful combination of the best industry-proven practices and leading standards, and is focused on streamlining the development process to increase return on investment (ROI) and compress time-to-market. Softerra's methodology is applied successfully to medium- to large-scale custom application development projects and involves the following phases:
- 1. Defining Project Requirements
- 2. Proposal
- 3. Functional Specification Development & Approval
- 4. Software Development & Alpha Release
- 5. QA Testing & Beta Release
- 6. Final Release & Deployment
- 7. Ongoing Technical Support & Enhancements
The outline of the phases and sub-processes of the development process is provided in the following sections.
1. Defining Project Requirements
At this phase we work closely with you and discuss all the details about your current practices, business objectives and marketing goals, ensuring we thoroughly understand all project requirements.
Through gaining insight into your needs and strategic challenges we define the project scope along with the technologies and the application development approach thus setting the foundation of a successful implementation in the most efficient manner possible while effectively managing risks and maintaining high quality of the final software product.
It goes without saying that if our customers provide us with the detailed project specification or request for proposal (RFP) at the outset, we proceed instantly to investigation and elaboration of the Proposal document.
Based on the information gathered through communication with the customer and further analysis, our team elaborates a detailed Proposal document that incorporates the following key elements:
- Vision document provides our description of the entire project scope, goals of the software, as well as outlines the application functionality, constraints (such as schedules, costs, or the software engineering environment) and requirements that must be satisfied;
- Preliminary Estimate covers the project size, work effort, and software development costs;
- Draft Project Plan illustrates the major milestones and provides a rough timeline for the project implementation.
The Proposal document is sent to the customer for review and approval before proceeding further.
3. Functional Specification Development & Approval
Any changes or updates suggested during the course of the Vision document review by the customer are discussed and approved by both sides with the primary focus on refining the project requirements in order to avoid spending excessive development resources. The output of this rigorous requirements definition process is a document called Functional Specification. This document is a full and complete specification for a new software product, describing both functional requirements of the system and non-functional ones such as interface requirements, requirements for performance, reliability, security, and any other particular non-functional attributes required by the system.
With the thorough understanding of all the application requirements, the software architecture and design representing the decomposition of the software architecture into its main components and describing the relations between those components are developed and incorporated into the Functional Specification document. The fundamental software system design helps eliminate any late stage structural changes which may be costly and may impact the project schedule, as well as achieve all-round considerations and devise an architecture that will fit future needs while being compatible with or able to provide a migration path for the existing system. In addition, the preliminary Project Plan and Estimate are revised and updated accordingly, providing the customer with the accurate and finalized project budget, schedules and milestones.
The Functional Specification document approval and sign-off by the customer marks the project requirements freeze and proceeding to the next stage of the software development life cycle - implementation. Additional functional and non-functional changes are negotiated and managed via the Change Request Form.
4. Software Development & Alpha Release
Once a clear and complete project requirements specification along with the architectural design is confirmed, the application development phase is started.
Throughout the application development process intermediate deliverables are provided to the customers according to the scheduled milestones allowing them to track the implementation progress. The milestone deliverables for each sub-system, sub-element or module can be reviewed by the customers for verification against their business requirements, ensuring the end product will meet the original objectives. The intermediate deliverables review can also help to discover a problem or flaw at early stage of the development before the application evolves into a complete product, thus lowering the costs of corrections.
In order to early discover some trivial logic errors, software engineers perform unit tests right after the completion of code programming. Individual classes are tested to ensure reliability and functionality within a unit level. Furthermore, when a few programs within a module pass the unit tests, they are combined together for modular function tests. After a few modules undergo the module function tests, they are integrated and tested together to ensure sufficient execution and compliance with the requirements after integration. Eventually, the whole system is used for system testing and it passes functional testing, performance testing, and stress testing to ensure all requirements are met. The outcome is an Alpha Release of the software product which can be provided to the customer for the review.
5. QA Testing & Beta Release
The next phase - QA Testing & Beta Release includes extensive QA testing; the code will be reviewed and validated for consistency and functionality. Responsibilities of the QA team are to detect any deviation from the quality procedures and ensure all requirements and specifications are properly considered and met. Any errors and bugs are detected and fixed; all required changes will be made to ensure compliance with the requirements.
After the system passes successfully rigorous tests and is approved by the QA department, Beta Release is provided to the customer. Beta Release is deployed in the final environment at the customer's side for additional test and review within a certain period as specified in the Project Plan at earlier phase. During this stage we gather feedback from the customer and conduct final testing and debugging based on the appropriate customer's feedbacks. The approved and accepted Beta Release evolves into the Final Release and the project implementation phase proceeds with the Final Release Delivery stage.
6. Final Release & Deployment
The Final Release delivery phase spans all activities on the new software product delivery and deployment. After the final application is installed, configured, and launched at the deployment site, follow-up activity for close monitoring of the system performance is included to provide immediate response to the issues and ensure complete customer's satisfaction. During this phase, Softerra transfers appropriate knowledge, conducts comprehensive training to the customer's personnel and provides final technical/user documentation on the delivered application, if requested.
7. Ongoing Technical Support & Enhancements
Once the completed software solution is deployed, Softerra provides ongoing support during a pre-defined period of time after the final delivery. During this period, any programming error or bug detected is corrected with no additional cost. Since nothing is constant in the IT arena, the software applications should also evolve to meet new challenges and keep remaining on target in the market and be responsive to the end-users. By additional agreement, we can provide the second line support and enhancement services. These services involve activities on enhancing, refining and optimizing the developed software.
Project Management & Communication
At Softerra we provide the level of communication that ensures total transparency and manageability of the project activities for our customers. The principal responsibilities of Project Manager assigned to the project include communications with the customer on all issues related to the project, as well as reporting on the project progress at milestones set forth in the Project Plan. Project Managers work closely with the customers throughout the software application development process, and provide the fastest possible turnaround time when addressing to customers' change requests, questions or concerns. We consider close and prompt interaction between Project Manager and the customer vital for successful project delivery on time, within budget and with high quality meeting client's expectations and business objectives.
Continuous supervision by the professional QA staff is provided throughout the application implementation process. All program deliverables are inspected at various checkpoints in the project implementation phase to carry out the quality control and ensure the development team follows the processes and the project remains on target in terms of functionality and delivery dates.