METHODOLOGY

Curtius Consulting uses a standardized and refined software development methodology which is solid and clearly defined, yet flexible to meet the individual needs of diverse client solutions. This methodology represents a powerful combination of the best industry-proven practices and leading standards, and is focused on streaming the development process to increase return on investment and compress time-to-market. Curtius Consulting's methodology is applied successfully to medium - to large-scale custom application development projects and involves the following phases:

Defining Project Requirements 
At this phase we work closely with you and discuss all the details about your 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 clients provide us with the detailed project specification or request for proposal at the outset, we proceed instantly to investigation and elaboration of the Proposal document.

Proposal 
Base on the information gathered through communication with the client and further analysis, our team elaborates a detailed Proposal document that incorporates the following key elements:

 The Proposal document is sent to the client for review and approval before proceeding further.

Functional Specification Development & Approval 
Any changes or updates suggested in the course of the Vision document review by the client 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 client with the accurate and finalized project budget, schedules and milestones.

The Functional Specification document approval and sign-off by the client 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.

Development and 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 clients 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 clients 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 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 an 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 satisfied. The outcome is an Alpha Release of the software product which can be provided to the client for review.

QA Testing and Beta Release 
The next phase 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 client. Beta Release is deployed in the final environment at the client'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 client and conduct a final testing and debugging based on the appropriate client's feedbacks. The approved and accepted Beta Release evolves into the Final Release and the project implementation phase process with the Final Release Delivery stage.

Final Release and 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 issue and ensuring complete client's satisfaction. During this phase, Curtius Consulting transfers appropriate knowledge, conducts comprehensive training to the client's personnel and provides final technical/user documentation on the delivered application, if requested.

Ongoing Technical Support and Enhancements
Once the completed software solution is deployed. Curtius Consulting provides ongoing support during a pre-defined period 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 an optimizing the developed software.