Thursday, January 05, 2006

A Few more Software Construction Methods..

Synchronize and Stabilize method

It is a Systems Development Life Cycle methodology in which teams work concurrently on individual application modules. They frequently synchronize their code with that of other teams, and debug or “stabilize” their code regularly throughout the development process.

This method combines the advantages of the spiral model with technology for overseeing and managing source code. This method allows many teams to work efficiently in parallel.

This approach was defined by David Yoffie of Harvard University and Michael Cusumano of MIT.

They studied how Microsoft Corp. developed Internet Explorer and Netscape Communications Corp. developed Communicator, finding common threads in the ways the two companies worked. For example, both companies did a nightly compilation (called a build) of the entire project, bringing together all the current components.

They established release dates and expended considerable effort to stabilize the code before it was released. The companies did an alpha release for internal testing; one or more beta releases for wider testing outside the company, and finally a release candidate leading to a gold master, which was released to manufacturing. At some point before each release, specifications would be frozen and the remaining time spent on fixing bugs.

Both Microsoft and Netscape managed millions of lines of code as specifications changed and evolved over time. Design reviews and strategy sessions were frequent, and everything was documented. Both companies built contingency time into their schedules, and when release deadlines got close, both chose to scale back product features rather than let milestone dates slip

Spiral Model

This SDLC methodology that combines features of Prototyping with the Waterfall Methodology. The spiral model is often favored for large, complex projects.

Steps in the spiral model include:

  • The new system requirements are defined. This usually involves interviewing a number of users representing all the end users of the system.
  • A preliminary system design is created.
  • An initial prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the final product’s characteristics.
  • After evaluating the strengths, weaknesses and risks of the first prototype, a second prototype is developed and tested.
  • If the risk is considered to be too great, the client may choose to terminate the project at this point. Risk factors to be considered include development cost overruns, operating-cost miscalculation, etc.
  • Subsequent prototypes are developed until the customer is satisfied that the latest prototype represents the desired product.
  • The system is constructed, based on the final prototype.
  • The final system is evaluated and tested. Routine maintenance is carried out continually to prevent large-scale failures and to minimize downtime.
Prototype Model:

Yeah right.. i am sure u know what a prototype is.. better meet the client and understand what he wants and all the freakin steps which i have written over the past year but wait before begenning the whole stuff ask the developer to prepare a Proto type Model of the orignal work planned.. yeah the only missing part would be functionality and according to a senior software developer (Quote Unquote ;-) ) Not only Prototype Models helps the developer but it also reduces the chances of errors in the final product/software drastically, also despite the common belief that Prototype model might actually increase the Project / SDLC Length, Mr. Jajoo believes it will actually reduce it and make the End result better...

So actually Prototype model could be and as i have found with experience should be actually used along with any other SDLC methodology used..