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.
Introduction
What is a Project
Projects and Operational Work
Programs, Subprojects, and Portfolios
Programs
Subprojects
Portfolios
What is a Software Project
Application Development
Process and Systems Reengineering Services
System Integration Services
Other Types of Projects
Managing Projects
The Project Manager and the Project Stakeholder
Project Stakeholders
Code of Conducts and Ethical Aspects
Software Project Management
Goals and Organization of the Book
Further References
Questions and Topics for Discussion
References
The Basics: Software Development Activities and Their Organization
Software Requirements Definition
Requirements Elicitation
Requirements Structuring
User Experience Design
Requirements Validation
Business Modeling
Mapping the Organizational Structure
Modeling the Business Processes
Mapping the Existing IT Infrastructure
Mapping Business Entities
Design and Implementation
System Design
Implementation
Verification and Validation
Testing
Organizing Testing Activities
Test Plan Definition
Test Execution and Reporting
Deployment
Operations and Maintenance
Supporting and Monitoring Operations
Maintenance
Organizing Support and Maintenance Activities
Questions and Topics for Discussion
References
Making IT Right: Managing Goals, Time, and Costs
Before You Start: Assessing Value and Risks
Project Value: Aspects to Consider
Project Risks: Aspects to Consider
Techniques to Assess Value and Risks
Financial Methods
Score Matrices
SWOT Analysis
Stakeholder Analysis
Assessing Sustainability
A Recap of Project Selection Techniques
The Project Feasibility Document
Formalizing the Project Goals
Project Goals and Requirements
Project Assumptions and Constraints
Project Outputs and Control Points
Project Roster
Deciding the Work
Building a WBS
WBS Decomposition Styles
WBS Dictionary
WBS Construction Methodologies
Estimating
Effort, Duration, and Resources
The "Quick" Approach to Estimation
The Uncertainty of Estimations
PERT
Algorithmic Techniques
Function Points
COCOMO
Web Objects
Effort and Project Phases
Scheduling a Plan
Identify Dependencies among Activities
Type of Dependencies
Lead and Lag Time
Network Graphs
Identify the Critical Path
Allocate and Level Resources
Qualifying the Resources Needed for a Task
Specifying Resource Availability
Allocating Resources to a Plan
The Gantt Chart
Optimizing a Plan
Renegotiating Goals and Deadlines
Phase the Project
Project Crashing
Fast Tracking
Critical Chain Management
Budgeting and Accounting
Project Costs
Cost Element Structures
Determining the Project Costs
Managing Project Costs
Project Execution
Kicking Activities Off
Collect the Output of Activities
Collect Information about the Project Status
The Project Routine in Agile Methods
Project Monitoring and Control
Bookkeeping Your Plan: Actual Start and End Dates
Monitoring Time and Work
Monitoring Costs
An Integrated Approach: Earned Value Analysis
Planned Value
Actual Costs
Earned Value
Assessing a Plan Health Using Earned Value Analysis
Some Considerations about Earned Value Analysis
Monitoring Progress, the Agile Way
Agile-Earned Value Analysis
Project Closing
Getting Client Acceptance
Installing Project Deliverables
Archiving Old Deliverables
Documenting the Project
Performing a Financial Closure
Post-Implementation Audit
Staff-Releasing
An Example
Initiating
Building a Plan
Creating a Budget for the Project
Changing the Plan to Meet External Deadlines
Changing the Project Approach
Reducing or Changing the Project Scope
Allocating Resources More Efficiently
Fast Tracking the Plan
Questions and Topics for Discussion
References
Making IT Better: Managing Changes, Risks, and Quality
Managing Changes
Managing Changes in the Traditional Approach
Managing Changes in the Agile Methods
Configuration Management
Configuration Management Goals and Practices
Versioning Systems and Software Evolution Models
Risk Management
Define Standards
Identify Risks
Some Common Risks in Software Development
Classify Risks
Risk Management Strategies
Budgeting for Risks
Risk Monitoring and Control
Review and Share
Revise and Iterate
Quality Management
Quality Planning
Quality Assurance
Quality Control
Establishing a Metrics Program
Size Metrics
Complexity Metrics
Quality Metrics
Questions and Topics for Discussion
References
Making IT Perfect: Managing People and Organizing Communication
Managing People
Define Staff Requirements
Selecting Internal Staff
Selecting External Staff
Managing Staff
Management Styles
Project Organization Structures
Hierarchical
Matricial Organizations
RACI Matrix
Agile Teams
Managing Communication
Planning a Communication Strategy
Communication Styles
Meetings
Managing Meetings
Types of Meetings
Delphi
Planning Poker
Questions and Topics for Discussion
References
Software Project Pricing
From Cost to Pricing
Software Pricing
Software Pricing Models
Selling and Licensing Software
Open Source Software
Project Pricing Strategies
Determining the Project Price
Contractual Agreements
Contractual Agreements and Project Budget
Procurement and Outsourcing
Vendor Solicitation
Procurement Timing Activities
An Example
Questions and Topics for Discussion
References
Managing Software Development Projects
Project Life Cycles
From Traditional to Agile
The Waterfall
The V-Model
The Rational Unified Process
The Spiral
Prototyping/Evolutionary
Cleanroom Software Engineering
Agile Methodologies
Extreme Programming
Dynamic System Development Method
Scrum
Kanban
Open Source Development Practices
Open Source Development Challenges
An Open Source Development Process
Open Source Project Steering
Open Source Development
Open Source Releases
Questions and Topics for Discussion
References
Development and Management Standards
Microsoft Solutions Framework
Foundational Principles
Team Model
Process Model
Disciplines
PMBOK Guide
Knowledge Areas
Process Groups
Processes
PMBOK Guide for Software Development
NASA Practices
NASA System Engineering Practices
NASA Software Management Process Requirements
NASA Software Development Practices
PRINCE2
PRINCE2 Process Model
Starting a Project
Initiating a Project
Directing a Project
Controlling a Stage
Managing Product Delivery
Managing Stage Boundaries
Closing a Project
Planning
PRINCE2 Components
Business Case
Organization
Plans
Control
Change Control
Capability Maturity Model Integration
Questions and Topics for Discussion
References
Open Source Tools for Managing Projects
Project Information Flow
Basic Infrastructure
Basic + Infrastructure
Collaborative Document Writing
Management Infrastructure
References
Index
Biography
Adolfo Villafiorita PhD, is a senior researcher at Fondazione Bruno Kessler where he leads the ICT4G unit, whose mission is the use of ICT to foster social and economic development. With long experience in the area of formal verification, he has led various technology transfer and development projects in the national and international context. He is a contract professor at the University of Trento, where he teaches software project management.