Monday, December 12, 2011

Chapter 21


Part 4         Managing Software Projects
Chapter 21
Project Management Concepts

CHAPTER OVERVIEW AND COMMENTS

This chapter discusses project management at a fairly general level. The important point to get across is that all software engineers are responsible for managing some portion of the projects they work on. Modern software development is a very complex undertaking that involves many people working over long periods of time. The key to successful project management is to focus on the four P's (people, product, process, and project). Effective communication among all stakeholders is essential. The software process selected must be appropriate for the people and the product. The project must be planned if the goal is to deliver high quality software, on time and under budget. 

21.1     The Management Spectrum

This section provides an overview of the four P's of project management. The point to emphasize is that each the P's is important and it is the synergy of all four working together that yields the successful management of software products. This also the time to remind students that it is customer and the end-user for whom the product is being developed. Process framework activities are populated with tasks, milestones, work products, and quality assurance checkpoints regardless of the project size. To avoid project failure developers need react to warning signs and focus their attention on practices that are associated with good project management.

21.2     People

Companies that manage their people wisely prosper in the long run.  To be effective the project team must be organized in a way that maximizes each person's skills and abilities. Effective managers focus on problem solving and insist on high product quality. Software teams may be organized in many different ways. Two keys factors in selecting a team organizational model are desired level of communication among its members and difficulty level of the problems to be solved. Hierarchically organized teams can develop routine software applications without much communication among the team members. Teams having a more democratic style organization often develop novel applications more efficiently. It is important for students to understand that the larger the team, the greater the effort required to ensure effective communication and coordination of team member efforts.
If you’re teaching a graduate course or an undegraduate course populated by industry professions, I’d recommend assigning reading from DeMarco and Lister’s classic text, Peopleware and from Weinberg’s On Becoming a Techncial Leader.

21.3     The Product

The first project management activity is the determination of software scope. This is essential to ensure the product developed is the product requested by the customer. It is sometimes helpful to remind students that unless developers and customers agree on the scope of the project there is no way to determine when it ends (or when they will get paid). Regardless of the process model followed, a problem should be decomposed along functional lines into smaller, more easily managed subproblems.

21.4     The Process

Once a process model is chosen, it needs to be populated with the minimum set of work tasks and work products. Avoid process overkill. It is important to remind students that framework activities are applied on every project, no matter how small. Work tasks may vary, but not the common process framework. Process decomposition can occur simultaneously with product decomposition as the project plan evolves.
If time permits, you might review some of the content of Chapters 3 and 4, emphasizing the process model (s) that are most appropriate to the work done by your students.

21.5     The Project

The text lists 10 warning signs that indicate when a software project is failing. Software engineers need to be on the watch for them and take corrective action before failure occurs. Most failures can be avoided by doing things right the first time and avoiding the temptation to cut corners to try to shorten the development cycle. Skipping process steps often has the effect of lengthening the development time since the amount of work usually increases. Taking time to reflect on how things went once a project is over, is a good habit to develop in students (who should be striving to avoid repeating their past mistakes on future projects).

21.6     The W5HH Principle

Boehm's W5HH principle is a simple organizing tool that can help both novice and experienced software engineers focus on what is really important to include in a project management plan. Boehm's questions are applicable to all software projects, regardless of their size or complexity.
As a classroom exercise, select a well know software product and have students answer each of Boehm’s W5HH questions.

3.7    Critical Practices

The Airlie Council list of project integrity critical practices provides a good baseline for assessing how well a project team understands its practices. Most of the items in this list will be discussed in later chapters of the text. It may be helpful to have students begin thinking about this list in the context of developing their own project management plans. While this is difficult undertaking for students early in the course, it does get them thinking about the big picture without worrying about the details of software implementation.


No comments:

Post a Comment