Software Development Methodologies [Infographics]Sunny Dhanoe
Software Development Methodologies also called as the System Development Methodologies or in short a Software Process is a set of software development activities that are divided into phases for the purpose of planning and management of software and application. The project team develops deliverable in a structured way to develop and maintain an application.
SOFTWARE DEVELOPMENT METHODOLOGIES
Software Development Methodology is also called as System Development Methodology or in short a Software Process. It is a set of software development activities that are divided into phases for the purpose of planning and management of software and application. The project team develops deliverables in a structured way to develop and maintain an application.
Some of the common methodologies include:
Agile Methodology is based on continuous iteration each having its own design, development and testing cycle. It helps you to deliver the solution faster with less documentation. It is performed on daily basis.
Project owner defines a set of requirements. Accordingly the project is planned and breakdown into various tasks. It is developed and tested on regular basis. At the end of the day the scrum meeting is carried out. The client (Project owner) also have right to makes changes in the module. Each module is updated every day. Changing requirements are welcomed even in late development.
Crystal Methods Methodology
Crystal Methods Methodology focuses on people rather than process. This approach is developed by Alistair Cockburn. According to him people, skills, talents and communication is important. Basically it is designed for small project comprising up to 2-8 developers. This small team interact with each other and form its own logics and finally come up with end product. They can use their own coding styles. The main motive is to deliver the end product.
Dynamic System Development Model Methodology (DSDM)
Dynamic System Development was developed in mid 1990’s. It is an incremental and iterative approach which emphasizes user involvement. Its main focus is on solution delivery rather than code creation or development.
- Deliver work on time.
- Collaboration between stakeholders.
- Focus on the requirements.
- No compromise in quality.
- Iterative and incremental approach for better output.
- Communicate continuously and clearly.
Extreme Programming (XP)
Extreme Programming is used to develop the software within unstable environment. In XP,
elimination of defects is done in early stage using the whole team. Its main focus is to deliver the product quickly.
XP Core Practices
The core practices of Extreme Programming, as described in the first edition of “Extreme Programming Explained” can be grouped into four areas (12 practices) as follows:
- Fine scale feedback
Test driven development
- Continuous process rather than batch
- Shared understanding
Collective code ownership
Coding standards or coding conventions
- Programmer welfare
Sustainable pace (i.e. forty hour week)
In the second edition of “Extreme Programming Explained” a set of corollary practices are listed in addition to the primary practices.
The core practices are derived from generally accepted best practices, and are taken to extremes:
- Interaction between developers and customers is good. Therefore, an XP team is supposed to have a customer on site, who specifies and prioritizes work for the team, and who can answer questions as soon as they arise. (In practice, this role is sometimes fulfilled by a customer proxy.)
- If learning is good, take it to extremes. Reduce the length of development and feedback cycles. Test early.
- Simple code is more likely to work. Therefore, extreme programmers only write code to meet actual needs at the present time in a project, and go to some lengths to reduce complexity and duplication in their code.
- If simple code is good, re-write code when it becomes complex.
- Code reviews are good. Therefore XP programmers work in pairs, sharing one screen and keyboard (which also improves communication) so that all code is reviewed as it is written.
- Testing code is good. Therefore, in XP, tests are written before the code is written. The code is considered complete when it passes the tests (but then it needs refactoring to remove complexity). The system is periodically, or immediately tested using all pre-existing automated tests to assure that it works. See test-driven development.
Waterfall methodology also known as traditional methodology depicts a lifecycle of software engineering process. It is a sequential non-iterative design process which consists of various phases namely:
- Requirement Analysis
The project moves step by step. You cannot move to next phase unless you complete previous phase. There is no turning back. Once the application goes in testing stage you cannot go back and change something when a new requirement arises. Their exists high amount of risks. Therefore it is avoided. Joint Application Development, Rapid Application Development and Spiral Model are alternatives to Waterfall Methodology.
Software Development Life cycle
Software Development Life Cycle, SDLC for short, is a well-defined, structured sequence of stages in software engineering to develop the intended software product.
Software Development Life cycle also called as Application Development life cycle comprises of various phases viz.
It describes the phases of software cycle and the order in which those phases are executed. In general, an SDLC methodology follows these steps:
- If there is an existing system, its deficiencies are identified. This is accomplished by interviewing users and consulting with support personnel.
- The new system requirements are defined including addressing any deficiencies in the existing system with specific proposals for improvement.
- The proposed system is designed. Plans are created detailing the hardware, operating systems, programming, and security issues.
- The new system is developed. The new components and programs must be obtained and installed. Users of the system must be trained in its use, and all aspects of performance must be tested. If necessary, adjustments must be made at this stage.
- The system is put into use. This can be done in various ways. The new system can phased in, according to application or location, and the old system gradually replaced. In some cases, it may be more cost-effective to shut down the old system and implement the new system all at once.
- Once the new system is up and running for a while, it should be exhaustively evaluated. Maintenance must be kept up rigorously at all times. Users of the system should be kept up-to-date concerning the latest modifications and procedures.
Spiral model is a combination of both, iterative model and one of the SDLC model. Spiral m is similar to incremental model but more focused on risk analysis. It has four phases: Planning, Risk Analysis, Engineering and Evaluation.
The software project passes through these phases repeatedly in iterations also called as spirals. Requirements are gathered in the planning phase. The process is undertaken to identify risks and other solutions in risk analysis phase. At the end of this phase a prototype is produced.
Software is produced at engineering phase and testing is carried out at its end. The evaluation phase allows the client to evaluate the output of the project to date before the project continues to the next spiral.
Scrum is an agile method for project management developed by Ken Schwaber. Its goal is to dramatically improve productivity in teams previously paralyzed by heavier, process-laden methodologies. Scrum is an iterative and incremental agile software development framework for managing product development.
A product owner creates a prioritized list called a product backlog. During sprint planning, the team pulls a small chunk from the top of that list, a sprint backlog, and decides how to implement chunks. The team has a certain amount of time. A sprint (usually two to four weeks) has to complete its work, but it meets each day to assess its progress i.e. daily Scrum. Along the way, the Scrum Master keeps the team focused on its goal. At the end of the sprint, the work should be shippable and ready to hand to a customer, put on a store shelf, or show to a stakeholder. The sprint ends with a sprint review. As the next sprint begins, the team chooses another chunk of the product backlog and begins working again.
Feature Driven Development
Feature Driven Development was invented in 1997 by Jeff De Luca.
Feature Driven Development is a client centric, architecture centric, and pragmatic software process. It aims to deliver tangible and working results.
There are five main activities in FDD that are performed in different steps. The first step is to develop an overall model. In this step, initial results contain high-level object model and notes. At the beginning, your goal is to identify and understand the fundamentals of the domain that your system is addressing. The next step is to build a Features list. Features are grouped into related sets and subject areas. These first two steps map to the initial modelling. The third step is Plan by Feature, where the developer set a project plan and end result is a developed. The fourth and fifth steps are Design By Feature and Build By Feature where the majority of the effort on an FDD project, about 75%, is comprised of. These two activities mainly include tasks such as detailed modelling, programming, testing, and packaging of the system.
Joint Application Development
Chuck Morris and Tony Crawford, the two employees of IBM, developed the JAD methodology in the 1970s. JAD is a requirements-definition and user-interface design methodology in which users, developers and executives attend off-site meetings to work out a system’s details. There is more involvement of client in development and designing the application. It involves continuous interaction with the users and designers of the system. JAD is similar to traditional design and analysis phases of SDLC where it delivers same outcome that of traditional methodology. The developer approach client by conducting one-on-one interviews. Unlike waterfall method JAD IS a modern method for gathering requirements involving one or more workshops which bring all of the stakeholders in one location. This method reduces the time required to accomplish requirements analysis. JAD workshops can take anywhere from one day to a couple of weeks depending on the size of the project.
Rapid Application Development
Rapid Application Development (RAD) is a variation on JAD to create applications quickly through strategies that include some methodologies and reusing the components. RAD is a incremental model which contains five different phases.
- Business modelling: Business analysis is performed to find the important information for business and how it is obtained also how and when the information processed and the factors driving successful flow data.
- Data modelling: Information is collected from business modelling. It is analyzed and reviewed. This phase is used to define data objects for the business.
- Process modelling: The data object sets defined in the Data Modelling phase are converted to establish the business information flow. This is needed to achieve specific business objectives. The process model for any changes or enhancements to data objects sets are defined.
- Application Generation: To convert process models into code and the actual system, automated tools are used. The actual system is built and coding is done by using automation tools which is used to convert process and data models into actual prototypes.
- Testing and turnover: New components and all the interfaces are tested. The prototypes are independently tested and therefore the testing time is reduced.
Lean Development Methodology
The main idea of lean is to eliminate or reduce non value added activities termed wastes and thus increase customer value. Lean Development focuses on the creation of change-tolerant software. Lean software methodology is an agile practice based on lean manufacturing. It focuses more on project management aspects of software development.
As mentioned in http://www.itinfo.am there are 12 principles of Lean Development:
- Satisfying the customer is the highest priority.
- Always provide the best value for the money.
- Success depends on active customer participation.
- Every LD project is a team effort.
- Everything is changeable.
- Domain, not point, solutions.
- Complete, don’t construct.
- An 80 percent solution today instead of 100 percent solution tomorrow.
- Minimalism is essential.
- Needs determine technology.
- Product growth is feature growth, not size growth.
- Never push LD beyond its limits.
Rational Unified Process
RUP is a software development process from Rational, a division of IBM. It is an iterative software development process.
Following are the phases of Rational Unified process
- Inception: Identify the initial scope of the process, a potential architecture for system and obtain initial project funding and stake holder acceptance.
- Elaboration: Prove the architecture of the system.
- Construction: Build the working application on incremental and regular basis which meets the needs of stakeholder.
- Transition: Validate and deploy the system into product environment.