Software Engineering Topics Summary
1. Software Project Estimation (Numerical + Theory)
Software project estimation means predicting the effort, time, and cost required to develop
a software system.
Estimation Techniques:
1. Expert Judgment – Based on experience of similar past projects.
2. Delphi Technique – Group of experts give estimates anonymously, and results are
averaged.
3. Algorithmic Models – Use mathematical formulas, e.g., COCOMO model.
4. Top-Down Estimation – Estimate total project, then divide into smaller parts.
5. Bottom-Up Estimation – Estimate small components first, then sum them up.
Numerical Example (COCOMO Model):
Formula:
Effort (E) = a × (KLOC)^b
Development Time (D) = c × (E)^d
Constants for different project types:
Mode a b c d
Organic 2.4 1.05 2.5 0.38
Semi-detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Example: Estimate effort and time for an Organic project of 32 KLOC:
Step Formula / Calculation Result
1 E = 2.4 × (32)^1.05 E = 86.6 person-months
2 D = 2.5 × (86.6)^0.38 D = 12.5 months
✅ Effort = 86.6 person-months, Duration = 12.5 months.
2. Project Scheduling (Theory)
Project scheduling involves allocating time and resources to various project tasks to ensure
timely completion.
Steps in Project Scheduling:
1. Identify Tasks – Break project into smaller modules.
2. Determine Dependencies – Which tasks depend on others.
3. Estimate Duration – Time required for each task.
4. Assign Resources – Allocate people, tools, or systems.
5. Prepare Schedule – Using Gantt Chart or PERT/CPM.
6. Track Progress – Monitor and adjust schedule as project proceeds.
Tools Used:
• Gantt Chart – Bar chart showing tasks over time.
• PERT/CPM – Network diagrams showing task dependencies and critical path.
3. Design Principles (Theory)
Design principles are guidelines to design good software systems that are reliable,
maintainable, and scalable.
1. Modularity – Divide software into small independent modules.
2. Abstraction – Show only essential details, hide complexity.
3. Encapsulation – Bundle data and functions together.
4. Reusability – Design components that can be reused.
5. Low Coupling & High Cohesion – Modules should be independent and well-focused.
6. Information Hiding – Internal details should be hidden from others.
4. Cohesion vs Coupling
Aspect Cohesion Coupling
Meaning Degree to which elements Degree of interdependence
within a module belong between modules.
together.
Goal Achieve high cohesion. Achieve low coupling.
Good Design Each module performs one Modules interact through
well-defined function. well-defined interfaces only.
Example A module that handles all A module that directly
file input/output. accesses variables of
another module.
Result Easier maintenance, better Hard to modify and test.
reusability.
Ideal Design: High Cohesion + Low Coupling.