Development Methodologies

April 30, 2016
Share This Page » 

Software Development Methodologies

Solid Development Strategies

We specialize in a variety of software development methodologies to offer a wider scope of software development services to our clients.

CloudJocks is committed to delivering solutions of the highest quality. We place emphasis on transparent communication between our clients and members of the project team ensuring clear understanding of the requirements.

The adoption of a cohesive methodology derived from combining industry leading principles and concepts, is critical to successful software development.

We choose the best suited software development methodology based on important project considerations, such as project scope, deliverables and requirements, to name a few.

Any project’s development process begins only after an appropriate software development methodology has been decided. Based on project suitability, we follow the Agile and Waterfall software development methodologies.

Waterfall Software Development Model

The waterfall software development model enables us to effectively divide project responsibilities between delivery teams, ensuring complete control over tracking/monitoring, delivery and quality. The requirement gathering phase in the Waterfall Model is extremely elaborate and ensures that each and every detail is accounted and planned for.

Development begins at a rapid pace and each phase leads to the next, until the project is tested and delivered to the client. For the client, the accuracy of our estimations before commencement is baffling and the relatively low costs are definitely something that they harp on about.

The model is followed in situations where the project requirements are fixed and not likely to change much during the course of development. All requirements are identified at the start of the project.

Stages of the Waterfall Software Development Model

Stages of the Waterfall Software Development Model

1. Requirement Gathering
The first step in delivering a solution is a proper study and gap-analysis of the requirements. The requirements are documented in the form of a Functional Specification Document (FSD) that lays down the road-map for  development. The FSD contains a detailed description of all features and functionalities to be included in the solution. The development process begins only after the FSD has been verified and approved by the client.

2. Architecture & Design
Once the FSD has been approved, the next step is to design the database architecture and the GUI prototype. These are designed keeping in mind the requirements mentioned in the FSD.

3. Implement & Integrate
With the architecture and design in place, actual coding of the solution begins. We have in place a set of coding standards that all code adheres to. Regular reviews are done to ensure compliance to standards. Individual code modules are integrated to form a whole.

4. Deployment & Testing
The integrated solution is deployed to a testing server to QA test the solution. Various tests such as functional tests, compatibility tests, regression tests, load tests etc are performed to ensure that the solution meets requirements and conforms to  standards.

Errors identified during the testing process are recorded in an issue tracker. Our developers work to remove the errors that have been identified. The testing cycle is repeated until all errors have been addressed.

5. Release to Client
After successful verification, a final production version of the software is released to the client.

Agile Software Development Model

CloudJocks has also perfected the “art” of the Agile Development Framework, a highly effective development methodology, as it provides complete control over the process.

Agile is an iterative and incremental mode of development wherein the entire development life cycle is broken down into small iterations. The project scope and requirements, at a very broad level, are laid down at the start of the development.

Plans regarding the number of iterations, the duration and the scope of each iteration are defined.

Following the Agile model makes it much easier to adapt to changes during the development process as each iteration involves a cycle of requirements analysis, design, implementation, testing and then release to the client.

Project risks are minimized to a great extent because of work done is a number of iterations, problems and issues that can be identified early on.

The Agile model can be implemented using various methods.

Agile Methods

  • Extreme Programming
  • SCRUM

Stages of the Agile Software Development Model

Stages of the Agile Software Development Model

1. Define Requirements
At the start of any project, we work in close coordination with the client to understand and analyze the requirements. Upon a detailed analysis, initial estimations as to the broad level project scope, duration etc are made.

2. Initial Estimations
Once a best effort is made regarding identification of known requirements, an initial project plan and cost estimation is determined and presented to the Client. Upon initial Client approval of timeline and cost estimates, High-Level Planning can begin.

3. High-Level Planning
With the initial estimations in place, planning as to the number of iterations required and the broad level scope and duration of the iterations are laid down. The plans are sent to the client for approval. Upon approval, the process of developing the first iteration begins.

4. Begin Iteration N
Based on the scope defined for the iteration, detailed functional requirements, for the iteration, are laid down. With the requirements in place, the designs are made and the coding process begins. Once the coding process is completed, testing is conducted. Any bugs or issues identified are rectified and a release is made to the client.

Client feedback, if any, is incorporated and after approval from the client we move on to the next iteration. Every iteration that has been completed is integrated with the previous one. Proper regression testing is done to ensure that no issues arise out of the integration. The above mentioned process is followed for all iterations.

5. Write Story & Scenario
Storyboards and scenarios are defined as “Use Cases” whereby all user roles are defined as well as related permissions and role defined functions.

Using stories in some form or another is a well-established practice in software design, so much so that there are many meanings of the term “stories.” For instance, in agile processes, there is a concept of “user stories,” which are very basic units of expressing functional requirements: “As a user, I want to receive notifications when new applications are submitted.”

In user experience design, these stories take on more life through the incorporation of richer user and usage contexts and personas: real people in real places doing real things, not just some abstract, feature-oriented description of functionality that clothes itself in a generic “user.”

6. Implementation & Acceptance Tests
With the architecture and design in place, actual coding of the solution begins. We have in place a set of coding standards that all code adheres to. Regular reviews are done to ensure compliance to standards. Individual code modules are integrated to form a whole.

In software testing the ISTQB defines acceptance as: formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system.[2] Acceptance testing is also known as user acceptance testing (UAT), end-user testing, operational acceptance testing (OAT) or field (acceptance) testing.

A smoke test may be used as an acceptance test prior to introducing a build of software to the main testing process.

7. Deployment
The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur at the producer side or at the consumer side or both. Because every software system is unique, the precise processes or procedures within each activity can hardly be defined.

8. Quality Assurance
Software quality assurance (SQA) consists of a means of monitoring the software engineering processes and methods used to ensure quality. The methods by which this is accomplished are many and varied, and may include ensuring conformance to one or more standards, such as ISO 9000 or a model such as CMMI.

SQA encompasses the entire software development process, which includes processes such as requirements definition, software design, coding, source code control, code reviews, software configuration management, testing, release management, and product integration. SQA is organized into goals, commitments, abilities, activities, measurements, and verifications.

Software quality assurance, according to ISO/IEC 15504 v.2.5 (SPICE), is a supporting process that has to provide the independent assurance in which all the work products, activities and processes comply with the predefined plans and ISO 15504.

9. More Development?
All defined requirements are validated for complete functionality. If any requirements are missing or incomplete, these requirements are immediately implemented and tested before moving to the System Testing phase.

10. System Testing
The integrated solution is deployed to a testing server to QA test the solution. Various tests such as functional tests, compatibility tests, regression tests, load tests etc are performed to ensure that the solution meets requirements and conforms to  standards.

Errors identified during the testing process are recorded in an issue tracker. Our developers work to remove the errors that have been identified. The testing cycle is repeated until all errors have been addressed.

On completion of all the iterations, we conduct a final test on the fully integrated solutions. Issues are sorted out and the solution is released to the client. Upon approval from the client the solution is made live.

11. Release to Client
After successful verification, a final production version of the software is released to the client.

System and Software Testing

Solutions using the Agile model, we make use of

  • MSTest – For performing unit tests
  • WAPTPro – For load testing
  • Team Foundation Server – Agile Template – to manage work item tracking, version tracking, etc