Software has become an essential part of individuals life both at professional and personal end. The development of software has become a chaotic business and is normally cited as the "code and fix". In the original days the software programs were written without a lot of plan, design and without long term site. This however was fine for the tiny systems. With all the improvement of technology several changes were made and it became difficult to include these changes and it was hard to fix the bugs. This was the result of improper planning. This has led the origins to another choice, Strategy. This emphasized on the disciplined procedure for software development to help make the whole software development process soft and predictable.
Traditional methods were heavily dependent on documents, design, work plan and framework making it the best way to call it the heavy method. However, this felt increasingly long and annoying for few developers who were looking for quick change. It has resulted in consultants preparing methodologies independently. These procedures are known as agile methods.
Agile methodology is getting extensive popularity on the market. This is a mix of accepted and questionable practices. It's the features of the projects such as opportunity, requirement, source and size that determine the appropriate methodology that needs to be used. Thought doing professionals still emphasise on the value and utilization of heavy methods, the empirical studies are emphasizing on the Agile methods.
Heavyweight methodologies are the traditional way of software development. They are based on step-by-step evolution procedure. Several steps in this process include, defining need, solution formation, tests and development. In this process additionally it is mandate to get ready a document that has a set of necessity at the start of the project.
Waterfall strategy: This stresses on structured methodology. Each level in this technique has a set of actions. These activities much be fulfilled before progressing to another stage. Each period is named in another way. The first period determines what the system will be, the second phase determines how the system will be developed. It is in the third stage that the actual coding and designing is started out. The developed system is examined in the fourth stage. In the fifth and last stage appropriate training and records are provided. In terms of engineering, the term waterfall is utilized to denote a succeeding or sequential development.
Waterfall Model Life Cycle
Each activity comprising modelling is split into workflows in the UP process. This process takes place in an recurring and incremental manner. In this method the complete process is split into four phases. The below diagram depicts the phases of the process:
Inception - At the end of this process the feasibility of the job is determined. The opportunity of the look is set and a company plan is well prepared.
Elaboration - On this phase, a basic design is made and a plan of structure or construction is made. A risk analysis is also done at this stage. The major dangers determined should also be dealt with.
Construction - Inside the construction phase the system of beta-version is ready. A well developed system good enough for the primary test also needs to be accessible in this level.
Transition - This is the final stage. Within this stage the system is commenced to the stakeholders and customers. The process is considered complete if the stakeholders agree that the objectives stated in the inception period are found.
As part of UP there are approximately 50 work items that should be completed. This rigid methodology and heavy documents add a lot of the difficulty to the UP. Also, the tasks in this technique are predefined which makes it less flexible.
This is another heavy model which merges both design and prototype stages trying to incorporate the benefits associated with top-down and bottom-up benefits. The four stages in the development model are as follows:
Objective setting- In such a phase objectives of the job phase are recognized.
Risk evaluation and limits - Within this phase key risks are determined and analysed. Information about reducing these risks is also collected in this stage.
Development and validation - A suitable model is chosen for the next phase.
Planning - The project is reviewed and ideas for the next circular of spiral are created in this stage.
Heavyweight methodology is known for a long period. This is an extremely disciplined methodology in the program development. Few characteristics of heavyweight methodologies are as follows:
Predictive way: This technique designs most part of its software development for a bit longer. An excellent emphasis is given to drawing concentrating on the needs and measure to answer these needs. Drawings determine how to build the machine and act as the basis for the engineering process. This also predicts time stand and cover building or constructing the program.
Inclusive Documents: Traditional software development considers certain requirements documentation as a key element of documentation. It collects all the customer and stake holder requirements before writing code.
Process orientation: The goal of this technique is to allocate or specify an activity of work that suits the main one using it. An activity may contain few functions just a supervisor or a tester can perform. For every process in this method there's a procedure.
Agile process specializes in adding lightness to its procedures leading to high quality of software and customer satisfaction. Several agile models are as follows
Extreme Development (XP): This has evaluated out of problems elevated from traditional systems. This process is known for short cycles of development, incremental planning and continuous feedback, communication resulting in evolutionary building. This method's life routine is split into 6 stages i. e. Exploration, Planning, Iterations to release, Production, Maintenance and Fatality.
During the Exploration level, your client creates story planks about his needs. That is followed by the planning phase in which the story boards are prioritised and a first release timetable is prepared. Within the Iteration to Release stage it's the responsibility of development team to produce the whole system by consistently tests and integrating the code. In the Creation Phase additional trials and performance assessments are done. Developments and suggestions recognized in this level are recorded for later execution. Based on this updated releases are created in Maintenance Phase. The final level is the Death Phase is come to when customer has no more stories to be carried out and the final documentation is ready.
Scrum: Scrum is a repetitive and incremental procedure for product development. Scrum's main concentration is about how participants should work to be able to generate overall flexibility in a continually varying environment. By the end of every iteration it makes a set of potential features. In this technique it isn't compulsory to utilize any specific software development methods. Key practices in this method are : Product Backlog, Sprints, Sprint Planning, getting together with, Sprint Backlog and Daily Scrum.
Dynamic System Development method: This is a combination, and expansion for rapid application development and iterative development procedures. The basic notion behind this method is to give more importance to time and resources prior to the functionality of a system. In this technique a higher emphasis is given to quality. This method has five stages :
Feasibility Research: A choice is manufactured about use of DSDM. This decision is based on project type, firm requirement and people. This level has two benefits, 1) feasibility article ii) A prototype plan
Business Review: A small business study to understand the business facet of the project. This forms the base for prototype.
Functional Model Iteration: This phase includes research, coding and prototypes. The productivity of this level is a prototype code and evaluation models.
Design and build iteration: Main system is made in this level. The prototypes are reviewed and developments are made based on consumer comments.
Implementation: This is the final stage where in fact the project is paid to an individual. Appropriate training is also provided.
People focused: All the stakeholders. i. e. customers, creators, users and end users are extremely important in this technique.
Adaptive: This methodology is recommended by those who find themselves open to change and are adaptable.
Balancing Overall flexibility and Planning: Though planning is important, a trial and error method is used in this process as it is hard to anticipate the right things in the initial level of software development.
Simplified process and small organizations: A simple process of concentrating on the present as opposed to the future is the motto of Agile process. It also maintains small clubs and any communication is provided to the whole team.
Traditional heavy methodology for software development is prevailing efficiently for years now. However, it offers several cons such as inflexibility and about time eating etc. Taking these disadvantages in to bank account a new system originated which is Agile. Both methodologies i. e. (agile and heavy weight) have their benefits and drawbacks. People usually use one of the methods predicated on the feasibility. A Summary of difference in agile and heavyweight is shown in the following table.
There are important factors influencing your choice and selection technique, which is well suited for different conditions. These factors can be divided into how big is the task, people and risk
One of the major restrictions in this process is size of the task. Quite elements in this technique are budget, span of time of the task and team group. A huge project needs huge team and huge budget. This in turn requires better co-ordination and better communication. Heavy technique provides this by a thorough planning, design and paperwork. However, this isn't possible in case of Agile process. According to Alistair "A light process needs few people in unlike the heavy method where more folks are needed".
A major restriction of agile methods is the size of the project. Main components of the same are budget, duration of assignments and organization of the project team. The bigger unit or a more substantial budget, you will need the larger project. Thus, takes a compilation of more needs, requirements of more folks and better coordination. Heavyweight support this strategy by providing planning, documentation and operations for better communication and coordination in large organizations. "Fewer people are needed if the methodology used is lighter. However, more folks will be needed if the heavier methodology" (Alistair Cockburn, 2003). The larger group also offers its impact on communication in the design and performance. The technique is a matter of coordination and management of human being communication. Therefore that the level of methodology must be increased if the volumes of folks increase. This makes it even more complicated to work with agile methods with large teams. However, Ken Schwaber (one of the builders of SCRUM) argues that large communities can be divided into small teams using the measurements of the scrums.
Project length is another factor in the choice of strategy. Heavyweight methodology requires a lot of extra time for outcome such as paperwork, design paperwork, writing, evaluation etc. Therefore, it could be figured when time is short agile development methodologies would be your best option.
The Agile technique gives quite definitely importance to stakeholders i. e. it specializes in peoples factor. This strategy makes certain that experienced people and skilled people are part of the process. Experts who are part of the team provide ongoing feedback about the consequences that the utilization may face in selecting the project. Within this process the customer also gets the right to check progress and change the route of development at any level or iteration. This is one of the main features that make the agile process more attractive than the heavy process.
Organizational culture is another essential aspect while choosing the technique. If any corporation is not available to change and it is inflexible, An agile process can't be used there.
An important risk element in the software development is how it responds to change. Agile methods can be utilized in case of applications that needs to be built quickly and do not have any quality hurdles. In case the project is crucial and requires several quality layers then the traditional system is suitable. Improper definition can lead to several defects. Agile methodologies assist in developing short-term projects and present importance to customer reviews.
I would like to end it by declaring that heavy technique contains severe methods of complete planning, design documentation. . Heavy thoughts that accompany them will be taken over by the agile motion not in the distant future. The necessity for Heavyweight techniques still prevails in large, long-lived assignments that contain specific security, consistency and security requirements. However, business needs to reply quickly to the surroundings in innovative, cost-effective and effective manner is increasing the need to use agile ways of software development.