Methodologies


Agile

Agile software development has quickly proven its value in delivering high-quality applications that meet customer needs. Datamatics Group’s agile developers produce superior code that is easier to maintain, adapt and extend. Our agile development practices, such as frequent deliveries, continuous integration, and build, deployment, and test automation, reduce risk and rework.
While adopting agile design principles is essential, the transition is not always easy. Successful agile adoption means changing entrenched cultural patterns and processes—there is no “one size fits all” approach. We can guide you through the transformation.


Our Agile consulting superstars show you how to:

  • Evangelize agile values to build organizational buy-in
  • Train engineers and product manager in agile principles, methods and practices
  • Coach employees to embrace continuous change
  • Establish real cross-functional communication, coordination and collaboration
  • Mitigate errors, missteps and risk to meet tight release timelines

We support you by recommending agile methods for adoption and for outsourcing. We work with you to choose platforms, tools and metrics that increase visibility and predictability along the way. We also create playbooks, share best practices and tailor processes to” be” agile, not just “do” agile.



Waterfall


Most software product development uses either the Waterfall methodology. A development methodology is the process by which an engineering team will build a given product.

The Waterfall methodology—also known as the Waterfall Model—is a sequential software development process, where progress flows steadily toward the conclusion (like a waterfall) through the phases of a project (that is, analysis, design, development, testing). This involves fully documenting a project in advance, including the user interface, user stories, and all the features’ variations and outcomes.

The goal of the Waterfall methodology follows the old adage to “measure twice, cut once.” A detailed investigation and full research into a product feature is conducted up front, eliminating (most) project risks. With the bulk of the research done in advance, estimates of the time required for each requirement are more accurate, thus providing a more predictable release date.



RAD


“Rapid-development language” is a general term that refers to any programming language that offers speedier implementation than do traditional third-generation languages such as C/C++, Pascal, or Fortran. Rapid-Development Languages (RDLs) produce their savings by reducing the amount of construction needed to build a product. Although the savings are realized during construction, the ability to shorten the construction cycle has projectwide implications: shorter construction cycles make incremental lifecycles such as Evolutionary Prototyping practical. Because RDLs often lack first-rate performance, constrain flexibility, and are limited to specific kinds of problems, they are usually better suited to the development of in-house business software and limited-distribution custom software than systems software.





RAD (rapid application development) proposes that products can be developed faster and of higher quality by:

  • Using workshops or focus groups to gather requirements.
  • Prototyping and user testing of designs.
  • Re-using software components.
  • Following a schedule that defers design improvements to the next product version.
  • Keeping review meetings and other team communication informal.

There are commercial products that include requirements gathering tools, prototyping tools, software development environments such as those for the Java platform, groupware for communication among development members, and testing tools. RAD usually embraces object-oriented programming methodology, which inherently fosters software re-use. The most popular object-oriented programming languages, C++ and Java, are offered in visual programming packages often described as providing rapid application development.


Spiral


Spiral Model is very widely used in the software industry as it is in synch with the natural development process of any product i.e. learning with maturity and also involves minimum risk for the customer as well as the development firms. Following are the typical uses of Spiral model:


  • When costs there is a budget constraint and risk evaluation is important.
  • For medium to high-risk projects.
  • Long-term project commitment because of potential changes to economic priorities as the requirements change with time.
  • Customer is not sure of their requirements which is usually the case.
  • Requirements are complex and need evaluation to get clarity.
  • New product line which should be released in phases to get enough customer feedback.
  • Significant changes are expected in the product during the development cycle.

    • Spiral Model Pros and Cons


      The advantage of spiral lifecycle model is that it allows for elements of the product to be added in when they become available or known. This assures that there is no conflict with previous requirements and design.
      This method is consistent with approaches that have multiple software builds and releases and allows for making an orderly transition to a maintenance activity. Another positive aspect is that the spiral model forces early user involvement in the system development effort.
      On the other side, it takes very strict management to complete such products and there is a risk of running the spiral in indefinite loop. So the discipline of change and the extent of taking change requests is very important to develop and deploy the product successfully.




      Prototyping


      The Software Prototyping refers to building software application prototypes which display the functionality of the product under development but may not actually hold the exact logic of the original software.
      Software prototyping is becoming very popular as a software development model, as it enables to understand customer requirements at an early stage of development. It helps get valuable feedback from the customer and helps software designers and developers understand about what exactly is expected from the product under development.


      What is Software Prototyping?


      • Prototype is a working model of software with some limited functionality.
      • The prototype does not always hold the exact logic used in the actual software application and is an extra effort to be considered under effort estimation.
      • Prototyping is used to allow the users evaluate developer proposals and try them out before implementation.
      • It also helps understand the requirements which are user specific and may not have been considered by the developer during product design.

      Following is the stepwise approach to design a software prototype:


      Basic Requirement Identification:This step involves understanding the very basics product requirements especially in terms of user interface. The more intricate details of the internal design and external aspects like performance and security can be ignored at this stage.

      Developing the initial Prototype:The initial Prototype is developed in this stage, where the very basic requirements are showcased and user interfaces are provided. These features may not exactly work in the same manner internally in the actual software developed and the workarounds are used to give the same look and feel to the customer in the prototype developed.

      Review of the Prototype:The prototype developed is then presented to the customer and the other important stakeholders in the project. The feedback is collected in an organized manner and used for further enhancements in the product under development.

      Revise and enhance the Prototype:The feedback and the review comments are discussed during this stage and some negotiations happen with the customer based on factors like , time and budget constraints and technical feasibility of actual implementation. The changes accepted are again incorporated in the new Prototype developed and the cycle repeats until customer expectations are met.


      Prototypes can have horizontal or vertical dimensions. Horizontal prototype displays the user interface for the product and gives a broader view of the entire system, without concentrating on internal functions. A vertical prototype on the other side is a detailed elaboration of a specific function or a sub system in the product.
      The purpose of both horizontal and vertical prototype is different. Horizontal prototypes are used to get more information on the user interface level and the business requirements. It can even be presented in the sales demos to get business in the market. Vertical prototypes are technical in nature and are used to get details of the exact functioning of the sub systems. For example, database requirements, interaction and data processing loads in a given sub system.




      Incremental


      Under sdlc Incremental Model, software requirements are initially broken down into multiple standalone modules. These modules are drafted according to the level of priority they have under the software project. Here every module is a standalone function and has to be developed according to the implementation and progression of the project. Although they can be inter related but they sure are able to exists without having the need of other modules and functionality. Incremental Model is mostly followed by large projects which requires implementing individual functions and adding standalone models in the long run.