Wednesday, October 20, 2010

SDLC



Once upon a time, software development consisted of a programmer writing code to solve a problem or automate a procedure. Nowadays, systems are so big and complex that teams of architects, analysts, programmers, testers and users must work together to create the millions of lines of custom-written code that drive our enterprises.

To manage this, a number of system development life cycle (SDLC) models have been created: waterfall, fountain, spiral, build and fix, rapid prototyping, incremental, and synchronize and stabilize.






The oldest of these, and the best known, is the waterfall: a sequence of stages in which the output of each stage becomes the input for the next. These stages can be characterized and divided up in different ways, including the following:

  • Project planning, feasibility study: Establishes a high-level view of the intended project and determines its goals.
  • Systems analysis, requirements definition: Refines project goals into defined functions and operation of the intended application. Analyzes end-user information needs.
  • Systems design: Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation.
  • Implementation: The real code is written here.
  • Integration and testing: Brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability.
  • Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business.
  • Maintenance: What happens during the rest of the software's life: changes, correction, additions, moves to a different computing platform and more. This, the least glamorous and perhaps most important step of all, goes on seemingly forever.

system analyst

A systems analyst researches problems, plans solutions, recommends software and systems, and coordinates development to meet business or other requirements. They will be familiar with multiple approaches to problem-solving. Analysts are often familiar with a variety of programming languages, operating systems, and computer hardware platforms. Because they often write user requests into technical specifications, the systems analysts are the liaisons between vendors and IT professionals.[1] They may be responsible for developing cost analysis, design considerations, and implementation time-lines.

A systems analyst may:

  • Plan a system from the ground up.
  • Interact with customers to learn and document requirements that are then used to produce business requirements documents.
  • Write technical requirements from the business requirements document; this is a critical phase.
  • Interact with designers to understand software limitations.
  • Help programmers during system development, ex: provide use cases, flowcharts or even Database design.
  • Perform system testing.
  • Deploy the completed system.
  • Document requirements or contribute to user manuals.
  • Whenever a development process is conducted, the system analyst is responsible for designing components and providing that information to the developer.

[edit]