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