1. Software Economics
Definition: Study of economic and financial aspects of software development, focusing on cost, value, productivity, and ROI.
Evolution of Software Economics
-
Historical Shifts:
-
1960s-70s: Hardware-centric. Software cost was a small fraction of total system cost; focus on hardware efficiency.
-
1980s-90s: Software-centric. Software costs dominated (60-80% of total). Productivity became a key concern.
-
2000s-Present: Value-centric. Emphasis on time-to-market, customer value, and total cost of ownership (TCO). Shift from cost estimation to value delivery.
-
-
Changes in Cost Structures:
-
Early: High hardware costs, low software labor costs.
-
Modern: Low hardware costs (cloud/commodity), high skilled labor costs. Maintenance > development costs.
-
Strategies for Enhancing Software Economics
-
Process Improvement: Adopt Agile/DevOps, CMMI, Lean to reduce waste and improve flow.
-
Reuse: Leverage open-source components, libraries, and frameworks to avoid reinvention.
-
Automation: CI/CD, automated testing to reduce manual effort and cycle time.
-
Outsourcing/Offshoring: Access lower-cost skilled labor pools.
-
Economic Metrics & ROI:
-
ROI = \(\frac{\text{Net Benefit}}{\text{Cost}} \times 100\)
-
NPV (Net Present Value), IRR (Internal Rate of Return) for project selection.
-
-
Value-Based Delivery: Prioritize features by business value (e.g., MoSCoW method).
Important Trends
-
Agile/DevOps: Shorter iterations, continuous delivery, faster feedback loops.
-
Cloud Computing: OpEx model (pay-as-you-go) vs. CapEx; elastic scaling.
-
Open-Source Leverage: Reduces licensing costs, accelerates development.
-
Incremental Funding: Release in increments to generate early revenue and validate assumptions.
Project Assessment Criteria
-
Strategic Alignment: Does it support organizational goals?
-
Technical Viability: Feasibility with current tech stack, team skills.
-
Economic Impact Evaluation: Cost-benefit analysis, NPV, risk-adjusted ROI.
[!TIP] Exam Focus: Be ready to explain how each strategy (reuse, automation) improves economics—link to reduced effort, time, or increased quality.
2. Modern Software Management Principles
Core Principles
-
Iterative Development: Build in small, usable increments; reduce risk via early feedback.
-
Risk-Driven Approach: Tackle highest risks first (technical, requirements).
-
Value-Based Prioritization: Deliver highest business value features earliest.
-
People-Centricity: Empower self-organizing teams; focus on collaboration over rigid processes.
Comparison: Conventional vs. Modern
| Aspect | Conventional (Waterfall) | Modern (Iterative/Agile) |
|---|---|---|
| Process Model | Linear, sequential phases | Iterative, incremental cycles |
| Requirements | Fixed, defined upfront | Evolving, emergent |
| Risk Handling | Late in lifecycle | Early and continuous |
| Customer Involvement | Limited to start/end | Continuous collaboration |
| Change Tolerance | Low (costly to change) | High (embraces change) |
Guiding Principles (from Agile/Lean Frameworks)
-
Continuous Improvement: Regular retrospectives to adapt process.
-
Flexibility: Respond to change over following a plan.
-
Stakeholder Collaboration: Daily/regular engagement with customers.
[!TIP] Common Pitfall: Don’t just list principles—explain why they matter (e.g., iterative development reduces "big bang" integration risk).
3. Software Lifecycle and Expectations
Phases of the Software Lifecycle (Unified Process/RUP Example)
| Phase | Primary Goal | Key Deliverables | Example |
|---|---|---|---|
| Inception | Define scope, feasibility, business case | Vision doc, initial use-case model, risk list | Feasibility study for a rural banking app |
| Elaboration | Mitigate key risks, establish architecture | Architecture baseline, refined plan, prototype | Designing offline data sync for low-connectivity areas |
| Construction | Build components, iterative development | Executable code, test suites, user manuals | Developing core transaction modules |
| Transition | Deploy, train users, stabilize system | Release build, training materials, support plan | Rolling out to village kiosks, training local operators |
Traditional Waterfall Phases: Requirements → Design → Implementation → Testing → Maintenance → Retirement.
Lifecycle Expectations
-
Phase-Specific Goals: Each phase has clear entry/exit criteria (e.g., Elaboration exit: architecture validated, risks mitigated).
-
Milestone Reviews: Lifecycle Objective Milestone (end of Elaboration), Lifecycle Architecture Milestone.
-
Decision Points: Go/No-Go decisions based on milestone reviews.
System Adaptation Over Time (Why Change is Necessary)
-
Environmental Shifts: New OS, hardware, regulations (e.g., data privacy laws).
-
Bug Fixes: Correcting defects found post-deployment.
-
Enhancement Needs: New features requested by users.
-
Technology Obsolescence: Underlying platforms/frameworks become unsupported.
Result: Without adaptation, system effectiveness degrades → technical debt accumulates → maintenance costs soar.
4. Artifacts and Architecture
Management Artifacts vs. Engineering Artifacts
| Management Artifacts | Engineering Artifacts |
|---|---|
| Project plan, schedule, budget | Source code, design diagrams, test cases |
| Status reports, risk logs | Build scripts, configuration files |
| Stakeholder communication plans | Database schemas, API specifications |
Pragmatic Artifacts
-
Definition: Artifacts tailored to project’s specific context—no "one-size-fits-all".
-
Example: A small rural project may use lightweight user stories instead of heavy SRS documents.
Model-Based Software Architecture
-
Concept: Use models (UML, SysML, ADLs) to represent architecture at multiple levels of abstraction.
-
Benefits:
-
Communication: Common visual language for stakeholders.
-
Analysis: Early simulation of performance, reliability.
-
Reuse: Architectural patterns (e.g., microservices for scalability).
-
-
Tools: Enterprise Architect, IBM Rational, ArchiMate.
Design Strategies
-
Top-Down: Start with high-level system decomposition → refine into modules.
-
Pros: Ensures holistic view, good for complex systems.
-
Cons: May miss low-level optimizations.
-
-
Bottom-Up: Start with existing components/modules → integrate into larger system.
-
Pros: Leverages reusable code, good for integration projects.
-
Cons: Risk of suboptimal overall structure.
-
Modular Design: Cohesion & Coupling
-
Purpose: Manage complexity, enable parallel development, ease maintenance.
-
Cohesion (Within a module):
-
High Cohesion (Good): Module elements are closely related (e.g.,
CalculateInterest()in aBankingmodule). -
Low Cohesion (Bad): Module performs unrelated tasks (e.g.,
PrintReport()andValidateUser()together).
-
-
Coupling (Between modules):
-
Loose Coupling (Good): Minimal dependencies; modules interact via well-defined interfaces.
-
Tight Coupling (Bad): Modules depend heavily on each other’s internal details → ripple effects from changes.
-
Rule: Aim for high cohesion, loose coupling.
5. Process Elements and Framework
Workflow Stages of the Software Process
Typical sequence (per SEI/ISO):
-
Communication: Elicit requirements from stakeholders.
-
Planning: Estimate, schedule, allocate resources.
-
Modeling: Analyze requirements, create design models.
-
Construction: Code, unit test.
-
Deployment: Deliver to users, provide support.
Note: Iterative processes cycle through these stages multiple times per increment.
Process Checkpoints
-
Milestones: Pre-defined dates for review (e.g., "Requirements Complete").
-
Reviews:
-
Technical Review: Evaluate work products (design, code).
-
Audit: Independent assessment for compliance.
-
-
Decision Gates: Formal approval to proceed to next phase (e.g., Phase-Gate® model).
Task Set
-
Definition: Collection of tasks, milestones, and work products for a specific project.
-
Selection Criteria:
-
Project size (LOC, team size)
-
Criticality (safety-critical vs. informational)
-
Innovation level (novel tech vs. well-understood)
-
Team experience
-
Process Discriminants
Factors that differentiate one project’s process from another:
-
Application domain (e.g., medical device vs. website)
-
Team skill/experience
-
Tools & technologies used
-
Organizational culture (e.g., agile vs. plan-driven)
-
Regulatory constraints
Process Measurement Tools
-
Metrics:
-
Size: LOC, Function Points (FP), Story Points.
-
Effort: Person-months (PM).
-
Quality: Defect density = \(\frac{\text{Total defects}}{\text{Size (KLOC)}}\).
-
Schedule: On-time delivery rate.
-
-
Key Performance Indicators (KPIs):
-
Schedule Variance (SV): \(SV = EV - PV\) (Earned Value - Planned Value)
-
Cost Variance (CV): \(CV = EV - AC\)
-
Productivity: \(\frac{\text{Size (FP)}}{\text{Effort (PM)}}\)
-
Key Management Indicators
-
Cost Variance (CV)
-
Schedule Variance (SV)
-
Defect Density (defects/KLOC)
-
Team Velocity (story points/iteration)
-
Customer Satisfaction (survey scores)
6. Project Organization and Team Management
Project Organization Structures
| Structure | Description | Best For |
|---|---|---|
| Functional | Team members report to functional managers (e.g., Dev Manager) | Small, stable projects |
| Matrix | Dual reporting (functional + project manager) | Medium projects, resource sharing |
| Project-Based | Full-time dedicated team reporting to PM | Large, critical projects |
| Agile/Feature Teams | Cross-functional, self-organizing, long-lived | Product development, innovation |
Roles and Responsibilities
-
Project Manager: Planning, monitoring, controlling, stakeholder communication.
-
Team Lead/Scrum Master: Facilitate team processes, remove impediments.
-
Developers: Design, code, unit test.
-
QA/Test Engineers: Test planning, execution, defect tracking.
-
Stakeholders/Customers: Provide requirements, accept deliverables.
Software Management Team
-
Composition: PM, leads, architects, key domain experts.
-
Functions:
-
Planning: Define scope, schedule, budget.
-
Monitoring: Track progress against plan.
-
Coordination: Resolve cross-team issues, manage dependencies.
-
Multidisciplinary Team in Project Planning
-
Why Needed: Rural tech projects often involve domain experts (agriculture, finance), field staff, local community reps alongside technical staff.
-
Integration: Ensure requirements are realistic, culturally appropriate, and technically feasible.
Organizing Stakeholders for Effective Engineering
-
Communication Plan: Define who needs what information, when, how (e.g., weekly demos for villagers, monthly reports to funders).
-
RACI Matrix: Assign Responsible, Accountable, Consulted, Informed for key tasks.
-
Decision-Making Framework: Clarify who approves scope changes, budget reallocation.
7. Planning and Control
Iterative Process Planning
-
Approach: Plan increments (e.g., 2-4 week iterations). Each increment delivers a subset of features.
-
Planning Steps:
-
Identify core architectural risks → plan early iterations to address them.
-
Prioritize use cases by business value and risk.
-
Define iteration goals and task breakdown.
-
-
Example: For a rural health app:
-
Iteration 1: Offline patient registration (high risk: data sync).
-
Iteration 2: Basic diagnosis flow (high value).
-
Project Control and Process Instrumentation
Four-Step Process:
-
Measure: Collect data (effort, defects, schedule).
-
Evaluate: Compare actual vs. plan (Earned Value Analysis).
-
Adjust: Take corrective actions (replan, add resources, descope).
-
Report: Communicate status to stakeholders.
Success Factors in Project Control System
-
Accurate data (automated tracking tools).
-
Timely feedback (daily stand-ups, weekly reviews).
-
Clear accountability (RACI).
-
Realistic baselines (estimates based on historical data).
Common Problems in Project Control
-
Inaccurate estimates: Optimism bias, missing requirements.
-
Scope creep: Uncontrolled requirement additions.
-
Resource conflicts: Shared resources, skill gaps.
-
Poor communication: Silos, unclear reporting.
Risk Management
-
Identification Techniques: Brainstorming, checklists, SWOT analysis, historical data review.
-
Monitoring: Risk register, periodic reviews, trigger-based alerts.
-
Mitigation Strategies:
-
Avoid: Change plan to eliminate risk.
-
Transfer: Outsource, insure.
-
Mitigate: Reduce probability/impact (e.g., prototyping).
-
Accept: Document, contingency plan.
-
Warning Signs of Project Jeopardy & Corrective Actions
| Warning Sign | Possible Cause | Corrective Action |
|---|---|---|
| Schedule slippage > 10% | Unrealistic estimates, scope creep | Replan, negotiate deadline, descope |
| Defect density increasing | Rushed coding, poor testing | Allocate time for refactoring, improve test coverage |
| Team morale low | Overwork, unclear goals | Team building, clarify objectives, adjust workload |
| Stakeholder dissatisfaction | Poor communication, missed expectations | Increase demo frequency, revise requirements |
Estimation Techniques
-
Effort/Time/Cost Models:
-
COCOMO (Constructive Cost Model):
\[ E = a \times (KLOC)^b \quad \text{(Effort in person-months)} \]
\[ D = c \times (E)^d \quad \text{(Development time in months)} \]
Where \(a, b, c, d\) are constants based on project type (Organic, Semi-detached, Embedded).
-
Function Points (FP): Measure functionality from user view. Convert to LOC via language-dependent factor.
-
-
Project Budgeting:
-
Bottom-up: Estimate tasks → sum.
-
Top-down: Use historical data + adjust for size/complexity.
-
-
Improvement Methods: Use historical databases, calibrate models, three-point estimation (PERT: \( \text{Estimate} = \frac{O + 4M + P}{6} \)).
8. Technical Practices and Standards
Programming Practices and Coding Standards
-
Importance:
-
Quality: Reduces defects, improves readability.
-
Maintainability: Easier for new developers to understand.
-
Teamwork: Consistent style enables collaboration.
-
Knowledge Sharing: Code becomes documentation.
-
-
Examples: Naming conventions (camelCase), indentation, comment standards, code review mandates.
Modular Design Deep Dive
-
Achieving High Cohesion:
-
Group related functions (e.g., all file I/O in
FileHandlermodule). -
Avoid "god classes" that do everything.
-
-
Achieving Loose Coupling:
-
Use interfaces/abstract classes.
-
Minimize shared data; pass parameters explicitly.
-
Dependency Injection to invert control.
-
-
Impact:
-
Testing: Isolated modules easier to unit test.
-
Reuse: Loose coupling allows modules to be used in different contexts.
-
Software Configuration Management (SCM)
-
Process:
-
Version Control: Track changes (Git, SVN).
-
Change Control: Review/approve changes (Change Request → CAB approval).
-
Status Accounting: Record status of each change (who, when, why).
-
Audits: Verify integrity of baselines (configuration audits).
-
-
Necessity:
-
Traceability: Link requirements → design → code → tests.
-
Rollback Capability: Recover from faulty releases.
-
Collaboration Integrity: Prevent overwrites, manage parallel work.
-
Baseline Management: Freeze versions for release/audit.
-
9. Process Automation
Definition and Purpose
-
Definition: Use of tools/scripts to execute repetitive software process tasks without manual intervention.
-
Purpose:
-
Reduce manual effort & human error.
-
Ensure consistency and repeatability.
-
Enable continuous integration/delivery.
-
Provide real-time metrics.
-
Process Automation Structure
-
Tools: Jenkins, GitLab CI, Ansible, Selenium.
-
Scripts: Build scripts (Make, Ant), deployment scripts.
-
Workflows: Defined sequence (e.g., commit → build → test → deploy).
-
Integration Points: Link between tools (e.g., JIRA → Git → Jenkins).
How Process Automation Works (Example: CI/CD Pipeline)
-
Commit: Developer pushes code to repository.
-
Build: Automated build compiles code, runs static analysis.
-
Test: Automated unit/integration tests execute.
-
Deploy: If tests pass, deploy to staging/production.
-
Feedback: Notify team of build/test results.
Four Stages of Process Automation
-
Manual: All steps done by hand.
-
Automated: Repetitive tasks scripted (e.g., automated build).
-
Integrated: Tools chained together (CI/CD pipeline).
-
Intelligent (Adaptive): AI/ML for predictive analytics, auto-remediation (e.g., auto-scaling based on load).
Automation’s Impact on Software Economics
-
Reduced Cycle Time: Faster time-to-market.
-
Lower Defect Rates: Early detection via automated testing.
-
Optimized Resource Use: Less time on repetitive tasks → more on high-value work.
-
Improved Predictability: Consistent processes → reliable estimates.
10. Software Maintenance
Definition and Importance
-
Definition: Modifications to software after delivery to correct faults, improve performance, or adapt to environment changes.
-
Importance: Sustains system value; typically consumes 60-80% of total lifecycle cost.
Types of Maintenance Activities
| Type | Purpose | Example |
|---|---|---|
| Corrective | Fix defects (bugs) | Patch security vulnerability |
| Adaptive | Adapt to environment changes | Update app for new Android version |
| Perfective | Enhance functionality/performance | Add new report feature, optimize query speed |
| Preventive | Prevent future problems (proactive) | Refactor legacy code to reduce technical debt |
Maintenance Challenges in Real-World Environments
-
Legacy Systems: Outdated tech, lack of documentation, obsolete skills.
-
Documentation Gaps: Missing design specs, comments.
-
Evolving Requirements: Users request changes post-deployment.
-
Resource Constraints: Maintenance often underfunded vs. new development.
-
Knowledge Loss: Original developers leave.
11. Process Improvement
Improving Software Processes
-
Frameworks:
-
CMMI (Capability Maturity Model Integration): 5-level model (Initial → Optimizing). Focus on process standardization.
-
Lean: Eliminate waste (Muda), optimize flow. Principles: amplify learning, decide late, deliver fast.
-
Six Sigma: DMAIC (Define, Measure, Analyze, Improve, Control) for defect reduction.
-
Agile Retrospectives: Regular team reflections to adapt process.
-
Process Measurement and Analysis
-
Use Metrics to:
-
Identify bottlenecks: e.g., long test cycle time → automate testing.
-
Benchmark: Compare against industry averages (e.g., defect density).
-
Drive incremental change: Small, frequent improvements vs. big-bang changes.
-
-
Key Metrics: Cycle time, lead time, escape defects, team happiness index.
-
Analysis Tools: Control charts, Pareto analysis, root cause analysis (5 Whys).
[!TIP] Exam Strategy: When asked about process improvement, mention measurement first—"You can't improve what you don't measure." Link framework choice to project context (e.g., CMMI for large contracts, Agile for innovation).