Home »
Quality »
Project Management
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.It
is often closely related to and sometimes conflated with program management.
A project is a temporary endeavor, having a defined beginning and end, undertaken
to meet particular goals and objectives, usually to bring about beneficial change
or added value. The temporary nature of projects stands in contrast to business
as usual, 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.
There are several approaches that can be taken to managing project activities including
agile, interactive, incremental, and phased approaches.
Lifecycle Processes
Software Development Methodologies
The software development methodology and approach followed depends on various factors
and project inputs. We at SolveIT follow iterative and incremental development methodologies,RUP
or agile development approach depending on the project type and clients requirements.
1. Iterative and Incremental
We collaborate closely with our clients to identify the best suited approach for
the project. Iterative and incremental development is a cyclic software development
process developed in response to the weaknesses of the waterfall model. It starts
with an initial planning and ends with deployment with the cyclic interaction in
between. The iterative and incremantal development is an essential part of the
Rational Unified Process, the Dynamic Systems Development Method, Extream Programming
and generally the Agile Software Development frameworks.
The basic idea behind iterative enhancement is to develop a software system incrementally,allowing
the developer to take advantage of what was being learned during the development
of earlier, incremental, deliverable versions of the system. Learning comes from
both the development and use of the system, where possible. Key steps in the process
were to start with a simple implementation of a subset of the software requirements
and iteratively enhance the evolving sequence of versions until the full system
is implemented. At each iteration, design modifications are made and new functional
capabilities are added.
The Procedure itself consists of the Initialization step, the Iteration step, and
the Project Control List. The initialization step creates a base version of the
system. The goal for this initial implementation is to create a product to which
the user can react. It should offer a sampling of the key aspects of the problem
and provide a solution that is simple enough to understand and implement easily.To
guide the iteration process, a project control list is created that contains a record
of all tasks that need to be performed. It includes such items as new features to
be implemented and areas of redesign of the existing solution. The control list
is constantly being revised as a result of the analysis phase.
The iteration involves the redesign and implementation of a task from the project
control list, and the analysis of the current version of the system. The goal for
the design and implementation of any iteration is to be simple, straightforward,and
modular, supporting redesign at that stage or as a task added to the project control
list. The level of design detail is not dictated by the interactive approach.In
a light-weight iterative project the code may represent the major source of documentation
of the system; however, in a mission-critical iterative project a formal Software
Design Document may be used. The analysis of an iteration is based upon user feedback,and
the program analysis facilities available. It involves analysis of the structure,modularity,
usability, reliability, efficiency, & achievement of goals. The project control
list is modified in light of the analysis results.
2. Rational Unified Process (RUP) Methodology
The Rational Unified Process attempts to capture many of modern software development's
best practices in a form suitable for a wide range of projects and organizations.This
process recognizes that the traditional waterfall approach can be inefficient because
it idles key team members for extended periods of time. Many feel that the waterfall
approach also introduces a lot of risk because it defers testing and integration
until the end of the project lifecycle. Problems found at this stage are very expense
to fix.
By contrast, RUP represents an iterative approach that is superior for a number
of reasons:
- It lets you take into account changing requirements which despite the best efforts
of all project managers are still a reality on just about every project.
- Integration is not one "big bang" at the end; instead, elements are integrated progressively.
- Risks are usually discovered or addressed during integration. With the iterative
approach, you can mitigate risks earlier.
- Iterative development provides management with a means of making tactical changes
to the product. It allows you to release a product early with reduced functionality
to counter a move by a competitor, or to adopt another vendor for a given technology.
- Iteration facilitates reuse; it is easier to identify common parts as they are partially
designed or implemented than to recognize them during planning.
- When you can correct errors over several iterations, the result is a more robust
architecture. Performance bottlenecks are discovered at a time when they can still
be addressed, instead of creating panic on the eve of delivery.
- Developers can learn along the way, and their various abilities and specialties
are more fully employed during the entire lifecycle. Testers start testing early,technical
writers begin writing early, and so on.
- The development process itself can be improved and refined along the way. The assessment
at the end of an iteration not only looks at the status of the project from a product
or schedule perspective, but also analyzes what should be changed in the organization
and in the process to make it perform better in the next iteration.