CSE320 Unit 5 Notes

Unit V: Software Project Management

Introduction to Project Management

Definition of Project Management

Project Management is the discipline of planning, organizing, securing, controlling, and managing resources to achieve specific goals within a defined scope, timeline, and budget. It involves applying knowledge, skills, tools, and techniques to project activities to meet or exceed stakeholder needs and expectations.

  • Key Aspects:
    • Initiating: Defining the project at a broad level.
    • Planning: Establishing the scope, objectives, and procedures.
    • Executing: Coordinating people and resources to carry out the plan.
    • Monitoring and Controlling: Tracking progress and making necessary adjustments.
    • Closing: Formal completion and handover of the project.

Importance in Software Engineering

  • Timely Delivery: Ensures software projects are completed within the agreed time frame.
  • Budget Management: Keeps project costs under control, avoiding overruns.
  • Quality Assurance: Maintains standards to deliver a high-quality software product.
  • Resource Optimization: Efficient allocation and use of human resources, tools, and equipment.
  • Risk Management: Identifies potential risks and implements mitigation strategies.
  • Stakeholder Satisfaction: Aligns project outcomes with the expectations of clients and end-users.
  • Scope Management: Prevents scope creep by managing changes to project scope.

Key Concepts

  • Project:

    • A temporary endeavor undertaken to create a unique product, service, or result.
    • Defined by scope, time, and cost constraints.
  • Stakeholders:

    • Individuals or organizations actively involved in the project or whose interests may be positively or negatively affected.
    • Types of Stakeholders:
      • Primary Stakeholders: Directly involved (e.g., project team, customers).
      • Secondary Stakeholders: Indirectly affected (e.g., suppliers, regulators).
  • Constraints (Project Management Triangle):

    • Scope: The work required to deliver the product, service, or result.
    • Time: The schedule for completing the project.
    • Cost: The budget allocated for the project.
    • Quality: The standard or specification that the project must meet.
    • Resources: Availability of personnel, equipment, and materials.
    • Risk: Potential events that may affect the project negatively or positively.

Project Planning and Control

Project Planning

Project Planning involves defining the project's objectives and determining the appropriate course of action to achieve those objectives.

Objectives of Project Planning

  • Define Clear Goals and Objectives:

    • Establish what the project aims to achieve.
    • Align objectives with organizational strategy.
  • Establish Scope and Deliverables:

    • Define the boundaries of the project.
    • Identify the tangible and intangible outputs.
  • Develop a Roadmap:

    • Outline the steps required to complete the project.
    • Provide guidance on execution and delivery.

Steps in Project Planning

  1. Define Project Scope

    • Scope Statement:
      • Documents the project's purpose, objectives, deliverables, inclusions, exclusions, constraints, and assumptions.
    • Techniques:
      • Requirements Gathering: Interviews, surveys, workshops.
      • Scope Management Plan: Describes how scope will be defined, validated, and controlled.
  2. Develop Work Breakdown Structure (WBS)

    • Definition:
      • A hierarchical decomposition of the total scope into manageable components.
    • Purpose:
      • Organizes work into smaller, more manageable pieces.
    • Process:
      • Identify major deliverables.
      • Break down deliverables into smaller work packages.
  3. Estimate Resources and Durations

    • Resource Identification:
      • Determine the types and quantities of resources required.
      • Resources Include:
        • Human Resources: Skill sets, team size.
        • Physical Resources: Equipment, software tools.
    • Duration Estimation:
      • Estimate the time required to complete each task.
      • Methods:
        • Expert judgment.
        • Analogous estimating.
        • Parametric estimating.
  4. Set Milestones and Deliverables

    • Milestones:
      • Significant events or points in the project timeline.
      • Serve as checkpoints to measure progress.
    • Deliverables:
      • Measurable, tangible outputs produced during the project.
      • Should be clearly defined and agreed upon.
  5. Identify Dependencies

    • Task Sequences:
      • Determine the order in which tasks must be performed.
    • Types of Dependencies:
      • Finish-to-Start (FS): A task cannot start until a preceding task finishes.
      • Start-to-Start (SS): A task cannot start until another task starts.
      • Finish-to-Finish (FF): A task cannot finish until another task finishes.
      • Start-to-Finish (SF): A task cannot finish until another task starts.
  6. Risk Management Plan

    • Risk Identification:
      • Recognize potential risks that could affect the project.
    • Risk Analysis:
      • Assess the likelihood and impact of risks.
    • Risk Response Planning:
      • Develop strategies to mitigate or avoid risks.
    • Risk Register:
      • A document listing identified risks and their management plans.
  7. Communication Plan

    • Purpose:
      • Ensure effective communication among stakeholders.
    • Components:
      • Stakeholder Analysis: Identify who needs information.
      • Information Needs: What information is required.
      • Communication Methods: Meetings, emails, reports.
      • Frequency: How often communication will occur.

Project Control

Project Control involves monitoring project performance to ensure that project objectives are achieved.

Purpose of Project Control

  • Monitor Progress:
    • Track actual performance against the plan.
  • Identify Variances:
    • Detect deviations from the plan.
  • Implement Corrective Actions:
    • Adjust activities to align with project objectives.
  • Ensure Efficient Use of Resources:
    • Optimize resource allocation and utilization.

Techniques for Project Control

  1. Progress Tracking

    • Status Reports:
      • Regular updates on project progress.
    • Meetings:
      • Daily stand-ups, weekly reviews.
    • Progress Metrics:
      • Percentage of work completed versus planned.
  2. Performance Metrics

    • Key Performance Indicators (KPIs):
      • Schedule Variance (SV): SV = EV - PV (Earned Value - Planned Value).
      • Cost Variance (CV): CV = EV - AC (Earned Value - Actual Cost).
      • Schedule Performance Index (SPI): SPI = EV / PV.
      • Cost Performance Index (CPI): CPI = EV / AC.
  3. Change Management

    • Change Control Process:
      • Formal mechanism to handle changes in scope, schedule, or cost.
    • Change Request Forms:
      • Document proposed changes and their impact.
    • Change Control Board (CCB):
      • Group responsible for approving or rejecting changes.
  4. Issue Tracking

    • Issue Log:
      • Records issues, their status, and resolutions.
    • Prioritization:
      • Classify issues based on urgency and impact.
    • Resolution Strategies:
      • Assign responsibility and deadlines for resolving issues.
  5. Quality Control

    • Quality Assurance Activities:
      • Reviews, audits, and inspections.
    • Testing:
      • Unit testing, integration testing, system testing.
    • Quality Metrics:
      • Defect density, test coverage, failure rate.

Cost Estimation

Importance of Cost Estimation

  • Budgeting:
    • Provides a financial framework for project execution.
  • Resource Allocation:
    • Determines the financial resources needed.
  • Decision-Making:
    • Assists stakeholders in deciding whether to proceed with the project.
  • Project Feasibility:
    • Evaluates if the project is viable within budget constraints.

Estimation Techniques

  1. Expert Judgment

    • Description:
      • Relies on the intuition and experience of project experts to estimate costs.
    • Application:
      • Used when detailed information is scarce.
    • Advantages:
      • Quick and uses specialized knowledge.
    • Disadvantages:
      • Can be biased; depends on the expert's accuracy.
  2. Analogous Estimation

    • Description:
      • Uses historical data from similar past projects to estimate costs.
    • Process:
      • Identify a previous project with similarities.
      • Adjust estimates based on differences.
    • Advantages:
      • Useful early in the project; relatively quick.
    • Disadvantages:
      • Less accurate if projects are not sufficiently similar.
  3. Parametric Estimation

    • Description:
      • Utilizes statistical relationships between historical data and variables.
    • Process:
      • Determine the cost drivers (e.g., lines of code, function points).
      • Apply a mathematical model to compute costs.
    • Advantages:
      • Can provide more accurate estimates with reliable data.
    • Disadvantages:
      • Requires valid historical data; models may be complex.
  4. Bottom-Up Estimation

    • Description:
      • Involves estimating the cost of individual work packages and summing them.
    • Process:
      • Detailed analysis of tasks at the lowest level.
      • Aggregate costs to obtain the total estimate.
    • Advantages:
      • High accuracy; considers detailed aspects.
    • Disadvantages:
      • Time-consuming; requires comprehensive task breakdown.
  5. Top-Down Estimation

    • Description:
      • Starts with the overall project cost and allocates it to lower-level components.
    • Process:
      • Estimate total cost based on high-level parameters.
      • Distribute costs among tasks based on proportions.
    • Advantages:
      • Quick; useful for initial budgeting.
    • Disadvantages:
      • May overlook details; less accurate for individual tasks.
  6. Algorithmic Models

    • Description:

      • Use mathematical formulas to estimate project costs based on variables.
    • Examples:

      • COCOMO (Constructive Cost Model):

        • Calculates effort (person-months) using the formula:

          [ \text{Effort} = a \times (\text{Size})^{b} \times M ]

          • Where:
            • Size: Estimated lines of code (in thousands).
            • a, b: Constants based on project type (Organic, Semi-Detached, Embedded).
            • M: Multiplicative factor based on cost drivers.
      • Function Point Analysis:

        • Measures the functionality provided to the user using:

          [ \text{Function Points} = \text{UFP} \times \text{VAF} ]

          • Where:
            • UFP (Unadjusted Function Points): Sum of counts of inputs, outputs, user interactions, files, and interfaces.
            • VAF (Value Adjustment Factor): Based on general system characteristics.

Factors Influencing Cost Estimates

  • Project Size and Complexity:
    • Larger, more complex projects generally require more resources.
  • Technology and Tools Used:
    • New or unfamiliar technologies may increase costs.
  • Team Experience and Skills:
    • Skilled, experienced teams may work more efficiently.
  • Project Schedule and Deadlines:
    • Tight schedules may increase costs due to overtime or additional resources.
  • Risks and Uncertainties:
    • Potential problems can add contingency costs.
  • Market Conditions:
    • Availability and cost of resources can fluctuate.
  • Regulatory Requirements:
    • Compliance with standards may require additional effort.

Estimation Best Practices

  • Use Multiple Methods:
    • Cross-verify estimates using different techniques.
  • Update Estimates Regularly:
    • Revise as more information becomes available.
  • Document Assumptions:
    • Record the basis of estimates for transparency.
  • Include Contingency Reserves:
    • Allocate funds for unexpected expenses.
  • Engage Stakeholders:
    • Involve team members and stakeholders in the estimation process.
  • Utilize Historical Data:
    • Reference past projects for benchmarking.

Project Scheduling using PERT and Gantt Charts

Introduction to Project Scheduling

Project Scheduling is the practice of organizing, planning, and controlling the timeline of a project. It involves:

  • Listing of all tasks and activities.
  • Determining their durations.
  • Establishing dependencies and sequences.
  • Assigning resources.
  • Setting start and finish dates.

Purpose:

  • Ensure projects are completed within the planned time frame.
  • Allocate resources efficiently.
  • Identify potential bottlenecks and adjust plans accordingly.

Gantt Charts

Definition

A Gantt Chart is a horizontal bar chart that visually represents the project schedule. It displays tasks along the vertical axis and time intervals along the horizontal axis.

Components of a Gantt Chart

  • Tasks/Activities:
    • Listed on the left side; represent the work to be performed.
  • Timeline:
    • Dates or time intervals across the top.
  • Bars:
    • Horizontal bars representing the duration of each task.
  • Dependencies:
    • Lines or arrows connecting tasks to show relationships.
  • Milestones:
    • Represented by symbols (e.g., diamonds) indicating significant events.
  • Progress Indicators:
    • Shading or color-coding within bars to indicate completion percentage.

Advantages

  • Visualization:
    • Provides a clear and easy-to-understand visual representation of the schedule.
  • Tracking Progress:
    • Allows monitoring of actual progress against planned timelines.
  • Resource Planning:
    • Helps identify when resources are needed.
  • Communication Tool:
    • Facilitates communication among team members and stakeholders.

Limitations

  • Complexity:
    • Can become unwieldy for large projects with many tasks.
  • Static Representation:
    • Does not easily show variability in task durations or uncertainties.
  • Dependency Management:
    • Less effective in displaying complex dependencies compared to network diagrams.

PERT (Program Evaluation and Review Technique)

Definition

PERT is a project management tool used to schedule, organize, and coordinate tasks within a project. It focuses on identifying the critical path and incorporates uncertainty by using probabilistic time estimates.

Key Concepts

  • Activities:
    • Tasks or work elements required for project completion.
  • Events/Milestones:
    • Points marking the start or end of one or more activities.
  • Network Diagram:
    • A graphical representation of activities and the precedence relationships between them.
  • Critical Path:
    • The sequence of activities that determines the minimum project duration.
    • Critical Path Activities: Tasks that, if delayed, will delay the entire project.

Estimating Activity Durations

To account for uncertainty, PERT uses three-time estimates:

  1. Optimistic Time (O):

    • The shortest time in which the activity can be completed.
    • Assumes everything goes better than expected.
  2. Most Likely Time (M):

    • The best estimate of the time required.
    • Based on normal conditions.
  3. Pessimistic Time (P):

    • The longest time the activity might take.
    • Assumes significant delays or issues occur.

Expected Time (TE) Calculation:

[ TE = \frac{O + 4M + P}{6} ]

Variance of Activity:

[ \text{Variance} = \left( \frac{P - O}{6} \right)^2 ]

Advantages

  • Uncertainty Management:
    • Incorporates variability in activity durations.
  • Critical Path Identification:
    • Helps focus on tasks that directly impact project time.
  • Probability Analysis:
    • Allows calculation of the probability of completing the project by a certain date.

Steps in PERT Scheduling

  1. Identify Activities and Milestones

    • List all tasks required to complete the project.
    • Define key events or milestones.
  2. Determine Dependencies

    • Establish the sequence of tasks.
    • Identify predecessor and successor relationships.
  3. Draw the Network Diagram

    • Use nodes to represent events.
    • Use arrows to represent activities connecting the events.
  4. Estimate Durations

    • Obtain optimistic, most likely, and pessimistic times for each activity.
    • Calculate the expected time (TE) for each task.
  5. Compute the Critical Path

    • Calculate the earliest and latest start and finish times.
    • Determine the total float (slack) for activities.
    • Identify the critical path where float is zero.
  6. Update and Monitor

    • As the project progresses, update the network diagram.
    • Adjust schedules based on actual performance.

Comparison of Gantt Charts and PERT

Aspect Gantt Charts PERT
Representation Bar chart over time Network diagram of activities
Focus Schedule visualization Task dependencies and critical path
Uncertainty Handling Does not account for time variability Incorporates uncertainty with time estimates
Complexity Handling Simple to use for less complex projects Better suited for complex projects
Use Cases Tracking progress, resource allocation Planning, scheduling, risk analysis
Advantages Easy to understand, good for communication Handles uncertainty, identifies critical tasks
Limitations May become cluttered, less effective for dependencies More complex to construct and interpret

Software Configuration Management (SCM)

Definition of SCM

Software Configuration Management (SCM) is the discipline of tracking and controlling changes in software. It involves the systematic control of changes to the configuration, ensuring the integrity and traceability of configurations throughout the software development life cycle.

  • Goals:
    • Maintain software integrity and traceability.
    • Manage and control changes systematically.

Objectives of SCM

  • Version Control:
    • Manage different versions of software artifacts.
  • Change Management:
    • Control the introduction of changes efficiently.
  • Build Management:
    • Ensure that the correct versions of components are used for building the software.
  • Release Management:
    • Plan, schedule, and control the movement of releases to test and live environments.
  • Process Management:
    • Define and enforce processes and procedures.
  • Audit and Reporting:
    • Provide an audit trail of changes and versions.

Key Elements of SCM

  1. Configuration Items (CIs)

    • Definition:
      • Components that are subject to SCM, including code files, documents, libraries, and executables.
    • Identification:
      • Assign unique identifiers to CIs for tracking.
  2. Baselines

    • Definition:
      • A formally reviewed and agreed-upon set of specifications or products that serves as a snapshot.
    • Purpose:
      • Provide a basis for further development.
      • Serve as a reference point.
  3. Repositories

    • Definition:
      • Centralized storage locations for CIs.
    • Function:
      • Store versions, track changes, facilitate collaboration.
  4. Processes and Procedures

    • Configuration Control:
      • Procedures for changing CIs.
    • Change Control Board:
      • Group that reviews and authorizes changes.
    • Status Accounting:
      • Recording and reporting of the status of CIs and changes.

Version Control Systems (VCS)

Types of VCS

  1. Local Version Control Systems

    • Description:
      • Simple database that keeps track of files' changes on the local system.
    • Limitation:
      • Does not support collaboration among multiple developers.
  2. Centralized Version Control Systems (CVCS)

    • Description:
      • Uses a single server to store all files; clients check out files from the central place.
    • Examples:
      • Subversion (SVN)
      • Concurrent Versions System (CVS)
    • Advantages:
      • Easy to administer; straightforward backup process.
    • Disadvantages:
      • Single point of failure; network dependency.
  3. Distributed Version Control Systems (DVCS)

    • Description:
      • Each client mirrors the entire repository, including its full history.
    • Examples:
      • Git
      • Mercurial
    • Advantages:
      • Offline work possible.
      • Redundancy prevents data loss.
      • Enhanced collaboration through branching and merging.

Common VCS Operations

  • Commit (Check-in):
    • Save changes to the repository.
  • Update (Check-out):
    • Retrieve changes from the repository.
  • Branching:
    • Create a separate line of development.
  • Merging:
    • Integrate changes from different branches.
  • Conflict Resolution:
    • Address discrepancies when merging changes.
  • Tagging (Labeling):
    • Mark a specific point in the repository's history as important (e.g., release versions).

Change Management Process

  1. Change Request Submission

    • Initiation:
      • Formal proposal for modification.
    • Documentation:
      • Provide details on the change, reason, and impact.
  2. Impact Analysis

    • Assessment:
      • Evaluate effects on schedule, cost, scope, and quality.
    • Stakeholder Consultation:
      • Involve relevant team members and stakeholders.
  3. Approval

    • Decision Making:
      • Determine whether to proceed with the change.
    • Change Control Board (CCB):
      • Authorizes or rejects changes.
  4. Implementation

    • Execution:
      • Apply the approved changes.
    • Versioning:
      • Update version numbers accordingly.
  5. Verification

    • Testing:
      • Ensure the change works as intended.
    • Quality Assurance:
      • Perform necessary QA activities.
  6. Release

    • Deployment:
      • Integrate the change into the production environment.
    • Communication:
      • Inform stakeholders of the release.
  7. Documentation

    • Record Keeping:
      • Update documentation to reflect changes.
    • Traceability:
      • Maintain links between change requests and implementations.

Tools for SCM

  • Git

    • Type: Distributed VCS.
    • Features:
      • Fast performance.
      • Supports branching and merging.
      • Widely adopted with extensive community support.
  • Subversion (SVN)

    • Type: Centralized VCS.
    • Features:
      • Simpler model compared to DVCS.
      • Good for projects where centralized control is desired.
  • Mercurial

    • Type: Distributed VCS.
    • Features:
      • Similar to Git, focuses on ease of use.
      • Suitable for large projects.
  • Perforce

    • Type: Centralized VCS.
    • Features:
      • Strong support for large-scale enterprise projects.
      • Advanced features for branching, merging, and access control.
  • Configuration Management Platforms

    • GitHub

      • Functionality:
        • Git repository hosting, collaboration tools, issue tracking.
      • Features:
        • Pull requests, code review, project management.
    • GitLab

      • Functionality:
        • Integrated platform for the entire DevOps lifecycle.
      • Features:
        • Continuous Integration/Continuous Deployment (CI/CD), issue tracking, wikis.
    • Bitbucket

      • Functionality:
        • Git repository hosting with integration to Atlassian tools.
      • Features:
        • Pull requests, branch permissions, Jira integration.

Benefits of SCM

  • Improved Collaboration

    • Parallel Development:
      • Multiple team members can work simultaneously without overwriting changes.
    • Version Tracking:
      • Keep track of who made changes and when.
  • Reduced Errors

    • Conflict Detection:
      • Identify and resolve code conflicts.
    • Consistent Builds:
      • Ensure builds are made from the correct source code.
  • Disaster Recovery

    • Backup:
      • Repository serves as a backup of all versions.
    • Recovery:
      • Restore lost or corrupted files from version history.
  • Audit Trail

    • Traceability:
      • Track changes back to specific requirements or bug reports.
    • Compliance:
      • Satisfy regulatory or quality standards by maintaining records.
  • Efficiency

    • Automation:
      • Automate repetitive tasks like builds and deployments.
    • Process Enforcement:
      • Ensure adherence to defined workflows and policies.

Post a Comment