CSC/ECE 517 Fall 2011/ch6 6e zj

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction

The concept of heavier-weight methodology

Heavyweight development methodology is based on a sequential series of steps, such as requirements definition, solution build, testing and deployment. Heavyweight development methodology mainly focuses detailed documentation, inclusive planning, and extroverted design. Following are the most popular Heavyweight development methodologies.

The concept of agile methodology

Agile methodology is an approach to project management, typically used in software development. It helps teams respond to the unpredictability of building software through incremental, iterative work cadences, known as sprints.

Compare with the heavier-weight methodology and agile methodology

Heavier-weight methodology

Heavyweight methodology:

  • A heavyweight methodology has many rules, practices, and documents. It requires discipline and time to follow correctly.
  • Heavyweight methodologies try to plan out a large part of a project in great detail over a long span of time.
  • Project managers tend to want to predict every conceivable project milestone because they want to see every technical detail.
  • This leads managers to demand all sorts of specifications, plans, reports, checkpoints, and schedules.
  • But this works well only until things start changing; therefore, project managers who use heavyweight methodologies will resist change.
  • The heavyweight development methodology is based on a sequential series of steps, such as requirements definition, solution build, testing and deployment.
  • An example of a “heavyweight” process is the Rational Unified Process.
  • Project team larger than 10-20 people and working in multiple locations may be a good candidate for a heavyweight methodology
  • Heavyweight methodologies can be the better choice when you have multiple teams working at different locations and you need tighter control to formalize key parts of the project.

Advantage of heavier-weight methodology

  • It is very easy yet powerful method of software development. The phases are arranged so that it helps even the new developers to understand the “big picture” of how to go about developing the software through the software development life cycle.
  • It calls for a disciplined approach to save on project time and cost as well effort. Otherwise the implementation team may develop a code only to realize later that it was not at all required. This happens much more than one might realize and it cause issues both in development and testing.
  • The project management stakeholders are forced to correctly define the business requirements documentation (BRD) and the project management requirements. At the same time the developers are forced to understand these thoroughly before they start writing the software requirements specification (SRS), high level design and code.
  • It essentially requires documentation at every stage. This gives better understanding of the requirements, the logic of the codes and tests that were conducted on the software.

Disadvantage of heavier-weight methodology

The traditional project methodologies that many top corporations use, such as the SDLC approach, are considered to be bureaucratic or “predictive” in nature, and they’ve resulted in many unsuccessful projects. These “heavyweight” methodologies are becoming increasingly unpopular. They can be so laborious that the whole pace of design, development, and deployment actually slows down.
Heavyweight methodologies try to plan out a large part of a project in great detail over a long span of time. Project managers tend to want to predict every conceivable project milestone because they want to see every technical detail. This leads managers to demand all sorts of specifications, plans, reports, checkpoints, and schedules. But this works well only until things start changing; therefore, I believe project managers who use heavyweight methodologies will resist change.
The heavyweight development methodology is based on a sequential series of steps, such as requirements definition, solution build, testing and deployment, whereas lightweight methodologies propose executing the project steps in parallel. For example, the manager of a project that is based on the heavyweight methodology won’t agree to build the IT solution until the full requirements have been determined, and so it continues for each project phase. Still, any project team larger than 10-20 people and working in multiple locations may be a good candidate for a heavyweight methodology. Heavyweight methodologies can be the better choice when you have multiple teams working at different locations and you need tighter control to formalize key parts of the project.

Agile methodology

In 1970, Dr. Winston Royce presented a paper entitled “Managing the Development of Large Software Systems” which outlined his ideas on sequential development. In essence, his presentation asserted that a project could be developed much like an automobile on an assembly line, in which each piece is added in sequential phases. This means that every phase of the project must be completed before the next phase can begin. Thus, developers first gather all of a project’s requirements, then complete all of its architecture and design, then write all of the code, and so on. There is little, if any, communication between the specialized groups that complete each phase of work.
It’s easy to see how this development agile methodology is far from optimized. First of all, it assumes that every requirement of the project can be identified before any design or coding occurs. Put another way, do you think you could tell a team of developers everything that needed to be in a piece of software before it was up and running? Or would it be easier to describe your vision to the team if you could react to functional software? Many software developers have learned the answer to that question the hard way: At the end of a project, a team might have built the software it was asked to build, but, in the time it took to create, business realities have changed so dramatically that the product is irrelevant. In that scenario, a company has spent time and money to create software that no one wants. Couldn’t it have been possible to ensure the end product would still be relevant before it was actually finished?

Advantage of agile methodology

  • Agile methodology has an adaptive team which is able to respond to the changing requirements.
  • The team does not have to invest time and effort and finally find that by the time they delivered the product, the requirement of the customer has changed.
  • Face to face communication and continuous inputs from customer representative leaves no spaces for guesswork.
  • The documentation is crisp and to the point to save time.
  • The end result is the high quality software in least possible time duration and satisfied custormer.


In a nutshell this means that you can get development started fast, but with the caveat that the project scope statement is “flexible” and not fully defined. Hence this can be one of the major causes of scope creed if not managed properly.

Disadvantage of agile methodology

  • In case of some software deliverables, especially the large ones, it is difficult to access the effort required at the beginning of the software development life cycle.
  • There is lack of emphasis on necessary designing and documentation.
  • The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  • Only senior programmers are capable of taking the kind of decisions required during the development processes. Hence it has no place for newbie programmers, unless combined with experienced recourses.
  • Such development methodologies have also been criticized for their lack of strong planning and problems with applying them to the creation of larger software systems, especially in comparison to older, heavier weight methods like the spiral model.

Example

Heavier-weight methodology

Rational Unified Process

Agile methodology

Extreme Programming(XP)

Extreme Programming(XP) is a lightweight design method developed by Kent Beck, Ward Cunningham, and others, XP has evolved from the problems caused by the long development cycles of traditional development models. The XP process can be characterized by short development cycles, incremental planning, continuous feedback, reliance on communication, and evolutionary design. With all the above qualities, XP programmers respond to changing environment with much more courage. A summary of XP terms and practices is listed below:
Planning: The programmer estimates the effort needed for implementation of customer sories and the customer decides the scope and timing of releases based on esimates.
Small/short releases: An application is developed in a series of small, frequently updated versions. New versions are released anywhere from daily to monthly.
Metaphor: The system is defined by a set of metaphors between the customer and the programmers which describes how the system works.
Simple Design: The emphasis is on designing the simplest possible solution that is implemented and unnecessary complexity and extra code are removed immediately.
Refactoring: It involves restructuring the system by removing duplication, improving communication, amplifying and adding flexibility but without changing the functionality of the program.
Usage of XP model: Best for projects that are not large, and involve a small group of developers working for limited time period. But agile processes require that the developers involved the highly skilled.


How to chose methodology?

What the best model is varies from project to project, but the creation of new models for software development that can strike a balance between extremes is an open question. The essential points you’ll need to consider when selecting a methodology are:

  • Budget
  • Team size
  • Project criticality
  • Technology used
  • Documentation
  • Training
  • Best practices/lesions learned
  • Tools and techniques
  • Existing processes
  • Software

References