Project Management minimize maximize
Project Management...

Project management is the discipline of planning, organizing, and managing resources to bring about the successful completion of specific project goals and objectives.

A project is a temporary endeavor, having a defined beginning and end (usually constrained by date, but can be by funding or deliverables), undertaken to meet unique goals and objectives, usually to bring about beneficial change or added value.

The temporary nature of projects stands in contrast to business as usual (or operations), which are repetitive, permanent or semi-permanent functional work to produce products or services. In practice, the management of these two systems is often found to be quite different, and as such requires the development of distinct technical skills and the adoption of separate management.

The primary challenge of project management is to achieve all of the project goals and objectives while honoring the preconceived project constraints. Typical constraints are scope, time, and budget. The secondary—and more ambitious—challenge is to optimize the allocation and integration of inputs necessary to meet pre-defined objectives.

A software development project management methodology refers to the framework that is used to structure, plan, and control the process of developing an information system. A wide variety of such frameworks have evolved over the years, each with its own recognized strengths and weaknesses. One system development methodology is not necessarily suitable for use by all projects. Each of the available methodologies is best suited to specific kinds of projects, based on various technical, organizational, project and team considerations.

The framework of a software development project management methodology consists of:

  *   A software development project management philosophy, with the approach or approaches of the software development process.
  *   Multiple tools, models and methods, to assist in the software development process.

These frameworks are often bound to some kind of organization, which further develops, supports the use, and promotes the methodology. The methodology is often documented in some kind of formal documentation.

Every software development project management methodology has more or less its own approach to software development. There is a set of more general approaches, which are developed into several specific methodologies.

These approaches are:

  • Waterfall: linear framework type.
  • Prototyping: iterative framework type
  • Incremental: combination of linear and iterative framework type
  • Spiral: combination of linear and iterative framework type
  • Rapid Application Development (RAD): Iterative Framework Type

Waterfall model
The waterfall model is a sequential development process, in which development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance.

Basic principles of the waterfall model are:
The project is divided into sequential phases, with some overlap and splashback acceptable between phases. Emphasis is on planning, time schedules, target dates, budgets and implementation of an entire system at one time. Tight control is maintained over the life of the project through the use of extensive written documentation, as well as through formal reviews and approval/signoff by the user and information technology management occurring at the end of most phases before beginning the next phase.

Prototyping
Software prototyping, is the framework of activities during software development of creating prototypes, i.e., incomplete versions of the software program being developed.

Basic principles of prototyping are:
Not a standalone, complete development methodology, but rather an approach to handling selected portions of a larger, more traditional development methodology (i.e. Incremental, Spiral, or Rapid Application Development (RAD)).

Attempts to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during the development process. User is involved throughout the process, which increases the likelihood of user acceptance of the final implementation. Small-scale mock-ups of the system are developed following an iterative modification process until the prototype evolves to meet the users’ requirements.

Incremental
Various methods are acceptable for combining linear and iterative systems development methodologies, with the primary objective of each being to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during the development process.

Basic principles of incremental development are:
A series of mini-Waterfalls are performed, where all phases of the Waterfall development model are completed for a small part of the systems, before proceeding to the next incremental, or Overall requirements are defined before proceeding to evolutionary, mini-Waterfall development of individual increments of the system, or The initial software concept, requirements analysis, and design of architecture and system core are defined using the Waterfall approach, followed by iterative Prototyping, which culminates in installation of the final prototype (i.e., working system).

Spiral
The spiral model. The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts.

Basic principles:
Focus is on risk assessment and on minimizing project risk by breaking a project into smaller segments and providing more ease-of-change during the development process, as well as providing the opportunity to evaluate risks and weigh consideration of project continuation throughout the life cycle.

Each cycle involves a progression through the same sequence of steps, for each portion of the product and for each of its levels of elaboration, from an overall concept-of-operation document down to the coding of each individual program. Each trip around the spiral traverses four basic quadarants:

  • Determine objectives, alternatives, and constraint of the iteration
  • Evaluate alternatives; Identify and resolve risks
  • Develop and verify deliverables from the iteration
  • Plan the next iteration

Begin each cycle with an identification of stakeholders and their win conditions, and end each cycle with review and commitment.

Rapid Application Development (RAD)
Rapid Application Development (RAD) is a software development methodology, which involves iterative development and the construction of prototypes. Rapid application development is a term originally used to describe a software development process introduced by James Martin in 1991.

Basic principles:
The key objective is for the fast development and delivery of a high-quality system at a relatively low investment cost. Attempts to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during the development process. Aims to produce high-quality systems quickly, primarily through the use of iterative Prototyping (at any stage of development), active user involvement, and computerized development tools. These tools may include Graphical User Interface (GUI) builders, Computer-Aided Software Engineering (CASE) tools, Database Management Systems (DBMS), fourth-generation programming languages, code generators, and object-oriented techniques.

The key emphasis is on fulfilling the business need, while technological or engineering excellence is of lesser importance.

Project control involves prioritizing development and defining delivery deadlines or “timeboxes”. If the project starts to slip, the emphasis is on reducing requirements to fit the timebox, not on increasing the deadline. Generally includes Joint Application Development (JAD), where users are intensely involved in system design, either through consensus building in structured workshops, or through electronically facilitated interaction.

Active user involvement is imperative. Iteratively produces production software, as opposed to a throwaway prototype. Produces documentation necessary to facilitate future development and maintenance. Standard systems analysis and design techniques can be fitted into this framework.

Other software development approaches

  • Object oriented developmentmethodologies, such as Grady Booch's Object-oriented design (OOD), also known as object-oriented analysis and design (OOAD). The Booch model includes six diagrams: class, object, state transition, interaction, module, and process.
  • Top-down programming evolved in the 1970s by IBM researcher Harlan Mills (and Niklaus Wirth) in developed structured programming.
  • Unified Process (UP) is an iterative software development methodology approach, based on UML. UP organizes the development of software into four phases, each consisting of one or more executable iterations of the software at that stage of development: Inception, Elaboration, Construction, and Guidelines. There are a number of tools and products available designed to facilitate UP implementation. One of the more popular versions of UP is the Rational Unified Process (RUP).
  • Agile Software Development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The term was coined in the year 2001 when the Agile Manifesto was formulated.
  • Integrated Methodology Software Development refers to a group of software development practices and deliverables that can be applied in a multitude (iterative, waterfall, spiral, agile) of software development environments, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.