Wednesday 22 July 2015

Rapid Application Development (RAD)

Rapid Application Development (RAD) 


As the name suggests Rapid Application Development (RAD) model is an incremental software process model that focuses on short development cycle time. This model is a “high-speed” model which adapts many steps from waterfall model in which rapid development is achieved by using component based construction approach.
In case if project requirements are well understood and project scope is well known then RAD process enables a development team to create a fully functional system i.e. software product within a very short time period may be in days.
RAD model is like other process models maps into the common and major framework activities.

Phases of RAD Model

Communication is an activity which works to understand the business problem and the information characteristics that should be accommodate by the software.
In RAD model Planning is required because numerous software teams works in parallel on different system functions.
Modelling includes 3 major phases 
1.      Business modeling
2.      Data modeling
3.      Process modeling
Construction focuses mainly on the use of existing software components and the application of automatic code generation.
Deployment establishes a basis for subsequent iterations if necessary.
A business application which can be modularize in a way that allows each major function to be completed in less than three months is useful for RAD. Each major function can be addressed individually by a separate RAD and then integrated to form a whole application.
 Diagram of RAD Model 



Advantages of RAD Model

1.      Flexible and adaptable to changes.
2.      Prototyping applications gives users a tangible description from which to judge whether critical system requirements are being met by the system. Report output can be compared with existing reports. Data entry forms can be reviewed for completeness of all fields, navigation, data access (drop down lists, check-boxes, radio buttons, etc.).
3.      RAD generally incorporates short development cycles – users see the RAD product quickly.
4.      RAD involves user participation thereby increasing chances of early user community acceptance.
5.      RAD realizes an overall reduction in project risk.
6.      Pareto’s 80 – 20 Rule usually results in reducing the costs to create a custom system.

Disadvantages of RAD Model

1.      Unknown cost of product. As mentioned above, this problem can be alleviated by the customer agreeing to a limited amount of rework in the RAD process.
2.      It may be difficult for many important users to commit the time required for success of the RAD process.

Drawbacks of RAD Model

1.      RAD requires sufficient human resources to create the right number of RAD teams
2.      If developers and customers are not committed to the rapidrapid-fire activities necessary to complete the system in a much abbreviated time frame, RAD projects will fail.
3.      For RAD system should be properly modularize otherwise it creates lots of problems to the RAD model.
4.      Rad approach does not work properly if high performance is a major issue, and performance is to be achieved through tuning the interface to system components.
5.      When technical risks are high RAD may not be a suitable option. This may be possible while an application heavy uses a new technology.

When to use RAD model:

§  RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time.
§  It should be used if there’s high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools.

§  RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short span of time (2-3 months).

Incremental Model

What is Incremental model- advantages, disadvantages and when to use it?


In incremental model the whole requirement is divided into various builds. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle.  Cycles are divided up into smaller, more easily managed modules.  Each module passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first module, so you have working software early on during the software life cycle. Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved.
For example:

In the diagram above when we work incrementally we are adding piece by piece but expect that each piece is fully finished. Thus keep on adding the pieces until it’s complete. As in the image above a person has thought of the application. Then he started building it and in the first iteration the first module of the application or product is totally ready and can be demoed to the customers. Likewise in the second iteration the other module is ready and integrated with the first module. Similarly, in the third iteration the whole product is ready and integrated. Hence, the product got ready step by step.
Diagram of Incremental model:




Advantages of Incremental model:
§  Generates working software quickly and early during the software life cycle.
§  This model is more flexible – less costly to change scope and requirements.
§  It is easier to test and debug during a smaller iteration.
§  In this model customer can respond to each built.
§  Lowers initial delivery cost.
§  Easier to manage risk because risky pieces are identified and handled during it’d iteration.

Disadvantages of Incremental model:
§  Needs good planning and design.
§  Needs a clear and complete definition of the whole system before it can be broken down and built incrementally.
§  Total cost is higher than waterfall.

When to use the Incremental model:
§  This model can be used when the requirements of the complete system are clearly defined and understood.
§  Major requirements must be defined; however, some details can evolve with time.
§  There is a need to get a product to the market early.
§  A new technology is being used
§  Resources with needed skill set are not available

§  There are some high risk features and goals.

Thursday 16 July 2015

V-model

   V-model

V- Model means Verification and Validation model. Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins.  Testing of the product is planned in parallel with a corresponding phase of development. 
Diagram of V-model:
The various phases of the V-model are as follows:

Requirements like BRS and SRS begin the life cycle model just like the waterfall model. But, in this model before development is started, a system test plan is created.  The test plan focuses on meeting the functionality specified in the requirements gathering.
The high-level design (HLD) phase focuses on system architecture and design. It provide overview of solution, platform, system, product and service/process. An integration plan is created in this phase as well in order to test the pieces of the software systems ability to work together.
The low-level design (LLD) phase is where the actual software components are designed. It defines the actual logic for each and every component of the system. Class diagram with all the methods and relation between classes comes under LLD. Component tests are created in this phase as well.
The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.
Coding: This is at the bottom of the V-Shape model. Module design is converted into code by developers.
Advantages of V-model:
§  Simple and easy to use.
§  Testing activities like planning, test designing happens well before coding. This saves a lot of time. Hence higher chance of success over the waterfall model.
§  Proactive defect tracking – that is defects are found at early stage.
§  Avoids the downward flow of the defects.
§  Works well for small projects where requirements are easily understood.
Disadvantages of V-model:
§  Very rigid and least flexible.
§  Software is developed during the implementation phase, so no early prototypes of the software are produced.
§  If any changes happen in midway, then the test documents along with requirement documents has to be updated.
When to use the V-model:
§  The V-shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed.
§  The V-Shaped model should be chosen when ample technical resources are available with needed technical expertise.
High confidence of customer is required for choosing the V-Shaped model approach. Since, no prototypes are produced, there is a very high risk involved in meeting customer expectations.


Waterfall Model

Waterfall Model

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.
Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow; hence it is also referred to as a linear-sequential life cycle model. This means that any phase in the development process begins only if the previous phase is complete. In waterfall model phases do not overlap.

Waterfall Model design

Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. Following is a diagrammatic representation of different phases of waterfall model.


The sequential phases in Waterfall model are:

·        Requirement Gathering and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
·        System Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
·        Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
·        Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
·        Deployment of system: Once the functional and nonfunctional testing is done, the product is deployed in the customer environment or released into the market.
·        Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model phases do not overlap.

Waterfall Model Application

Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are:
·        Requirements are very well documented, clear and fixed.
·        Product definition is stable.
·        Technology is understood and is not dynamic.
·        There are no ambiguous requirements.
·        Ample resources with required expertise are available to support the product.
·        The project is short.

Waterfall Model Pros & Cons

Advantage

 

The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one.
Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order.

Disadvantage

 

The disadvantage of waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.
The following table lists out the pros and cons of Waterfall model:

Pros
Cons
·        Simple and easy to understand and use
·        Easy to manage due to the rigidity of the model. Each phase has specific deliverable and a review process.
·        Phases are processed and completed one at a time.
·        Works well for smaller projects where requirements are very well understood.
·        Clearly defined stages.
·        Well understood milestones.
·        Easy to arrange tasks.
·        Process and results are well documented.
·        No working software is produced until late during the life cycle.
·        High amounts of risk and uncertainty.
·        Not a good model for complex and object-oriented projects.
·        Poor model for long and ongoing projects.
·        Not suitable for the projects where requirements are at a moderate to high risk of changing. So risk and uncertainty is high with this process model.
·        It is difficult to measure progress within stages.
·        Cannot accommodate changing requirements.
·        No working software is produced until late in the life cycle.
·        Adjusting scope during the life cycle can end a project.
·        Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or business bottleneck or challenges early.

Software Design: Transform Analysis