UNIT 2: SOFTWARE PROJECT MANAGEMENT & PROCESS ENGINEERING
1. SOFTWARE ECONOMICS
Concept: Study of financial and resource aspects of software development—costs, benefits, value, and economic decision-making throughout the project lifecycle.
Evolution Over Time:
| Era | Primary Focus | Economic Driver |
|---|---|---|
| 1960s-70s | Bespoke, custom development | Labor cost of programmers |
| 1980s | Productivity, process improvement | Reuse, structured methods |
| 1990s | Quality, time-to-market | CMM, ISO standards, OOP |
| 2000s-Present | Value, agility, ROI | Agile, DevOps, SaaS, Open Source |
Strategies for Enhancing Software Economics:
-
Reuse: Leveraging existing components, code libraries, or patterns.
-
COTS (Commercial Off-The-Shelf): Buying vs. building.
-
Platform-Based Development: Building on established frameworks (e.g., .NET, Spring).
-
Outsourcing/Offshoring: Strategic use of global talent pools.
-
Agile & Iterative Methods: Reducing waste, delivering value incrementally.
-
Automation: CI/CD, automated testing to reduce manual effort.
Important Trends:
-
Shift from cost-centric to value-centric economics.
-
Rise of subscription-based (SaaS) and pay-per-use models.
-
Total Cost of Ownership (TCO) consideration beyond initial development.
-
Technical Debt management as an economic factor.
Project Assessment Criteria:
| Criterion | Key Questions |
|---|---|
| Strategic Alignment | Does it support organizational goals? Competitive advantage? |
| Technical Viability | Is the technology feasible? Do we have the expertise? |
| Economic Impact | What is the ROI, NPV, payback period? What are the risks? |
Cost Estimating & Budgeting Improvement:
-
Methods: Expert judgment, analogous estimating, parametric models (e.g., COCOMO), bottom-up estimating.
-
Improvement: Use historical data, calibrate models, incorporate risk buffers, adopt rolling-wave planning.
[!TIP] Exam questions often ask for evolution and strategies. Structure answers chronologically for evolution and use bullet points for strategies.
2. MODERN SOFTWARE MANAGEMENT PRINCIPLES
Guiding Principles:
-
Value-Driven Delivery: Prioritize features delivering highest business value.
-
Iterative & Incremental Development: Break work into small, manageable increments.
-
Empowered, Self-Organizing Teams: Trust teams to decide "how."
-
Continuous Feedback & Adaptation: Regular inspection and adaptation.
-
Holistic View: Consider people, process, technology, and business together.
-
Risk-Driven Approach: Proactively identify and mitigate risks.
Conventional vs. Modern:
| Aspect | Conventional (Waterfall) | Modern (Agile/Iterative) |
|---|---|---|
| Planning | Comprehensive upfront | Just-in-time, rolling |
| Process | Linear, sequential | Iterative, cyclic |
| Change | Expensive, discouraged | Expected, accommodated |
| Customer Role | Requirements sign-off | Continuous collaboration |
| Measurement | Plan compliance | Value delivered, working software |
Role of Multidisciplinary Teams:
-
Bring diverse skills (dev, QA, UX, ops, business) into one team.
-
Reduces handoffs and communication delays.
-
Enables faster, more informed decision-making at the team level.
-
Fosters shared understanding of project goals and constraints.
3. SOFTWARE LIFECYCLE & PHASES (RUP/Iterative Model)
General Phases (with examples):
-
Inception: Example: Define vision, identify key stakeholders, draft business case for a new e-commerce platform.
-
Elaboration: Example: Plan architecture, resolve key technical risks (e.g., payment gateway integration), create baseline plan.
-
Construction: Example: Develop all features, conduct unit/integration testing, prepare for deployment.
-
Transition: Example: Beta release to users, training, bug fixing, final deployment to production.
Detailed Goals & Expectations:
| Phase | Primary Goal | Key Expectations/Outcomes |
|---|---|---|
| Inception | Establish scope & viability. | Vision document, initial use-case model, risk list, preliminary project plan. |
| Elaboration | Analyze problem domain, establish architectural baseline. | Stable architecture, executable prototype, refined project plan, resolved major risks. |
| Construction | Complete remaining features, ready for user deployment. | Fully integrated, tested software; user manuals; ready for transition. |
| Transition | Deploy to users, achieve satisfaction. | Beta feedback incorporated, training completed, product released, operational support in place. |
Lifecycle Expectations & Rationale for Adaptation:
-
Expectation: Each phase has specific, non-overlapping goals and exit criteria.
-
Rationale for Adaptation: Real-world environments are dynamic. Requirements evolve, technologies change, market pressures shift. A rigid lifecycle leads to irrelevant products. Adaptation (e.g., through iterations within phases) manages uncertainty and ensures the final system remains useful.
Why Systems Must Change or Become Less Useful:
-
Evolving Business Needs: Market conditions, regulations, and organizational strategies change.
-
Technological Obsolescence: Underlying platforms, libraries, or hardware become outdated.
-
Uncovered Defects & New Requirements: Post-deployment bugs and user requests accumulate.
-
Technical Debt: Short-term compromises degrade maintainability over time.
Result: Without active maintenance and evolution, the system's effectiveness and value diminish.
4. SOFTWARE DEVELOPMENT PROCESS ELEMENTS
Workflow Stages (Process Flow):
-
Communication: Stakeholder interaction, requirements gathering.
-
Planning: Estimating, scheduling, risk analysis, creating project plan.
-
Modeling: Analysis & design (UML diagrams, data models).
-
Construction: Coding, unit testing, integration.
-
Deployment: Delivery to user, installation, training.
-
Operation & Maintenance: Support, bug fixing, enhancements.
Process Checkpoints (Milestones/Reviews):
-
Purpose: Assess progress, quality, and alignment; decide on continuation.
-
Key Reviews:
-
Inception Review: Is the project worth doing?
-
Elaboration Review: Is the architecture sound and risks manageable?
-
Construction Review: Is the software ready for transition?
-
Post-Mortem: Lessons learned after project completion.
-
Task Set in Software Engineering:
-
Definition: A collection of tasks (work activities) required to accomplish a specific process framework for a project.
-
Selection Steps:
-
Identify Process Framework: Choose lifecycle model (e.g., Agile, Waterfall).
-
Assess Project Characteristics: Size, complexity, criticality, team experience.
-
Tailor the Framework: Adapt the generic process by including/excluding specific tasks from a task set library.
-
Define Entry/Exit Criteria: For each task, specify what must be true to start/complete it.
-
Process Discriminants (Differentiating Factors):
-
Process Scope & Granularity: How detailed is the process definition?
-
Level of Rigor: Prescriptive vs. flexible.
-
Degree of Automation: Manual vs. tool-supported.
-
Primary Focus: Documentation, quality, speed, innovation?
-
Stakeholder Involvement: Customer collaboration level.
Iterative Process Planning Approach:
-
Concept: Plan the project in waves/iterations, not a single upfront plan. Each iteration delivers a subset of functionality.
-
Steps:
-
Define overall project vision & high-level requirements.
-
Identify core, high-risk features for the first iteration.
-
Plan iteration 1 in detail (tasks, resources, duration).
-
Execute iteration 1, review results, adapt plan.
-
Plan next iteration based on feedback and revised priorities.
-
-
Example: In a mobile app project, Iteration 1 delivers user login & core dashboard (highest risk/value). Iteration 2 adds search functionality, etc.
5. ARTIFACTS IN SOFTWARE DEVELOPMENT
Definition: Tangible by-products, outputs, or documents produced during the software process.
Management Artifacts vs. Engineering Artifacts:
| Type | Purpose | Examples |
|---|---|---|
| Management Artifacts | Plan, track, control project. | Project plan, risk list, status reports, budget, schedule. |
| Engineering Artifacts | Define, design, build the system. | SRS, design diagrams, source code, test cases, executables. |
Pragmatics Artifacts:
-
Artifacts that describe the operational context and deployment environment of the system.
-
Examples: Hardware specifications, network diagrams, deployment scripts, user training materials, support procedures.
-
Significance: Bridge the gap between the engineered system and its real-world operational use, ensuring the system is deployable, usable, and maintainable.
Role & Significance:
-
Communication: Shared understanding among stakeholders.
-
Planning & Estimation: Basis for effort/cost prediction.
-
Control: Metrics for tracking progress and quality.
-
Knowledge Transfer: Documentation for new team members or future maintenance.
-
Legal/Contractual: Evidence of compliance, agreements (e.g., SRS).
6. SOFTWARE ARCHITECTURE & DESIGN
Model-Based Software Architecture:
-
Concept: Representing the system's high-level structure, components, and their interactions using formal models (e.g., UML diagrams, architecture description languages).
-
Explanation: Instead of textual descriptions, use standardized graphical or textual models (component diagrams, deployment diagrams, package diagrams) to define:
-
Key components and their responsibilities.
-
Connectors and communication protocols.
-
Configuration and topology.
-
Non-functional property mappings (performance, security).
-
-
Benefit: Enables analysis, simulation, and clear communication before implementation.
Design Strategies:
| Strategy | Approach | Pros | Cons |
|---|---|---|---|
| Top-Down | Start with system as a whole, decompose into subsystems/modules. | Good for understanding overall structure, managing complexity. | May miss low-level efficiency opportunities. |
| Bottom-Up | Start with existing components or low-level utilities, combine into larger systems. | Reuses proven code, can be efficient. | Risk of poor overall structure, integration challenges. |
Modular Design:
-
Purpose: Decompose a system into discrete, manageable, and replaceable modules (components) with high cohesion and low coupling.
-
Cohesion (Within a module): Degree to which elements of a module belong together.
-
High (Good): Functional cohesion (single, well-defined task).
-
Low (Bad): Coincidental cohesion (unrelated elements).
-
-
Coupling (Between modules): Degree of interdependence between modules.
-
Low (Good): Data coupling (modules share data via parameters).
-
High (Bad): Content coupling (one module modifies another's internal data).
-
Programming Practices & Coding Standards:
-
Importance: Directly impacts maintainability, readability, defect rates, and team productivity.
-
Impact:
-
Reduces Complexity: Consistent naming, formatting.
-
Facilitates Debugging & Review: Predictable code structure.
-
Enables Collaboration: New developers understand code faster.
-
Improves Quality: Standards often include best practices for error handling, security.
-
Automation: Enables use of static analysis tools (linters, formatters).
-
7. PROJECT ORGANIZATION & TEAM MANAGEMENT
Structure & Roles:
-
Functional Organization: Team members grouped by specialty (dev, QA). Project manager has limited authority.
-
Projectized Organization: Team dedicated to project, project manager has full authority.
-
Matrix Organization: Blend of both; individuals report to both functional and project managers.
-
Key Roles:
-
Project Manager: Overall responsibility for planning, execution, control.
-
Team Lead/Senior Developer: Technical leadership, task coordination.
-
Stakeholders: Customers, sponsors, end-users.
-
Configuration Manager: Manages baselines and versions.
-
Responsibilities:
-
Project Manager: Scope, time, cost, quality, risk, communication, stakeholder management.
-
Team Members: Task completion, quality work, estimation, reporting.
-
Sponsor: Provides funding, resources, champions project.
Software Management Team (Composition & Functions):
-
Composition: Typically includes Project Manager, Lead Architect, Lead Developer, QA Lead, Configuration Manager, sometimes a Business Analyst.
-
Functions:
-
Planning: Define approach, schedule, resources.
-
Monitoring & Control: Track progress against plan, manage changes.
-
Problem Solving: Remove impediments, resolve conflicts.
-
Communication: Liaison between stakeholders and technical team.
-
Quality Assurance: Ensure processes and standards are followed.
-
Organizing Stakeholders for Effective SE:
-
Identify All Stakeholders: Users, customers, sponsors, developers, testers, ops, legal, etc.
-
Analyze Interests & Influence: Power/Interest grid.
-
Define Clear Roles & Responsibilities: Use RACI matrix (Responsible, Accountable, Consulted, Informed).
-
Establish Communication Channels: Regular meetings, reports, collaboration tools.
-
Create Shared Vision & Goals: Align all parties on project objectives.
8. PROCESS AUTOMATION & IMPROVEMENT
Process Automation:
-
Definition: Use of software tools to execute, enforce, and monitor software development processes with minimal manual intervention.
-
Structure: Typically a toolchain (e.g., Jira for tracking, Git for version control, Jenkins for CI/CD, SonarQube for quality).
-
How it Works: Tools are configured to trigger actions based on events (e.g., code commit -> automated build -> automated test -> report).
Four Stages of Process Automation:
-
Manual: All steps performed by humans.
-
Automated Execution: Tools perform repetitive tasks (build, test).
-
Automated Enforcement: Tools enforce process rules (e.g., mandatory code review before merge).
-
Automated Management & Optimization: Tools analyze process data to suggest improvements (predictive analytics).
Need & Benefits (including Software Economics):
-
Need: Reduce human error, accelerate feedback, ensure consistency, handle scale.
-
Benefits:
-
Faster Delivery: CI/CD reduces cycle time.
-
Higher Quality: Automated testing catches regressions early.
-
Reduced Cost: Less manual effort, fewer defects in production.
-
Improved Economics: Shorter time-to-market, lower rework cost, better resource utilization.
-
Traceability & Compliance: Automated audit trails.
-
Examples:
-
CI/CD Pipelines: Jenkins, GitLab CI, GitHub Actions.
-
Automated Testing: Selenium, JUnit, pytest.
-
Static Code Analysis: SonarQube, Checkstyle, ESLint.
-
Infrastructure as Code (IaC): Terraform, Ansible.
-
Automated Deployment: Kubernetes, Docker Swarm.
Improving Software Processes:
-
Strategies:
-
Process Assessment: Use models like CMMI, ISO 15504 (SPICE) to identify gaps.
-
Tailoring: Adapt generic processes to project needs.
-
Piloting: Test changes on a small project/team first.
-
Training: Ensure team understands new processes.
-
Metrics & Feedback: Measure effectiveness (e.g., cycle time, defect density) and adjust.
-
Automation: As above, to enforce and streamline.
-
9. PROJECT CONTROL & RISK MANAGEMENT
Project Control Process (Four Steps & Instrumentation):
-
Plan: Establish baseline (scope, schedule, cost, quality).
-
Monitor: Collect performance data (e.g., % complete, actual cost, defect count).
-
Compare: Analyze variances (EV - PV, AC - EV) using Earned Value Management (EVM).
-
Correct: Take corrective or preventive actions (re-plan, re-allocate resources).
Instrumentation: Tools & techniques for monitoring (e.g., Gantt charts, burn-down charts, EVM metrics, issue trackers).
Success Factors in Project Control Systems:
-
Clear, measurable objectives and baselines.
-
Timely, accurate data collection.
-
Regular, structured review meetings.
-
Empowered project manager with authority to act.
-
Transparent communication of status to stakeholders.
Problems in Project Control:
-
Unrealistic baselines ("planning fallacy").
-
Poor data quality or late reporting.
-
Gold-plating (uncontrolled scope creep).
-
Resistance to reporting bad news.
-
Inadequate risk management.
Risk Identification, Monitoring & Management:
-
Identification: Brainstorming, checklists, SWOT analysis, expert judgment.
-
Analysis (Qualitative/Quantitative): Assess probability & impact; prioritize (Risk Matrix).
-
Planning: Strategies: Avoid, Mitigate, Transfer, Accept.
-
Monitoring: Track identified risks, identify new ones, review trigger conditions.
Warning Signs of Project Jeopardy & Corrective Actions:
| Warning Sign | Possible Corrective Action |
|---|---|
| Schedule slippage (tasks consistently late) | Re-plan, reduce scope (with sponsor), add resources (if possible), fast-tracking. |
| Budget overrun | Cost reduction, scope reduction, seek additional funding. |
| High defect rate | Improve QA process, allocate more time for testing, root cause analysis. |
| Low team morale/high turnover | Address workload, recognize contributions, improve work environment. |
| Key stakeholder dissatisfaction | Increase communication, re-align expectations, demonstrate progress. |
| Requirements volatility | Implement stricter change control, prioritize requirements. |
10. SOFTWARE CONFIGURATION & MAINTENANCE
Software Configuration Management (SCM):
-
Process: The management of changes to software artifacts (code, docs, models) throughout their lifecycle.
-
Key Activities:
-
Configuration Identification: What items are under control? (e.g., all source files, SRS).
-
Configuration Control: Managing changes (change requests, approvals, versioning).
-
Configuration Status Accounting: Recording and reporting status of changes.
-
Configuration Audits: Verify integrity of baselines (formal audits, functional audits).
-
-
Necessity: Without SCM, chaos ensues—lost versions, incompatible builds, inability to reproduce bugs, team conflicts. It provides traceability, reproducibility, and integrity.
Software Maintenance:
-
Definition: Modification of a software product after delivery to correct faults, improve performance, or adapt to a changed environment.
-
Types/Categories:
-
Corrective Maintenance: Fixing defects/bugs.
-
Adaptive Maintenance: Adapting to environment changes (OS, hardware, regulations).
-
Perfective Maintenance: Enhancing functionality, performance, or maintainability (non-defect related).
-
Preventive Maintenance: Proactively preventing future problems (code refactoring, updating documentation).
-
11. PROCESS MEASUREMENT & METRICS
Process Measurement Tools & Techniques:
-
Metrics Collection: Automated (CI/CD tools, APM) vs. manual (timesheets, surveys).
-
Data Analysis: Statistical process control, trend analysis, root cause analysis.
-
Visualization: Dashboards, burn-up/down charts, control charts.
-
Benchmarking: Comparing metrics against industry standards or past projects.
Key Management Indicators (KMIs) / Management Indicators:
-
Schedule: Schedule Variance (SV), Schedule Performance Index (SPI).
-
Cost: Cost Variance (CV), Cost Performance Index (CPI).
-
Scope: Requirements volatility, scope change requests.
-
Quality: Defect density, defect removal efficiency, test coverage.
-
Team: Staff turnover, morale index, velocity (Agile).
-
Customer: Customer satisfaction (CSAT), net promoter score (NPS).
12. SUPPORTING TOPICS
Project Environment (Factors Influencing Projects):
-
Organizational: Structure, culture, maturity, resource availability.
-
Technical: Technology complexity, tooling, legacy systems.
-
Market/Stakeholder: Customer involvement, competitor actions, regulatory landscape.
-
Team: Skills, experience, geographical distribution.
Requirements Analysis & Specification:
-
Activities: Elicitation (interviews, workshops), Analysis (modeling, prioritization), Specification (writing SRS), Validation (reviews, prototyping).
-
Characteristics of a Good SRS:
-
Correct & Complete.
-
Unambiguous (each requirement has one interpretation).
-
Verifiable (can be tested).
-
Consistent (no conflicting requirements).
-
Modifiable (well-structured, traceable).
-
Traceable (forward to design/code, backward to stakeholder need).
-
Importance of Software Project Planning:
-
Foundation for Control: Establishes baseline for measuring progress.
-
Risk Reduction: Identifies risks early, plans responses.
-
Resource Optimization: Ensures right people/skills are available when needed.
-
Stakeholder Alignment: Creates shared understanding of scope, schedule, cost.
-
Improves Communication: Clear plan communicates expectations to all.
-
Increases Probability of Success: "Failing to plan is planning to fail."