We have successfully delivered a wide variety of software applications: on time, on budget. Here is how we approach a new project:
A typical project at GoodCore Software begins with the project manager on our end engaging in discussing requirements with the client. We identify the objectives of the project, the budget and the time constraints, and invest the effort to understand client’s vision about the software solution they are aiming to build. A high level of emphasis is placed on eliciting requirements which may not be obvious straight away. Time and again, we’ve seen the benefits of investing into this phase.
Prototyping of the software application along with GUI design helps all stakeholders to get a feel of a working system at the initial stages of the project. A prototype is very useful to crystallize and further refine requirements. This phase helps reduce project risks and introduce certainty into the schedule and cost.
Once the requirements and GUI design are signed off by the client, the stage is set for detailed database and application design. Effort goes into ensuring that the database design is logical, not overly complex, and flexible to handle future requirements. We have the skills and the experience to develop scaleable database designs optimized for large Internet audiences and high performance.
Our technical architects break up the application into the logical tiers (Presentation, Logic, and Data Access) and specify the class hierarchy for an object oriented design. Typically, this doesn’t need to be done from scratch. The technologies we use for our projects provide the base framework for this purpose e.g. the Zend Framework for PHP based projects, .NET development framework for .NET based applications, and frameworks like Struts for J2EE based development.
Backed with a rigorous requirements analysis and technical design effort, the stage is all set for coding to begin. Attention to coding conventions and frequent peer reviews throughout development ensures a high quality code that is well structured, documented, and flexible.
Skilled quality assurance personnel thoroughly and systematically test the application and prepare defect reports. The process of defect-fixing and testing proceeds iteratively until the software is considered stable to be deployed.
The software is deployed and put in place with application monitoring and periodic data backups. Typically, we prepare a deployment manual that documents the steps to deploy and rollback releases of the application.