CPEN 421

Software Project Management

4 credits

OVERVIEW AND MOTIVATION

The idea of a ‘project’, i.e. an organized set of activities with a defined set of outcomes achieved with specified resources in a stipulated period of time, is present in virtually every type of human endeavor, and much has been learned about how to plan, execute, monitor, adjust and evaluate projects in general. Attempts have been made to codify and systematize the structure and operation of projects. One effort in particular, the Project Management Institute’s Project Management Book of Knowledge (PMBoK), is an impressive codification largely reflecting historical technical disciplines, notably manufacturing, and the attempts to apply it to software development projects are many and diverse. Another is Carnegie Mellon’s Software Engineering Institute’s Capability Maturity Model (CMM) and its derivatives, aimed at assessing and improving organizational capability to execute software projects. Then there is the large number of execution frameworks and tools that are to the stock-in-trade of software project managers all over the world. This course will expose students to these attempts to codify the software development process and the most ubiquitous of the frameworks and tools for managing that process in action.

However, it has become clear that there are elements of typical software development projects that make them often greatly resistant to the kind of codification represented by the PMBoK, CMM, and the frameworks and tools employed. The evidence for this is a rather dismal record of software quality, many well-documented disasters, as well as frequent attempts at frameworks with the goal of solving these problems. Some of the reasons for such negative outcomes are now obvious, notably that the manufacturing background that was the inspiration for much of the codification and framework/tool effort is incompatible with most software development projects. In particular, software development generally produces singular, highly unique outputs whereas the projects that inspired the PMBoK and the CMM produced large quantities of identical products. Also, software projects are very often exploratory in nature throughout all stages, requiring an iterative try/fix approach fundamentally different than a typically linear design/manufacture process. More subtly, software development is human-intensive at every stage, bringing into play what turns out to be a large array of biases and blind spots not present in manufacturing-type operations past the design stage.

This course explicitly stands as a reminder to aspiring Software Project Managers, that despite the highly technical nature of software products, the epistemology that produces them is fundamentally lacking in the effects of the non-technical components inevitably involved. Indeed, this course will expose two fundamental issues that have traditionally received less attention than is deserved in this respect. First, software projects are throughout their lifecycles, ubiquitously influenced by human-factors judgment. Second, there are many lessons to be learned from other disciplines that have strong application to software project management, most notably from theories of human personal and organizational dynamics.

In short, in order to master the craft of Software Project Management, its practitioners must become as skilled at reading and influencing people as at mastering, adapting and applying the huge variety of technical tools they deal with every day.

LEARNING OBJECTIVES

Upon completion of this course, it is expected that students will be able to:

  • Grasp the essential characteristics of the most common software project codification schemes and the most common frameworks and tools for managing projects.
  • Understand that certain theories of human personal and organizational dynamics should inform the form and practice of software project management.
  • Select or adapt the (mix of) software methodologies most appropriate to software projects based on the human/organizational environment in which they operate.
  • Identify, characterize and manage risks associated with a software development project.
  • Estimate the effort and cost of a software development project, and justify that estimate.
  • Defend the project against ‘scope creep’, low quality, and excessive Technical Debt.
  • Understand the most important legal and ethical issues associated with software projects.
  • Develop and maintain a comprehensive software project development plan.
  • Reflect on his/her software-oriented practices and biases.

STRUCTURE AND OPERATION

This 3-credit course is delivered by an EECE Instructor and two Teaching Assistants working under the Instructor’s guidance. Lectures, Pre-Readings and Tutorials are the primary means of delivering course content to students. Quizzes, graded Assignments, Tutorial attendance, and a UBC-sanctioned Final Examination are the means of assessing students’ mastery of the course material and its implications. There is no Mid-Term Examination for this course.

Lectures and Reading Assignments

Generally, Lectures are scheduled twice weekly (none on Statutory Holidays and during Reading Week). Consult your UBC CWL account for specific, fixed, days/times/locations.

Lectures are the primary mechanism in this course for the introduction of concepts and ideas, and to a limited extent, the structure and meaning of the processes and algorithms that embody them. Assignments will generally be assigned during Lectures. Support for Assignment completion will be provided to a certain extent in some Tutorials (see below).

There will be approximately 25 Lectures in this course:

  • Pre-reading will generally be assigned in advance of each Lecture. Topics will generally be drawn from the named elements below.
  • Most Lectures will begin with a short Quiz about previously-assigned Pre-Reading. Quizzes will generally be conducted in the first 5 minutes of a Lecture; students who are late will not be accommodated at other times. Quiz results count toward final course grades.
  • Most Lectures will focus on current software project management frameworks and tools, will introduce students to the detailed machinery of some of them, but will not be ‘training sessions’; students are expected to consult textbooks  and other aids to gain mastery of such project management machinery. Some support for Assignments exercising the mentioned machinery will be provided in some Tutorials. Frameworks and tools may include:
    • RUP
    • Waterfall Methodology
    • Spiral Methodology
    • Iterative Methodology
    • Extreme Programming
    • Pairwise Programming
    • Agile, in its many variants
    • Use Case Analysis
    • PERT
    • MS Project
    • Trello
    • Estimation – several variants
    • Risk Profiling
    • Technical Debt
    • Other
  • Some Lectures will introduce ideas from theories of human and organizational dynamics that bear on software project management practices. Note: it may not be obvious at first glance how these ideas inform current practice; indeed, the goal here is to uncover, through Lectures, Assignments and Tutorials how these ideas might inform better practices. Students are expected to proactively delve deeper into such material. Theories may include:
    • Actor-Network Theory
    • Behavioral Decision Theory
    • Boundary Objects Theory
    • Weber’s Bureaucracy Theory
    • Competitive Theory
    • Complexity Theory
    • Design Thinking Theory
    • Equity Theory
    • General Systems Theory
    • Institutional Theory
    • Prospect Theory
    • Soft Systems Theory
    • Stakeholder Theory
    • Structuration Theory
    • Task-Technology Fit Theory
    • Team Cohesion Theory
    • Transactive Memory Theory
    • Work Systems Theory
    • …and perhaps others

Students will be expected to participate in Lectures beyond the above-mentioned Quizzes and may be selected from the Class List during Lectures to answer questions based on what has been covered to that point. Lecture content will be made available to students via Canvas after each Lecture, and all non-private discussions with the Instructor are intended to occur within the Canvas framework.

Lecture attendance is not mandatory, and all pre-prepared lecture material will be posted to Canvas shortly after each Lecture. Note that all non-prepared material that comes up in a Lecture, e.g. as a result of student questions, is in principle examinable. Students whose in-Lecture behavior is disruptive to others will be asked to absent themselves from the Lecture; this includes, in addition to the obvious distractions such as side conversations, accessing or communicating material not related to the course (think social media).

Assignments

There will be approximately 9 Assignments in 2 categories (see Canvas Files for a detailed schedule):

  • ‘Technical’ Assignments: Approximately six Assignments will focus on how to use certain of the current software project management frameworks and tools; they should be considered primarily ‘application’ in nature. These will be assigned approximately every other week during the course, each normally due within one week of assignment.
  • ‘Human Factors’ Assignments: Approximately three Assignments will focus on how some of the above-listed theories inform current frameworks and how they and other theories might provide a context for more effective frameworks; they should be considered primarily ‘conceptual’ in nature. These will be assigned with due dates normally 3 weeks from assignment.
  • There may be schedule overlap on these two types of Assignments.

All Assignment responses must be submitted via Canvas, a UBC-sanctioned online software tool available to all students registered in the course, by the dates/times stipulated for each Assignment. Students enrolled in the course are automatically assigned a Canvas account at the beginning of the course.

Tutorials

Generally, one Tutorial in each of two streams (students will have been assigned to one stream or the other) will be scheduled per week during this course (none on Statutory Holidays and during Reading Week), on non-Lecture days (see Canvas Files for a detailed schedule).

The focus of the Tutorials is to expand on or illustrate Lecture materials. This will take various forms:

  • Illustrate important Project Management principles using games. Tutorials of this kind of instruction are attendance-mandatory. Games utilized in past years include: Pizzeria Operation (kanban-type project management, bottlenecks, waste prevention, etc.), Mission to Mars (critical tasks, dependencies, unexpected delays, etc.), and Hard Choices (risk management, Technical Debt, etc.).
  • Assist students in completing the ‘Technical’ Assignments mentioned above by providing detailed instruction relevant to the tools and techniques needed to complete the Assignments. Tutorials dedicated to this purpose are attendance-optional.
  • Some Tutorials may feature presentations by highly-accomplished individuals from the software industry who will share their experiences of when theory and practice diverge, and the consequences arising from this. The number of these Tutorials will depend on the Instructor’s success in attracting busy people with little time. Attendance at these Tutorials is strongly encouraged due to the quality of the individuals involved, but not mandatory.

Final Examination

This course requires that all students physically sit a Final Examination at a date/time/location in the period April 14 through April 29. The Final Examination will consist of approximately 40 multiple-choice questions, and approximately 4 analysis/discussion questions selected from approximately 10 options; 2.5 hours are allowed for completion of the Final Examination.

Based on previous years’ results, the Final Examination should be considered difficult.

Staff/Student Interaction

Most staff/student interaction for this course will be, in addition to face-to-face interaction during Lectures and Tutorials, via Canvas, a UBC-sanctioned online tool available to all students registered in the course. All students enrolled in the course will be assigned a Canvas account.

In addition, the Instructor will offer ‘office hours’ (may be via Google Hang-Outs or similar mechanism) and will accept email-anytime interaction with students; Teaching Assistant availability of this kind will be announced at the beginning of the course.

ASSESSMENT STRATEGY AND GRADING SCHEME

Final student grades for this course will be based on the following scheme:

Lecture/Quizzes 10%
‘Technical’ Assignments 30%
‘Human Factors’ Assignments 20%
Final Examination 40%

Note that to pass this course, students must attain score at least 50% on the Final Exam as well as on the aggregate grade.

RECOMMENDED TEXTS AND BIBLIOGRAPHY

There is no mandatory textbook for this course. However, the following make very useful contributions to the subject of Software Project Management and may be referenced in the course:

  • B. Hughes and M. Cotterell. Software Project Management, 5 ed. Maidenhead, UK: McGraw Hill Higher Education, 2009.
  • M. Cohn. Succeeding with Agile: Software Development Using Scrum. Upper Saddle River NJ: Addison-Wesley Professional, 2009.

A bibliography, which may be referenced for Pre-Readings and Assignments, will be provided via Canvas at the beginning of the course.

Prerequisite

ONE of
CPSC 310 – Introduction to Software Engineering
CPEN 321 – Software Engineering
EECE 310 – Software Engineering

More Information

UBC Course Page