The Waterfall Model and Formal Methodology

Waterfall - the traditional waterfall life cycle method is probably the oldest known ... Iterative Development – in this model the project is fragmented into smaller ... prototype, refine prototype until acceptable, complete and release final version.
45KB taille 91 téléchargements 255 vues
Waterfall - the traditional waterfall life cycle method is probably the oldest known method for developing software systems. It was developed in the early 1970s and provided a sense of order to the process. Each phase contains a list of activities that must be performed before the next phase begins. An advantage is that each phase is completely documented, which allows for easier updates and modifications. A disadvantage is that it does not always scale well for large and complex projects, and it inhibits the team from pursuing concurrent phases or activities. Usually, the method is not good for projects that must be developed in a quick turn-around time periods (i.e., less than six months). Iterative Development – in this model the project is fragmented into smaller components and each component is a regular waterfall model. This model allows for successive refinements of requirements, design, and coding. The danger in allowing refinements during the process is that a change control mechanism must be implemented. Also, the scope of the project may be exceeded if clients change requirements after each release.

Joint Analysis Development (JAD) – it was originally invented to enhance the development of large mainframe systems, however JAD facilitation techniques have now become an integral part of Rapid Application Development (RAD), web development, and other methods. It is a management process that helps developers work effectively with users to develop an application that works. Its success is based on having key players communicate at critical phases of the project. The focus is on having the people who actually perform the job (those who have the best understanding of the job) work together with those who have the best understanding of the technologies available to design a solution. JAD facilitation techniques bring together a team of users, expert systems developers, and technical experts throughout the development life cycle. Prototyping – the prototyping method was formally introduced in the early 1980s to combat the weaknesses of the waterfall model. The objective is to build a simplified version (prototype) of the application, release it for review, and use the feedback from the users to build a second, better version. This is repeated until the users (client) is satisfied with the product. It is a four-step process: initial concept, design and implement initial prototype, refine prototype until acceptable, complete and release final version. List, TCL, and Smalltalk are often used for prototyping.

Rapid Application Development (RAD) – RAD is a form of rapid prototyping that requires strict time limits on each phase and relies on tools that enable quick development. This may be a disadvantage if decisions are made so rapidly that it leads to poor design. Modified Prototype Model (MPM) – it is a form of prototyping that is ideal for web application development. It allows for the basic functionality of a desired system or component to be formally deployed in a quick time frame. The maintenance phase is set to begin after the deployment. The goal is to have the process be flexible enough so that the application is not based on the state of the organization at any given time. As the organization grows and the environment changes, the application changes with it rather than being frozen in time. Exploratory Model – a set of requirements is built with what is currently available. Assumptions are made as to how the system might work and further insights and suggestions are combined to create a usable system. Spiral Method – the spiral model is a combination of both the Waterfall and Prototyping methods. Similar to prototyping, an initial version of the application is developed. However, the development of each version is carefully designed using the Waterfall model. A distinguishing feature of the spiral model is that in each phase a risk assessment review is added. Estimated costs to complete and schedules are revised each time the risk assessment is performed. Based on the results of the risk assessment a decision is made to continue or cancel the project. Reuse Model – an application is built from existing components. This model is best suited for projects that can use object-oriented development because objects can be exported, reused, or modified. Cleanroom – developed in the 1990s as an engineering process for the development of high-quality software. It is named after the process of cleaning electronic wafers in a wafer fabrication plant. Instead of cleaning the crud from the wafer after it has been made, the objective is to prevent the crud from getting into the fabrication environment. In software application development, it is a method of controlling defects (bugs) in the software. The goal is to write code correctly the first time, rather than trying to find the problems once they are there. Essentially, cleanroom software development focuses on “defect prevention” rather then “defect removal.” Cleanroom software engineering produces applications that are correct by mathematically sound design and is certified by statistically valid testing. Reduced development time is achieved from incremental development strategy and the avoidance of reworking the code. To achieve this, more time is spent in the design phase, however, the time spent in other phases, such as testing, is reduced (i.e., quality is achieved through design and not testing). Since testing often consumes the majority of a project timeline, the time saved during the testing phase can result in substantial savings. Computer Aided Software Engineering (CASE) – it is the technique of using computers to help with the systematic analysis, design, development, implementation, and

maintenance of software. It was designed in the 1970’s, but has evolved to include visual programming tools and object-oriented programming. It is most often used on large, complex projects that involve multiple software components and many people. It provides a mechanism for planners, designers, code writers, testers, and managers to share a common view of where a software project is at each phase of the life cycle process. By having an organized approach, code and design can be reused, which can reduce costs and improve quality. The CASE approach requires building and maintaining software tools and training for the developers who will use them. Component-Based Development – it is the process of using components that are standardized building blocks that can be used to assemble, rather than develop an application. The components are encapsulated sets of standardized data and standardized methods of processing data that together offer economic and scheduling benefits to the development process. Structured Programming Development – it is a method that programmers use to write programs that allows a considerable influence on the quality of the finished products in terms of coherence, comprehensibility, freedom from faults, and security. It is one of the most widely known programming development models. The methodology promotes discipline, allows introspection, and provides controlled flexibility. It requires that processes are defined, development is modular, and each phase is subject to reviews and approvals. It also allows for security to be added in a formalized, structured approach. Extreme programming – a discipline of software development that follows a specific structure that is designed to simplify and expedite the process of developing new software. Kent Beck developed Extreme Programming to be used with small teams of developers who need to develop software quickly in an environment of rapidly-changing requirements. XP teams design software for specific functionalities without adding any functionalities that are not specifically requested that may slow down the process, keeping the development course simple through systematic and regular testing and design improvements.