Agile Methods break tasks into small increments with minimal planning, and do not directly involve long-term planning



Download 34.54 Kb.
Date02.02.2017
Size34.54 Kb.
#15310
Two types of Development Processes



RAD Methods (5 Methods)

Agile Methods

  • Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning.

  • Iterations are short time frames that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders.

JAD

  • JAD (Joint Application Development) is a methodology that involves the client or end user in the design and development of an application, through a succession of collaborative workshops called JAD sessions.

picture 1.png

XP

XP is a software engineering methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development (discuss above), it advocates frequent "releases”.

Scrum Development Process

  • SCRUM defines the systems development process as a loose set of activities that combines known, workable tools and techniques with the best that a development team can devise to build systems.

  • SCRUM is an enhancement of the commonly used iterative/incremental object-oriented development cycle

Lean software development (LD)

Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the agile Software development community. Lean technology is a philosophy of making a conscious choice to radically redefine and dynamically optimize strategy, systems, processes and services and add value to clients, employees and shareholders .

LD is a production practice that considers the expenditure of resources for any goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination. This can help in improving the quality of the software solutions/products each time a new software solution/product is built

Advantages of Agile Software Development Process

There are lot of advantages which come along Agile Software Development, following are list of some of them [4].



One huge advantage of Agile Development over all other processes is that it emphasizes on testing as early as possible and as thorough as possible.

Revenue, The iterative nature of agile development means features are delivered incrementally, enabling some benefits to be realized early as the product continues to develop.
Speed-to-market, Research suggests about 80% of all market leaders were first to market. As well as the higher revenue from incremental delivery, agile development philosophy also supports the notion of early and regular releases, and 'perpetual beta.
Quality, A key principle of agile development is that testing is integrated throughout the lifecycle, enabling regular inspection of the working product as it develops. This allows the product owner to make adjustments if necessary and gives the product team early sight of any quality issues.

Visibility, Agile development principles encourage active 'user' involvement throughout the product's development and a very cooperative collaborative approach. This provides excellent visibility for key stakeholders, both of the project's progress and of the product itself, which in turn helps to ensure that expectations are effectively managed.
Risk Management, Small incremental releases made visible to the product owner and product team through its development help to identify any issues early and make it easier to respond to change. The clear visibility in agile development helps to ensure that any necessary decisions can be taken at the earliest possible opportunity, while there's still time to make a material difference to the outcome.
Flexibility / Agility, In traditional development projects, we write a big spec up-front and then tell business owners how expensive it is to change anything, particularly as the project goes on. In fear of scope creep and a never-ending project, we resist changes and put people through a change control committee to keep them to the essential minimum. Agile development principles are different. In agile development, change is accepted. In fact, it's expected. Because the one thing that's certain in life is change. Instead the timescale is fixed and requirements emerge and evolve as the product is developed. Of course for this to work, it's imperative to have an actively involved stakeholder who understands this concept and makes the necessary trade-off decisions, trading existing scope for new.
Cost Control, The above approach of fixed timescales and evolving requirements enables a fixed budget. The scope of the product and its features are variable, rather than the cost.
Business Engagement/Customer Satisfaction, The active involvement of a user representative and/or product owner, the high visibility of the product and progress, and the flexibility to change when change is needed, creates much better business engagement and customer satisfaction. This is an important benefit that can create much more positive and enduring working relationships.
Right Product, Above all other points, the ability for agile development requirements to emerge and evolve, and the ability to embrace change (with the appropriate trade-offs), the team builds the right product. It's all too common in more traditional projects to deliver a "successful" project in IT terms and find that the product is not what was expected, needed or hoped for. In agile development, the emphasis is absolutely on building the right product.
More Enjoyable, Active involvement, cooperation and collaboration make agile development team, a much more enjoyable place for most people. Instead of big specs, we discuss requirements in workshops. Instead of lengthy status reports, we collaborate around a task-board discussing progress. Instead of long project plans and change management committees, we discuss what's right for the product and project and the team is empowered to make decisions. In my experience this makes it a much more rewarding approach for everyone. In turn this helps to create highly motivated, high performance teams that are highly cooperative.

Disadvantages of Agile Software Development Process

There are several advantages and disadvantages for any development process. Here are some of the disadvantages behind Agile software development process [4].



Active user involvement and close collaboration are required throughout the development cycle. This is very engaging, rewarding and ensures delivery of the right product. It's the fundamental principle in agile that ensures expectations are well managed. And since the definition of failure is not meeting expectations, these are critical success factors for any project. However these principles are very demanding on the user representative's time and require a big commitment for the duration of the project.
Requirements emerge and evolve throughout the development. This creates the very meaning of agile - flexibility. Flexibility to change course as needed and to ensure delivery of the right product. There are two big flip sides to this principle though. One is the potential for scope creep, which we all know can create the risk of ever-lasting projects. The other is that there is much less predictability, at the start of the project and during, about what the project is actually going to deliver. This can make it harder to define a business case for the project, and harder to negotiate fixed price projects. Without the maturity of a strong and clear vision, and the discipline of fixing timescales and trading scope, this is potentially very dangerous.
Agile requirements are barely sufficient. This eliminates wasted effort on deliverables that don't last (i.e. aren't part of the finished product), which saves time and therefore money. Requirements are clarified just in time for development and can be documented in much less detail due to the timeliness of conversations. However this can mean less information available to new starters in the team about features and how they should work. It can also create potential misunderstandings if the teamwork and communication aren't at their best, and difficulties for team members (especially testers) that are used to everything being defined up front. The belief in agile is that it's quicker to refractor the product along the way than to try to define everything completely up front, which arguably is impossible. And this risk is managed closely through the incremental approach to development and frequent delivery of product.
Testing is integrated throughout the lifecycle. This helps to ensure quality throughout the project without the need for a lengthy and unpredictable test phase at the end of the project. However it does imply that testers are needed throughout the project and this effectively increases the cost of resources on the project. This does have the effect of reducing some very significant risks that have proven through research to cause many projects to fail. The cost of a long and unpredictable test phase can, in my experience of waterfall, cause huge unexpected costs when a project over-runs. However there is an additional cost to the project to adopt continuous testing throughout.
Frequent delivery of product and the need to sign off each feature as done before moving on to the next makes UAT (user acceptance testing) continuous and therefore potentially quite onerous. The users or product owner needs to be ready and available for prompt testing of the features as they are delivered and throughout the entire duration of the project. This can be quite time-consuming but helps drastically to ensure a quality product that meets user expectations.

Finally, common feedback is that agile development is rather intense for developers. The need to really complete each feature 100% within iteration, and the relentlessness of iterations, can be mentally quite tiring so it's important to find a sustainable pace for the team.




Joint Application Development (JAD)

The client or end user in the design and development of an application, through a succession of collaborative workshops called JAD sessions



Reduced system development time, In JAD, information can be obtained and validated in a shorter time frame by involving all participants (or at least a representative set of participants) who have a stake in the outcome of the session. JAD eliminates process delays and has been shown to reduce application development time between 20% to 50%.

Improved system quality and productivity, much of the system’s quality depends on the requirements gathered. JAD involves users in the development life cycle, lets users define their requirements, thus ensures that the system developed satisfies the actual activities of the business JAD is quoted the best method for collecting requirements from the users, customers, or customer advocates.

Reduced system cost, much of the system development cost is in terms of man-hours of both system developers and business users involved. Reduced development time reduces the labor cost for developers, as well as users. Important process like requirement gathering requires the involvement and commitment of business area experts. The cost of taking them away from their daily operation is very high. JAD can reduce the involvement time of these business experts and hence reduce the cost further. Cost is also reduced by catching errors, misunderstandings and mistakes early in the development phrase. Studies have found that a majority of system errors result from early analysis errors, and the earlier these errors are corrected, the much less they will cost. The JAD sessions let designers and users work together in the very early of the development cycle, defining the scope, requirements of projects, resolving conflicts among different user groups. It put many efforts early in the life cycle in order to improve the quality and increase productivity and to reduce cost.

Enhanced communication and relationship, JAD helps in building good relationships between business end-users and IT personnel.

Cultivate ownership, Easier acceptance (buy-in) and stronger commitment by users. The involvement of business end-users is no longer on advisory or consultation spectrum. It is the participation and contribution in the project development life cycle. The more users contribute to the system, the easier for them to accept it and commit to it.

Reduced function creep, is one of the best ways to reduce function creep, most of which results from poor initial requirements.

Enhanced education for participants and observers, By participating in JAD and be the medium between other users and IT, the business end-users will be kept fully informed about the progress of the system development.

Disadvantages of JAD

JAD is very useful development process, but it also has some negative point like as follows:

It opens up a lot of scope for inter-personal conflict.

More expensive and can be cumbersome.



Not good for large projects.

EXTREME PROGRAMMING (XP)

  • XP is a software engineering methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development (discuss above), it advocates frequent "releases”.

  • Other elements of Extreme Programming include: programming in pairs.

  • Extreme Programming empowers your developers to confidently respond to changing customer requirements, even late in the life cycle.

  • Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative team.

  • XP is designed for use with small teams who need to develop software quickly in an environment of rapidly-changing requirements. Extreme Programming, is a lightweight discipline of software development based on principles of simplicity, communication, feedback, and courage.

Advantages of XP

  • Customer focus increase the chance that the software produced will actually meet the needs of the users

  • Continuous testing and integration helps to increase the quality of work.

  • XP is attractive to programmers who normally are unwilling to adopt a software process.

  • For developers, XP allows you to focus on coding and avoid needless paperwork and meetings.

  • For developers, XP allows you to focus on coding and avoid needless paperwork and meetings.

Disadvantages XP

  • XP is geared toward a single project, developed and maintained by a single team.

  • XP will not work in an environment where programmers are separated geographically.

  • XP will not work in an environment where a customer or manager insists on a complete specification or design before they begin programming.

  • XP has not been proven to work with systems that have scalability issues.

Scrum Development Process

  • Scrum is an iterative incremental framework for managing complex work .

  • SCRUM assumes that the systems development process is an unpredictable, complicated process that can only be roughly described as an overall progression.

  • SCRUM defines the systems development process as a loose set of activities that combines known, workable tools and techniques with the best that a development team can devise to build systems.

  • SCRUM is an enhancement of the commonly used iterative/incremental object-oriented development cycle



picture 1.png

Advantages Of Scrum

  • The SCRUM methodology is designed to be quite flexible throughout.

  • The SCRUM methodology frees developers to devise the most ingenious solutions throughout the project, as learning occurs and the environment changes.

  • Small, collaborative teams of developers are able to share tacit knowledge about development processes. An excellent training environment for all parties is provided.

Disadvantages Of Scrum

  • Scrum is not effective for small projects

  • Expensive to implement

  • Training is required

  • Scrum also means you have to be in close contact with your external stakeholders so all-important things are on your backlog. This is not always feasible and may delay or upset them.

Lean software development (LD)

Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the agile Software development community. Lean technology is a philosophy of making a conscious choice to radically redefine and dynamically optimize strategy, systems, processes and services and add value to clients, employees and shareholders.



LD is a production practice that considers the expenditure of resources for any goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination. This can help in improving the quality of the software solutions/products each time a new software solution/product is built

Advantages OF Lean Development

  • Lead time reduction of up to 75%

  • On time delivery rate up to 100%

  • Productivity improvements of over 80%

  • Scrap reductions of up to 95%

  • Space utilization improvements of over 25%

  • Set-up time reductions of over 85%

  • Machine down time reductions of 70%

  • Total project time reduced by 70-90%

  • Project rework reduced by 60-90%

  • Project costs reduced by 50-70%

Disadvantages Of Lean Development

  • The Lean model ignores the social part of complex systems.

  • The main drawback of using Lean alone as a process improvement methodology is lack of strategic supply chain direction. Lean efforts will certainly yield results but can lead to islands of excellence within an organization if used alone and the time from effort to any significant results can be long.


Download 34.54 Kb.

Share with your friends:




The database is protected by copyright ©ininet.org 2024
send message

    Main page