Sunday, July 21, 2019

The History Of The Heavyweight Methodologies

The History Of The Heavyweight Methodologies INTRODUCTION Software has become an essential part of human 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 initial days the software programs were written without much of plan, design and without long term site. This however was fine for the small systems. With the advancement of technology several changes were made and it became difficult to incorporate these changes and it was hard to fix the bugs. This was the result of improper planning. This has led the roots to another alternative, Methodology. This emphasized on the disciplined process of software development to make the whole software development process smooth and predictable. Traditional methods were heavily dependent on documentation, design, work plan and structure making it the way to call it the heavy method. However, this seemed increasingly lengthy and frustrating for few developers who were looking for rapid change. This has resulted in consultants preparing methodologies independently. These methods are known as agile methods. Agile methodology is getting extensive popularity in the industry. This is a mix of accepted and controversial practices. It is the features of the projects such as scope, requirement, resource and size that determine the appropriate methodology that should be used. Thought practicing professionals still emphasise on the importance and usage of heavy methods, the empirical studies are emphasizing on the Agile methods. Heavyweight methodologies Heavyweight methodologies are considered the traditional way of software development. These are based on step by step evolution approach. Several steps in this process include, defining requirement, solution formation, testing and development. In this process it is also mandate to prepare a document that has a set of requirement at the beginning of the project. Waterfall approach: This emphasizes on structured approach. Each stage in this process has a set of actions. These activities much be fulfilled before progressing to the next stage. Each phase is named differently. The first phase 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. The developed system is tested in the fourth stage. In the fifth and final stage appropriate training and documentation are provided. In terms of engineering, the term waterfall is used to denote a subsequent or sequential development. Waterfall Model Life Cycle Unified Process (UP) Each activity comprising modelling is divided into workflows in the UP process. This process takes place in an repetitive and incremental manner. In this method the whole process is divided into four phases. The below diagram depicts the stages of this process: Inception At the end of this process the feasibility of the project is determined. The scope of the design is set and a business plan is prepared. Elaboration In 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 risks determined should also be addressed. Construction In the construction phase the system of beta-version is prepared. A well developed system good enough for the preliminary test should also be available in this stage. Transition This is the final stage. In this stage the system is commenced to the stakeholders and end users. The process is considered complete if the stakeholders agree that the objectives mentioned in the inception phase are met. As part of UP there are approximately 50 work items that should be completed. This rigid approach and heavy documentation add a lot of the complexity to the UP. Also, the roles in this process are predefined making it less flexible. Spiral Model This is another heavy model which merges both design and prototype stages trying to combine the benefits of top-down and bottom-up benefits. The four phases in the development model are as follows: Objective setting- In this phase objectives of the project phase are identified. Risk assessment and limitations In this phase key risks are identified and analysed. Information about reducing these risks is also collected in this phase. Development and validation A suitable model is selected for the next phase. Planning The project is reviewed and plans for the next round of spiral are made in this phase. Characteristics of Heavyweight methodologies Heavyweight methodology is known for a long time. This is a very disciplined approach in the software development. Few characteristics of heavyweight methodologies are as follows: Predictive approach: This methodology plans most part of its software development for a longer time. A great emphasis is given to drawing focusing on the needs and measure to answer these needs. Drawings determine how to build the system and act as the basis for the construction process. This also predicts time table and budget for building or constructing the software. Inclusive Documentation: Traditional software development considers the requirements documentation as a key element of documentation. It collects all the customer and stake holder requirements before writing code. Process orientation: The purpose of this method is to allocate or define a process of work that suits the one using it. A process may contain few processes just a manager or a tester can perform. For every task in this method there is a procedure. Agile modelling Agile process concentrates on adding lightness to its processes leading to high quality of software and customer satisfaction. Few of the agile models are as follows Extreme Programming (XP): This has evaluated out of problems raised from traditional systems. This process is known for short cycles of development, incremental planning and continuous feedback, communication leading to evolutionary designing. This methods life cycle is divided into 6 phases i.e. Exploration, Planning, Iterations to release, Production, Maintenance and Death. During the Exploration stage, the client creates story boards about his needs. This is followed by the planning phase in which the story boards are prioritised and a first release schedule is prepared. In the Iteration to Release stage it is the responsibility of development team to create the whole system by continuously testing and integrating the code. In the Production Phase additional testing and performance checks are done. Developments and suggestions detected in this stage are documented for later implementation. Based on this updated releases are made in Maintenance Phase. The final stage is the Death Phase is reached when customer has no more stories to be implemented and the final documentation is prepared. Scrum: Scrum is a repetitive and incremental process of product development. Scrums main focus is on how members should work in order to generate flexibility in a continuously varying environment. At the end of each iteration it makes a set of potential features. In this method it is not compulsory to use any specific software development methods. Key practices in this method are : Product Backlog, Sprints, Sprint Planning, meeting, Sprint Backlog and Daily Scrum. Dynamic System Development method: This is a mixture, and extension for rapid application development and iterative development practices. The basic notion behind this method is to give more importance to time and resources before the functionality of a system. In this method a high emphasis is given to quality. This method has five stages : Feasibility Study: A decision is made about usage of DSDM. This decision is based on project type, organization requirement and people. This stage has two outcomes, 1) feasibility report ii) A prototype plan Business Study: A business study to understand the business aspect of the project. This forms the base for prototype. Functional Model Iteration: This phase includes analysis, coding and prototypes. The output of this stage is a prototype code and analysis models. Design and build iteration: Main system is built in this stage. The prototypes are reviewed and developments are made based on user comments. Implementation: This is the final stage where the project is handed over to the user. Appropriate training is also provided. Characteristics of agile methodologies People oriented: All the stakeholders. i.e. customers, developers, users and end users are very important in this methodology. Adaptive: This methodology is preferred by those who are open to change and are flexible. Balancing Flexibility and Planning: Though planning is important, a trial and error method is followed in this approach as it is hard to predict the right things in the initial stage of software development. Simplified process and small groups: A simple process of concentrating on the present rather than the future is the motto of Agile process. It also maintains small teams and any communication is provided to the whole team. Comparison Traditional heavy methodology for software development is prevailing successfully for a long time now. However, it has several disadvantages such as inflexibility and high time consuming etc. Taking these drawbacks in to account a new system was developed which is Agile. Both the methodologies i.e. (agile and heavy weight) have their advantages and disadvantages. People usually use one of these methods based on the feasibility. A Summary of difference in agile and heavyweight is shown in the following table. There are important factors influencing the decision and selection methodology, which is suitable for different conditions. These factors can be divided into the size of the project, people and risk Project size: One of the major limitations in this process is size of the project. The important elements in this process are budget, time span of the project and team organization. A huge project needs huge team and huge budget. This in turn requires better co-ordination and better communication. Heavy methodology provides this by a thorough planning, design and documentation. However, this is not possible in case of Agile process. According to Alistair A light process needs few people in contrary to the heavy method where more people are required. A major limitation of agile methods is the size of the project. Main elements of the same are budget, duration of projects and organization of the project team. The larger unit or a larger budget, you need the larger project. Thus, requires a compilation of more demands, requirements of more people and better coordination. Heavyweight support this methodology by providing planning, documentation and processes for better communication and coordination in large groups. Fewer people are needed if the methodology used is lighter. However, more people will be needed if the heavier methodology (Alistair Cockburn, 2003). The larger group also has its impact on communication in the design and performance. The methodology is a matter of coordination and management of human communication. This implies that the level of methodology must be increased if the numbers of people increase. This makes it even more difficult to use agile methods with large groups. However, Ken Schwaber (one of the deve lopers of SCRUM) argues that large groups can be broken down into small teams using the dimensions of the scrums. Project duration is another factor in the choice of methodology. Heavyweight methodology needs a lot of extra time for output such as documentation, design documentation, writing, analysis etc. Therefore, it can be concluded that when time is short agile development methodologies would be the best option. People Factor: The Agile methodology gives very much importance to stakeholders i.e. it concentrates on peoples factor. This methodology makes sure that experienced people and skilled people are part of the process. Experts who are part of the team provide continuous feedback about the effects that the use may face in selecting the project. As part of this process the customer also gets a right to check progress and change the direction of development at any stage or iteration. This is one of the main features that make the agile process more attractive than the heavy process. Organizational culture is another important factor while choosing the methodology. If any organization is not open to change and is inflexible, An agile process cant be used there. Risk Factor: An important risk factor in the software development is how it responds to change. Agile methods can be used in case of applications that should be built quickly and dont have any quality hurdles. If the project is critical and requires several quality layers then the traditional system is appropriate. Improper definition may lead to several defects. Agile methodologies help in developing short term projects and give importance to customer reviews. Conclusion I would like to end it by saying that heavy methodology consisted of severe methods of comprehensive planning, design documentation.. Heavy thoughts that accompany them will be taken over by the agile movement not in the distant future. The need for Heavyweight approaches still prevails in large, long-lived projects that have specific security, reliability and security requirements. However, business needs to respond quickly to the environment in innovative, cost-effective and efficient manner is increasing the need to use agile methods of software development.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.