Google
Methodologies

Print this page

 

Methodologies

Adaptive Project Framework
Agile Software Development
Crystal Methods
Dynamic Systems Development Model (DSDM)
Extreme Programming (XP)
Feature Driven Development (FDD)
Information Technology Infrastructure Library (ITIL)
Joint Application Development (JAD)
Lean Development (LD)
PRINCE2
Rapid Application Development (RAD)
Rational Unified Process (RUP)
Scrum
Spiral
Systems Development Life Cycle (SDLC)
TenStep Project Management Process
Waterfall (a.k.a. Traditional)

Scrum

Scrum Methodology
Scrum is an agile method for project management developed by Ken Schwaber. Its goal is to dramatically improve productivity in teams previously paralysed by heavier, process-laden methodologies. Its intended use is for management of software development projects as well as a wrapper to other software development methodologies such as Extreme Programming.

Scrum is characterised by:
A living backlog of prioritised work to be done.
Completion of a largely fixed set of backlog items in a series of short iterations or sprints.
A brief daily meeting (called a scrum), at which progress is explained, upcoming work is described, and obstacles are raised.
A brief planning session in which the backlog items for the sprint will be defined.
A brief heartbeat retrospective, at which all team members reflect about the past sprint.
Scrum is facilitated by a scrum master, whose primary job is to remove impediments to the ability of the team to deliver the sprint goal. The scrum master is not the leader of the team (as they are self-organising) but acts as a productivity buffer between the team and any destabilising influences.

Scrum enables the creation of self-organizing teams by encouraging verbal communication across all team members and across all disciplines that are involved in the project. A key principle of scrum is its recognition that fundamentally empirical challenges cannot be addressed successfully in a traditional "process control" manner. As such, scrum adopts an empirical approach - accepting that the problem cannot be fully understood or defined, focusing instead on maximising the team's ability to respond in an agile manner to emerging challenges.

If you're looking to hire a project manager with a strong software development background, contact me and I'd be happy to discuss your company's project needs and how I can address them.


References
Jim Highsmith, Agile Software Development Ecosystems

Ken Schwaber and Mike Beedle, Agile Software Development with Scrum

--------------------------------------------------------------------------------

Waterfall (a.k.a. Traditional) Methodology


The waterfall model is a popular version of the systems development life cycle model for software engineering. Often considered the classic approach to the systems development life cycle, the waterfall model describes a development method that is rigid and linear. Waterfall development has distinct goals for each phase of development where each phase is completed for the next one is started and there is no turning back.

The perceived advantages of the waterfall process is that it allows for departmentalization and managerial control. A schedule is typically set with deadlines for each stage of development and a product can proceed through the development process. In theory, this process leads to the project being delivered on time because each phase has been planned in detail.

In practice, waterfall development often falls short of expectations as it does not embrace the inevitable changes and revisions that become necessary with most projects. Once an application is in the testing stage, it is very difficult to go back and change something that was not thought of in the concept stage. Alternatives to the waterfall model include joint application development (JAD), rapid application development (RAD), synch and stabilize, build and fix, and the spiral model.


--------------------------------------------------------------------------------

Agile software development

It is a conceptual framework for undertaking software engineering projects. There are a number of agile software development methodologies e.g. Crystal Methods, Dynamic Systems Development Model (DSDM), and Scrum

Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.

Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Most agile teams are located in a bullpen and include all the people necessary to finish the software. At a minimum, this includes programmers and the people who define the product such as product managers, business analysts, or actual customers. The bullpen may also include testers, interface designers, technical writers, and management.

Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods.


References
Wikipedia, The Free Encyclopedia

--------------------------------------------------------------------------------.

Extreme Programming (XP) Methodology

The main goal of XP is to lower the cost of change in software requirements. With traditional system development methodologies, like the Waterfall Methodology, the requirements for the system are determined and often "frozen" at the beginning of the development project. This means that the cost of changing the requirements at a later stage in the project -- something that is very common in the real-world -- can be very high.
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
Planning game
Whole team
Pair programming
Continuous process rather than batch

Continuous Integration
Design Improvement (a.k.a refactor)
Small Releases
Shared understanding

Simple design
System metaphor
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.
It used to be thought that Extreme Programming could only work in small teams of fewer than 12 persons. However, XP has been used successfully on teams of over a hundred developers. It is not that XP doesn't scale, just that few people have tried to scale it, and proponents of XP refuse to speculate on this facet of the process.

XP Controversy

Detailed specifications are not created or preserved.
Programmers are required to work in pairs - not all software developers expect to be asked to work this way.

There is no Big Design Up Front. Most of the design activity takes place on the fly and incrementally, starting with "the simplest thing that could possibly work" and adding complexity only when it's required by failing tests. This could result in more re-design effort than only re-designing when requirements change.
A customer representative is attached to the project. This role can become a single-point-of-failure for the project and some people have found it to be a source of stress.


References
Wikipedia, The Free Encyclopedia

--------------------------------------------------------------------------------

On this Page
 

On InterviewFundas.com
 

Related links to other sites

 

 
 
You can put your ad here
 
 Top  
   
   

You are visitor number :