Software Development Methodology

At COA IT Solutions, we recognize that every customer has unique needs, and that different projects require different methodologies. As such, every solution we deliver incorporates best-of-breed processes to help our clients achieve desired objectives, while meeting deadlines and priorities, as well as ensuring the evolution of the application along their business model.
The first step in our Software Development Methodology is to determine the appropriate development model based on the project's requirements in terms of schedule, delivery, etc. This may be one of the traditional models or a lightweight, agile software development model that involves feature-driven, responsive development.
Each model is associated with a set of process procedures designed to maximize benefits and reduce risks inherent to the undertaking. Whenever possible, Rapid Application Development (RAD) frameworks and re-usable components are utilized to reduce the development timelines.
COA IT Solutions Software Development Methodology encompasses 10 phases:
chart
Phase One: Requirements Gathering & Definition
This involves gathering all the necessary information to define the project scope and/or develop a prototype, including information on existing systems, process specifications, onsite analysis, end-user interviews, market research and competitor analysis. Steps include:
  • Requirements analysis, including application goals and objectives
  • Creation of vision scope document and feature list
  • Development of technical recommendations and high-level requirement specification  
Phase Two: Requirements Analysis
In this phase, a detailed analysis is carried out from the information gathered in the Requirements Gathering & Definition Phase.
Steps include:
  • Analysis and creation of Software Requirement Specification (SRS)
  • Creation of Use Case Specification and Diagram and generation of the Use Case Model
  • Design business rules and flow diagrams
  • Validate the scope and estimates against the contract, including any necessary revisions
Phase Three: Project Plan
In this stage, the project team is assembled, including careful selection of engineers with the requisite skills. A detailed project plan is also created that outlines the key milestones and dates for each deliverable.
Phase Four: Design
A carefully detailed Design Document and Process lays out the complete definition of the application and maps the entire system, as well as the functional process flow. The content contains the following main items:
  • Overall System Architecture
  • Class Diagram
  • Flow Diagram/Sequence Diagram
  • User Interface Design
  • ERD - Database Diagram
  • Implementation Model
  • Test Plan
During this stage, we provide clients with a fully functioning, clickable user interface. Once approved, development will commence.
Phase Five: Development
In this stage, code is written and tested against design requirements and test cases. Internal and inline commenting is completed, as is coding activity. Completion of each module results in preparation of test cases and unit level testing. Reviews are also completed to ensure that the developed code adheres to the organizational guidelines for coding. Steps include:
  • Development of code base, per implementation and design models
  • Application source code is tested according to the test cases and test plan
  • Processes are documented
  • Use Case test results are created
  • Peer code reviews are conducted
Phase Six: Testing
The test plan, created in the design phase, outlines the types of tests to be performed, as well as resources, tools and responsibilities for test-related activities. Based on that plan, the various levels of testing are performed, including:
  • Unit Testing, during which developers are responsible for the quality of the module they are developing
  • Functional Testing, which involves generating test cases that are populated with data and supplied to the QA team for evaluation
  • Integrated and System Testing, during which the entire application is deployed on the test servers and various aspects of the application, such as the platform support, browser support, etc., are tested. At this phase, automated and stress testing tools are utilized.
  • User Acceptance Testing (UAT), which takes place upon successful completion of all other testing
Phase Seven: Training
Training manuals and online help systems are developed and integrated into the application in this phase. In addition, live training is provided to the client, online or onsite.
Phase Eight: Deployment
In this stage, the application is deployed on the live server. Steps include:
  • Implementation on client premises or hosting server
  • Creation of Archived Software Artifacts
  • Client signoff
  • Installation of Remote Access Software, if appropriate and necessary
  • Transition of application to the maintenance team
Phase Nine: Maintenance, Support and Enhancements
The application will be monitored closely after deployment for a period defined by the contract. Any post-launch issues that arise will be addressed in an expedited fashion. If required, appropriate help desk systems will be deployed to support the client's end-users. Enhancement requests may be made via the project manager at this time.
Phase Ten: Defect Management
A fully integrated defect-tracking solution is deployed to enable users to input and track new defects and enhancement requests.
The system provides:
  • Streamlined software development and maintenance
  • Clear, updated information about the status of each defect
  • Full control over the workflow
  • History of work completed on each defect or enhancement
Client Communication
During the entire project lifecycle, it is important to facilitate regular communication between COA IT Solutions and the client company. To deliver projects on time and on budget, project managers communicate regularly with all members of the project team, including management, team leads, project team members and the client. Weekly status reports are created to ensure that everyone is on the same page, which also allows the team to analyze how the project is progressing. The status reports keep the client informed of:
  • Activities actually performed the previous week
  • Activities planned for the coming week
Communication is also enhanced through regular teleconferences, emails, web meetings and on-demand collaboration systems.