To organize and manage a software development project successfully, one must
combine specific knowledge, skills, efforts, experience, capabilities, and even intuition.
They are all necessary to be able to answer questions such as: What artifacts to manage
and control during software development? How to organize the development team? What
are the indicators and measures of the product's quality? How do employ a certain set of
development practices? How to transition a software development organization to new
modeling and/or development paradigm? How to create and maintain a good relationship
with the customers and end-users? What remedial actions to take when something goes
wrong in the course of the project? What are the heuristics that can help managers in
conducting the software development process?
The manager of a software development project should answer the above questions
in the context of the project itself. However, there is a vast amount of knowledge the
manager should possess that transcends the boundaries of any specific project.
The purpose of this chapter is to provide an extended overview of many important
issues around which such knowledge should be structured. The introductory section
merely introduces the issues and the context within which the other sections discuss them.
Each of the remaining sections covers one of the issues in more detail. The idea has been
to provide balanced coverage of the issues from both the manager's and the developer's
perspectives.
Software development is a complex process involving such activities as domain
analysis, requirements specification, communication with the customers and end-users,
designing and producing different artifacts, adopting new paradigms and technologies,
evaluating and testing software products, and installing and maintaining the application at
the end user's site, providing customer support, organizing end-users training, envisioning
potential upgrades and negotiating about them with the customers, and many more.
To keep everything under control, eliminate delays, always stay within the budget,
and prevent project runaways, i.e. situations in which cost and time exceed what was
planned, software project managers must exercise control and guidance over the
development team throughout the project's lifecycle. In doing so, they apply many tools of
both economic and managerial nature. The first category of tools includes budgeting,
periodic budget monitoring, user chargeback mechanism, continuous cost/benefit analysis,
and budget deviation analysis. The managerial toolbox includes both long-range and
,short-term planning, schedule monitoring, feasibility analysis, software quality assurance,
organizing project steering committees, and the like.
All of these activities and tools help manage many important issues in the process of
software development. Figure 1 illustrates some of the issues, but not all of them. The
issues shown in Figure 1 have been selected for an extended overview in the remainder of
this chapter based on the following criteria:
their priority in the concerns of most software project managers, according to the
managers themselves - this is evident from the case studies, interviews, and reports of
many software project managers and consultants in the software industry worldwide.
, their importance as identified by relevant committees, associations, and consortia of
software developers.
The chapter does not address the economic aspects of software project management,
such as budgeting, negotiating, outsourcing, and contracts. The goal is to consider some of
the important managerial issues specific to software development, not those that appear in
other kinds of development projects as well.
Software Process, Perspective, and Specialized Process Models:
One of the primary duties of the manager of a software development project is to ensure
that all of the project activities follow a certain predefined process, i.e. that the activities
are organized as a series of actions conducted to a desirable end. The activities are usually
organized in distinct phases, and the process specifies what artifacts should be developed
and delivered in each phase. For a software development team, conforming to a certain
process means complying with an appropriate order of actions or operations. For the
project manager, the process provides means for control and guidance of the individual
team members and the team as a whole, as it offers criteria for tracing and evaluating the
project's deliverables and activities.
The software development process encompasses many different tasks, such as domain
analysis and development planning, requirements specification, software design,
implementation, and testing, as well