Introduction
Software development is uniquely flexible and software development
projects range from the small to the very large. Consider, for instance,
a small/home enterprises carried out by one person or a small team or
the development of a complex control system involving tens or hundreds
of people for various years. Moreover, as software is becoming an
essential infrastructure of our societies and lives, the adoption of
sound management practices becomes a necessity, rather than an option.
Software Project Management is an introduction to project management,
with a particular focus on software intensive projects, that is,
projects in which a software product is the main output of a project or
one of the main outputs.
Structure of the Course
The course is structured in the following parts:
- Software Development, where the main activities and techniques that
characterize software development are presented. Far from the goal of
replacing a software engineering course, this part intends to provide
basic know-how about what it means to develop a software product.
- Project Management Techniques. Inspired to the project management
body of knowledge (PMBOK), the goal of this part is describing the
main techniques used to soundly manage a project. The main
knowledge areas are covered, including scope, time, costs, team,
risk, and communication management. The focus remains on software
development and specific techniques are illustrated if they can more
efficiently address a specific task or knowledge area.
- Agile Management and other Emerging Practices. The application of
lean management techniques to software development has demonstrated
to be very effective in many occasions. This part will be devoted to
describing some emerging practices and processes for software
development, including agile processes (e.g. SCRUM) and open source
development practices.
- Project Experiences. According to time available, the presentation
of various case studies which are meant to illustrate the issues
project managers have to deal with in their daily practice complete
the syllabus.
Topics and Techniques Covered
- “Traditional” software development processes: waterfall, prototype,
incremental, RUP
- Agile software development processes (e.g. SCRUM) and open source
development practices
- Project Selection Techniques and project initiation
- Scope Management, including Work Breakdown Structures, change and
configuration management, and scope control
- Time Management, including AOA/AON, Gantt Charting, critical path
computation, estimation using COCOMO and FP, project crashing
techniques, critical chain management.
- Cost management, including budgeting and pricing techniques
- Risk management, with focus on qualitative risk management and some
hints about quantitative techniques
- Team management and (project) organizational structures
- Project Monitoring and control, including earned value analysis