0% found this document useful (0 votes)
9 views3 pages

Software Engineering Estimation & Design Principles

The document covers key software engineering topics including software project estimation techniques such as expert judgment and algorithmic models, project scheduling steps, and design principles for creating reliable software systems. It emphasizes the importance of high cohesion and low coupling in software design for easier maintenance and better reusability. Additionally, it provides a numerical example using the COCOMO model for estimating effort and duration in software projects.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views3 pages

Software Engineering Estimation & Design Principles

The document covers key software engineering topics including software project estimation techniques such as expert judgment and algorithmic models, project scheduling steps, and design principles for creating reliable software systems. It emphasizes the importance of high cohesion and low coupling in software design for easier maintenance and better reusability. Additionally, it provides a numerical example using the COCOMO model for estimating effort and duration in software projects.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

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.

You might also like