Study Notes on Software Project Management Course
Introduction to the Course
Introduction to Software Project Management
Motivations for Software Project Management
Overview of the Need for Process
Many courses in computer science and electronic engineering focus mainly on:
Technical aspects of software development.
Notations for good software practices
Examples include writing requirements, testing methodologies, system modeling (UML), and coding languages like Java.
A key emphasis is placed on the requirement for a well-defined and managed process to organize activities efficiently and in a controlled manner to build good software.
Importance of Controlled Processes
It is highlighted that:
Writing good requirements is ineffective without a controlled process for managing changes and tracking revisions.
Testing techniques become meaningless without adequate time for testing, potentially resulting in projects running behind schedule.
Development involves various activities unrelated to coding, such as:
Training users
Packaging products
Managing publicity and communication
Writing user documentation
Delivering Quality Product On Time and Within Budget
To successfully deliver a product on time and within budget while meeting agreed-upon quality characteristics, it is necessary to:
Establish a process for defining schedules and budgets.
Agree upon quality characteristics of the product.
Utilize a set of techniques to:
Define
Agree on
Plan
Execute
Monitor
Essential factors include goals, quality, time, and costs.
Skills and Goals of the Course
Competences Required for Managing Software Projects
Successful software project management requires specific competences, skills, and techniques.
Key Questions Addressed by the Course
At the end of this course, students will be able to answer the following questions:
How do I estimate task completion times?
How much will I charge for a project?
What methods can I use to keep the team motivated and ensure projects facilitate learning and career development?
How can I manage project risks effectively?
What techniques are used to assess if the project remains on time and within budget?
How can I ensure the quality of the final output?
Software Project Management Characteristics
Multidisciplinary Nature of Project Management
Project management techniques are inherently multidisciplinary, applicable across virtually all engineering domains.
Unique Characteristics of Software Projects
Management of software projects is particularly intriguing due to:
Intangibility of the product.
Flexibility of the product (e.g., different sizes and constraints).
Software projects often being one-off endeavors.
Uniquely flexible development processes.
Exponential growth in size and complexity of projects.
Critical nature of software, particularly in applications where human lives depend on proper function (e.g., airplane control systems).
Complexity in Software Projects
Historical Context of Space Missions and Software Complexity
Presentation of data from historical missions highlighting complexity in software development:
The computing capacity of the entire Saturn V rocket, including all stages and modules, was less than that of a typical modern cellphone.
Source: Apollo by Charles Murray and Catherine Bly Cox.
A Brief History of Software Project Management
Frederick Winslow Taylor's Scientific Management
Introduced in the beginning of the 20th century:
First theory of work and management.
Characterized by a negative view of workers.
Features of his theory include:
Scientific definition of work.
Scientific selection of personnel.
Division of responsibilities among workers and management.
Incentives and rest periods to boost worker efficiency.
Henry Gantt and the Gantt Chart
Developed during World War I:
Introduced the Gantt chart for project scheduling and monitoring.
Originally utilized for shipbuilding.
Helped distinguish between work efforts and progress.
Example of Gantt Chart
A sample Gantt chart format showing scheduling of tasks for various machines.
Development in the Fifties and Sixties
World War II:
Development of process flow diagrams in the Manhattan Project.
1957: Development of the Critical Path Method (CPM)
A mathematically based algorithm for scheduling project activities, initiated by DuPont and the Remington Rand UNIVAC team.
1958: Introduction of the Program Evaluation and Review Technique (PERT) during the U.S. Navy Polaris missile program, developed by Booz Allen & Hamilton.
Motivation Behind CPM and PERT
The purpose of CPM and PERT is to determine which activities could delay project delivery.
Developments From the 1960s Onwards
The 1960s witnessed:
Standardization and automation in government contracts due to major projects like Vietnam and NASA Apollo, leading to:
Adoption of PERT/COST and WBS in government projects.
Introduction of Earned Value Analysis (EVA) for better schedule and cost monitoring.
Emergence of project management organizations (PMI, IPMA) to promote professional techniques.
1970 marked the inclusion of software development into project management practices, with:
Implementation of EVA for monitoring.
Adoption of the Waterfall model of software development and the identification of numerous pitfalls in software development defined in The Mythical Man-Month.
The Computer Revolution
1980s:
Significant growth of hardware and software, granting accessibility of project management tools to smaller firms. Exponential growth in hardware capability aligned with Moore’s Law.
1990s:
Focus on total quality and responsive organizational structures.
Today:
Trends in web applications and various new models for application distribution. Emphasis on component and framework development, along with agile methodologies that prioritize quick interactions and continuous feedback.