You are previewing Introduction to Software Project Management.
O'Reilly logo
Introduction to Software Project Management

Book Description

Although software development is one of the most complex activities carried out by man, sound development processes and proper project management can help ensure your software projects are delivered on time and under budget. Providing the know-how to manage software projects effectively, Introduction to Software Project Management supplies an accessible introduction to software project management.

The book begins with an overview of the fundamental techniques of project management and the technical aspects of software development. This section supplies the understanding of the techniques required to mitigate uncertainty in projects and better control the complexity of software development projects. The second part illustrates the technical activities of software development in a coherent process—describing how to customize this process to fit a wide range of software development scenarios.

  • Examines project management frameworks and software development standards, including ESA and NASA guidelines, PRINCE2®, and PMBOK®
  • Addresses open source development practices and tools so readers can adopt best practices and get started with tools that are available for free
  • Explains how to tailor the development process to different kinds of products and formalities, including the development of web applications
  • Includes access to additional material for both practitioners and teachers at www.spmbook.com

Supplying an analysis of existing development and management frameworks, the book describes how to set up an open-source tool infrastructure to manage projects. Since practitioners must be able to mix traditional and agile techniques effectively, the book covers both and explains how to use traditional techniques for planning and developing software components alongside agile methodologies. It does so in a manner that will help you to foster freedom and creativity in assembling the processes that will best serve your needs.

Table of Contents

  1. Preliminaries
  2. Dedication
  3. Preface
  4. Acknowledgments
  5. Author
  6. Chapter 1: Introduction
    1. 1.1 What is a Project
      1. 1.1.1 Projects and Operational Work
      2. 1.1.2 Programs, Subprojects, and Portfolios
        1. 1.1.2.1 Programs
        2. 1.1.2.2 Subprojects
        3. 1.1.2.3 Portfolios
    2. 1.2 What is a Software Project
      1. 1.2.1 Application Development
      2. 1.2.2 Process and Systems Reengineering Services
      3. 1.2.3 System Integration Services
      4. 1.2.4 Other Types of Projects
    3. 1.3 Managing Projects
      1. 1.3.1 The Project Manager and the Project Stakeholder
      2. 1.3.2 Project Stakeholders
      3. 1.3.3 Code of Conducts and Ethical Aspects
    4. 1.4 Software Project Management
    5. 1.5 Goals and Organization of the Book
    6. 1.6 Further References
    7. 1.7 Questions and Topics for Discussion
    8. References
      1. Figure 1.1
      2. Figure 1.2
  7. Chapter 2: The Basics: Software Development Activities and Their Organization
    1. 2.1 Software Requirements Definition
      1. 2.1.1 Requirements Elicitation
      2. 2.1.2 Requirements Structuring
      3. 2.1.3 User Experience Design
      4. 2.1.4 Requirements Validation
    2. 2.2 Business Modeling
      1. 2.2.1 Mapping the Organizational Structure
      2. 2.2.2 Modeling the Business Processes
      3. 2.2.3 Mapping the Existing IT Infrastructure
      4. 2.2.4 Mapping Business Entities
    3. 2.3 Design and Implementation
      1. 2.3.1 System Design
      2. 2.3.2 Implementation
    4. 2.4 Verification and Validation
      1. 2.4.1 Testing
      2. 2.4.2 Organizing Testing Activities
        1. 2.4.2.1 Test Plan Definition
        2. 2.4.2.2 Test Execution and Reporting
    5. 2.5 Deployment
    6. 2.6 Operations and Maintenance
      1. 2.6.1 Supporting and Monitoring Operations
      2. 2.6.2 Maintenance
      3. 2.6.3 Organizing Support and Maintenance Activities
    7. 2.7 Questions and Topics for Discussion
    8. References
      1. Figure 2.1
      2. Figure 2.2
      3. Figure 2.3
      4. Figure 2.4
      5. Figure 2.5
  8. Chapter 3: Making IT Right: Managing Goals, Time, and Costs
    1. 3.1 Before You Start: Assessing Value and Risks
      1. 3.1.1 Project Value: Aspects to Consider
      2. 3.1.2 Project Risks: Aspects to Consider
      3. 3.1.3 Techniques to Assess Value and Risks
        1. 3.1.3.1 Financial Methods
          1. 3.1.3.1.1 Payback
          2. 3.1.3.1.2 Return of Investment
          3. 3.1.3.1.3 Net Present Value and Internal Rate of Return
          4. 3.1.3.1.4 Applying Financial Methods: An Example
        2. 3.1.3.2 Score Matrices
        3. 3.1.3.3 SWOT Analysis
        4. 3.1.3.4 Stakeholder Analysis
        5. 3.1.3.5 Assessing Sustainability
        6. 3.1.3.6 A Recap of Project Selection Techniques
      4. 3.1.4 The Project Feasibility Document
    2. 3.2 Formalizing the Project Goals
      1. 3.2.1 Project Goals and Requirements
      2. 3.2.2 Project Assumptions and Constraints
      3. 3.2.3 Project Outputs and Control Points
      4. 3.2.4 Project Roster
    3. 3.3 Deciding the Work
      1. 3.3.1 Building a WBS
      2. 3.3.2 WBS Decomposition Styles
      3. 3.3.3 WBS Dictionary
      4. 3.3.4 WBS Construction Methodologies
    4. 3.4 Estimating
      1. 3.4.1 Effort, Duration, and Resources
      2. 3.4.2 The “Quick” Approach to Estimation
      3. 3.4.3 The Uncertainty of Estimations
      4. 3.4.4 PERT
      5. 3.4.5 Algorithmic Techniques
        1. 3.4.5.1 Function Points
        2. 3.4.5.2 COCOMO
          1. 3.4.5.2.1 COCOMO81
          2. 3.4.5.2.2 COCOMO II
        3. 3.4.5.3 Web Objects
        4. 3.4.5.4 Effort and Project Phases
    5. 3.5 Scheduling a Plan
      1. 3.5.1 Identify Dependencies among Activities
        1. 3.5.1.1 Type of Dependencies
        2. 3.5.1.2 Lead and Lag Time
        3. 3.5.1.3 Network Graphs
      2. 3.5.2 Identify the Critical Path
      3. 3.5.3 Allocate and Level Resources
        1. 3.5.3.1 Qualifying the Resources Needed for a Task
        2. 3.5.3.2 Specifying Resource Availability
        3. 3.5.3.3 Allocating Resources to a Plan
      4. 3.5.4 The Gantt Chart
    6. 3.6 Optimizing a Plan
      1. 3.6.1 Renegotiating Goals and Deadlines
      2. 3.6.2 Phase the Project
      3. 3.6.3 Project Crashing
      4. 3.6.4 Fast Tracking
      5. 3.6.5 Critical Chain Management
    7. 3.7 Budgeting and Accounting
      1. 3.7.1 Project Costs
      2. 3.7.2 Cost Element Structures
      3. 3.7.3 Determining the Project Costs
      4. 3.7.4 Managing Project Costs
    8. 3.8 Project Execution
      1. 3.8.1 Kicking Activities Off
      2. 3.8.2 Collect the Output of Activities
      3. 3.8.3 Collect Information about the Project Status
      4. 3.8.4 The Project Routine in Agile Methods
    9. 3.9 Project Monitoring and Control
      1. 3.9.1 Bookkeeping Your Plan: Actual Start and End Dates
      2. 3.9.2 Monitoring Time and Work
      3. 3.9.3 Monitoring Costs
      4. 3.9.4 An Integrated Approach: Earned Value Analysis
        1. 3.9.4.1 Planned Value
        2. 3.9.4.2 Actual Costs
        3. 3.9.4.3 Earned Value
        4. 3.9.4.4 Assessing a Plan Health Using Earned Value Analysis
        5. 3.9.4.5 Some Considerations about Earned Value Analysis
      5. 3.9.5 Monitoring Progress, the Agile Way
      6. 3.9.6 Agile-Earned Value Analysis
    10. 3.10 Project Closing
      1. 3.10.1 Getting Client Acceptance
      2. 3.10.2 Installing Project Deliverables
      3. 3.10.3 Archiving Old Deliverables
      4. 3.10.4 Documenting the Project
      5. 3.10.5 Performing a Financial Closure
      6. 3.10.6 Postimplementation Audit
      7. 3.10.7 Staff-Releasing
    11. 3.11 An Example
      1. 3.11.1 Initiating
      2. 3.11.2 BuildingaPlan
      3. 3.11.3 Creating a Budget for the Project
      4. 3.11.4 Changing the Plan to Meet External Deadlines
        1. 3.11.4.1 Changing the Project Approach
        2. 3.11.4.2 Reducing or Changing the Project Scope
        3. 3.11.4.3 Allocating Resources More Efficiently
        4. 3.11.4.4 Fast Tracking the Plan
    12. 3.12 Questions and Topics for Discussion
    13. References
      1. Figure 3.1
      2. Figure 3.2
      3. Figure 3.3
      4. Figure 3.4
      5. Figure 3.5
      6. Figure 3.6
      7. Figure 3.7
      8. Figure 3.8
      9. Figure 3.9
      10. Figure 3.10
      11. Figure 3.11
      12. Figure 3.12
      13. Figure 3.13
      14. Figure 3.14
      15. Figure 3.15
      16. Figure 3.16
      17. Figure 3.17
      18. Figure 3.18
      19. Figure 3.19
      20. Figure 3.20
      21. Figure 3.21
      22. Figure 3.22
      23. Figure 3.23
      24. Figure 3.24
      25. Figure 3.25
      26. Figure 3.26
      1. Table 3.1
      2. Table 3.2
      3. Table 3.3
      4. Table 3.4
      5. Table 3.5
      6. Table 3.6
      7. Table 3.7
      8. Table 3.8
      9. Table 3.9
      10. Table 3.10
      11. Table 3.11
      12. Table 3.12
      13. Table 3.13
      14. Table 3.14
      15. Table 3.15
      16. Table 3.16
      17. Table 3.17
      18. Table 3.18
  9. Chapter 4: Making IT Better: Managing Changes, Risks, and Quality
    1. 4.1 Managing Changes
      1. 4.1.1 Managing Changes in the Traditional Approach
      2. 4.1.2 Managing Changes in the Agile Methods
      3. 4.1.3 Configuration Management
        1. 4.1.3.1 Configuration Management Goals and Practices
        2. 4.1.3.2 Versioning Systems and Software Evolution Models
    2. 4.2 Risk Management
      1. 4.2.1 Define Standards
      2. 4.2.2 Identify Risks
      3. 4.2.3 Some Common Risks in Software Development
      4. 4.2.4 Classify Risks
      5. 4.2.5 Risk Management Strategies
      6. 4.2.6 Budgeting for Risks
      7. 4.2.7 Risk Monitoring and Control
        1. 4.2.7.1 Review and Share
        2. 4.2.7.2 Apply Contingency Plans
        3. 4.2.7.3 Revise and Iterate
    3. 4.3 Quality Management
      1. 4.3.1 Quality Planning
      2. 4.3.2 Quality Assurance
      3. 4.3.3 Quality Control
      4. 4.3.4 Establishing a Metrics Program
        1. 4.3.4.1 Size Metrics
        2. 4.3.4.2 Complexity Metrics
        3. 4.3.4.3 Quality Metrics
    4. 4.4 Questions and Topics for Discussion
    5. References
      1. Figure 4.1
      2. Figure 4.2
      3. Figure 4.3
      4. Figure 4.4
      5. Figure 4.5
      6. Figure 4.6
      7. Figure 4.7
      8. Figure 4.8
      9. Figure 4.9
      1. Table 4.1
      2. Table 4.2
      3. Table 4.3
      4. Table 4.4
  10. Chapter 5: Making IT Perfect: Managing People and Organizing Communication
    1. 5.1 Managing People
      1. 5.1.1 Define Staff Requirements
      2. 5.1.2 Selecting Internal Staff
      3. 5.1.3 Selecting External Staff
      4. 5.1.4 Managing Staff
      5. 5.1.5 Management Styles
    2. 5.2 Project Organization Structures
      1. 5.2.1 Hierarchical
      2. 5.2.2 Matricial Organizations
      3. 5.2.3 RACI Matrix
      4. 5.2.4 Agile Teams
    3. 5.3 Managing Communication
      1. 5.3.1 Planning a Communication Strategy
      2. 5.3.2 Communication Styles
      3. 5.3.3 Meetings
        1. 5.3.3.1 Managing Meetings
        2. 5.3.3.2 Types of Meetings
          1. 5.3.3.2.1 Kick-Off Meetings
          2. 5.3.3.2.2 Decision-Taking Meetings
          3. 5.3.3.2.3 Audit and Review Meeting
          4. 5.3.3.2.4 Brainstorming
          5. 5.3.3.2.5 Other Creative Techniques
        3. 5.3.3.3 Delphi
        4. 5.3.3.4 Planning Poker
    4. 5.4 Questions and Topics for Discussion
    5. References
      1. Figure 5.1
      2. Figure 5.2
      3. Figure 5.3
      4. Figure 5.4
      1. Table 5.1
      2. Table 5.2
      3. Table 5.3
  11. Chapter 6: Software Project Pricing
    1. 6.1 From Cost to Pricing
    2. 6.2 Software Pricing
      1. 6.2.1 Software Pricing Models
      2. 6.2.2 Selling and Licensing Software
      3. 6.2.3 Open Source Software
    3. 6.3 Project Pricing Strategies
      1. 6.3.1 Determining the Project Price
      2. 6.3.2 Contractual Agreements
      3. 6.3.3 Contractual Agreements and Project Budget
    4. 6.4 Procurement and Outsourcing
      1. 6.4.1 Vendor Solicitation
      2. 6.4.2 Procurement Timing Activities
    5. 6.5 An Example
    6. 6.6 Questions and Topics for Discussion
    7. References
      1. Figure 6.1
      2. Figure 6.2
      1. Table 6.1
      2. Table 6.2
      3. Table 6.3
  12. Chapter 7: Managing Software Development Projects
    1. 7.1 Project Life Cycles
    2. 7.2 From Traditional to Agile
      1. 7.2.1 The Waterfall
      2. 7.2.2 The V-Model
      3. 7.2.3 The Rational Unified Process
      4. 7.2.4 The Spiral
      5. 7.2.5 Prototyping/Evolutionary
      6. 7.2.6 Cleanroom Software Engineering
    3. 7.3 Agile Methodologies
      1. 7.3.1 Extreme Programming
      2. 7.3.2 Dynamic System Development Method
      3. 7.3.3 Scrum
      4. 7.3.4 Kanban
    4. 7.4 Open Source Development Practices
      1. 7.4.1 Open Source Development Challenges
      2. 7.4.2 An Open Source Development Process
        1. 7.4.2.1 Open Source Project Steering
        2. 7.4.2.2 Open Source Development
        3. 7.4.2.3 Open Source Releases
    5. 7.5 Questions and Topics for Discussion
    6. References
      1. Figure 7.1
      2. Figure 7.2
      3. Figure 7.3
      4. Figure 7.4
      5. Figure 7.5
      6. Figure 7.6
      7. Figure 7.7
      8. Figure 7.8
      9. Figure 7.9
      10. Figure 7.10
      11. Figure 7.11
      1. Table 7.1
  13. Chapter 8: Development and Management Standards
    1. 8.1 Microsoft Solutions Framework
      1. 8.1.1 Foundational Principles
      2. 8.1.2 Team Model
      3. 8.1.3 Process Model
      4. 8.1.4 Disciplines
    2. 8.2 PMBOK<span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="cSuperscript">&#174;</span> Guide Guide
      1. 8.2.1 Knowledge Areas
      2. 8.2.2 Process Groups
      3. 8.2.3 Processes
      4. 8.2.4 PMBOK<span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="cSuperscript">&#174;</span> Guide for Software Development Guide for Software Development
    3. 8.3 NASA Practices
      1. 8.3.1 NASA System Engineering Practices
      2. 8.3.2 NASA Software Management Process Requirements
      3. 8.3.3 NASA Software Development Practices
    4. 8.4 PRINCE2<span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="cSuperscript">&#174;</span>
      1. 8.4.1 PRINCE2<span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="cSuperscript">&#174;</span> Process Model Process Model
        1. 8.4.1.1 Starting a Project
        2. 8.4.1.2 Initiating a Project
        3. 8.4.1.3 Directing a Project
        4. 8.4.1.4 Controlling a Stage
        5. 8.4.1.5 Managing Product Delivery
        6. 8.4.1.6 Managing Stage Boundaries
        7. 8.4.1.7 Closing a Project
        8. 8.4.1.8 Planning
      2. 8.4.2 PRINCE2<span xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" class="cSuperscript">&#174;</span> Components Components
        1. 8.4.2.1 Business Case
        2. 8.4.2.2 Organization
        3. 8.4.2.3 Plans
        4. 8.4.2.4 Control
        5. 8.4.2.5 Change Control
    5. 8.5 Capability Maturity Model Integration
    6. 8.6 Questions and Topics for Discussion
    7. References
      1. Figure 8.1
      2. Figure 8.2
      3. Figure 8.3
      1. Table 8.1
      2. Table 8.2
      3. Table 8.3
  14. Chapter 9: Open Source Tools for Managing Projects
    1. 9.1 Project Information Flow
    2. 9.2 Basic Infrastructure
    3. 9.3 Basic + Infrastructure
    4. 9.4 Collaborative Document Writing
    5. 9.5 Management Infrastructure
    6. References
      1. Figure 9.1