0% found this document useful (0 votes)
2 views83 pages

SE Sec-A

Software Engineering is a systematic approach to software development, encompassing various types of software and emphasizing the importance of understanding the problem domain. It addresses challenges such as complexity, changing requirements, and cost management while employing structured methodologies like the Software Development Life Cycle (SDLC) and various process models. Good software should be reliable, efficient, and maintainable, with a focus on quality assurance and user satisfaction.

Uploaded by

rajattaank48
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views83 pages

SE Sec-A

Software Engineering is a systematic approach to software development, encompassing various types of software and emphasizing the importance of understanding the problem domain. It addresses challenges such as complexity, changing requirements, and cost management while employing structured methodologies like the Software Development Life Cycle (SDLC) and various process models. Good software should be reliable, efficient, and maintainable, with a focus on quality assurance and user satisfaction.

Uploaded by

rajattaank48
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter - 1​

INTRODUCTION
Software Engineering – Definition

Software Engineering is a systematic, disciplined, and organized approach to the


development, operation, and maintenance of software.

2. What is Software?

Software is a collection of:

●​ Programs
●​ Data
●​ Documentation

👉 It tells the computer what to do.

3. Types of Software

(a) System Software

●​ Controls hardware and system operations


●​ Example: Operating System, Compiler

(b) Application Software

●​ Used by users to perform tasks

1
●​ Example: MS Word, Web Browser

4. Need for Software Engineering

Software Engineering is needed because:

●​ Software projects are large and complex


●​ To reduce errors and improve quality
●​ To complete projects on time
●​ To manage cost effectively
●​ To ensure proper documentation

5. Characteristics of Good Software

A good software should have:

●​ Reliability – works correctly


●​ Efficiency – uses resources properly
●​ Usability – easy to use
●​ Maintainability – easy to update
●​ Portability – works on different systems

The Problem Domain


The Problem Domain refers to the real-world environment or area where the
problem exists that the software is intended to solve.

👉 In simple words:​
It is the actual situation, system, or field for which we are developing software.

2
2. Explanation

Before developing any software, it is necessary to understand:

●​ What problem needs to be solved


●​ Who are the users
●​ How the current system works

This understanding of the real-world problem is called the Problem Domain.

3. Examples

●​ Banking system → managing accounts, transactions


●​ Hospital system → managing patients, doctors, records
●​ College system → managing students, exams, results

👉 These real-life areas are called problem domains.

4. Importance of Problem Domain

Understanding the problem domain is important because:

●​ Helps in identifying correct requirements


●​ Reduces chances of errors
●​ Improves software quality
●​ Ensures user needs are satisfied

3
●​ Makes development more efficient

Software Engineering Challenges

1. Definition

Software Engineering Challenges are the difficulties or problems faced during the
development, maintenance, and management of software systems.

2. Major Challenges in Software Engineering

1. Complexity

●​ Modern software systems are large and complex


●​ Difficult to understand and manage
●​ Many components are interconnected

2. Changing Requirements

●​ User needs keep changing


●​ Difficult to update software frequently
●​ Leads to delays and increased cost

3. Time Constraints

●​ Projects must be completed within deadlines

4
●​ Limited time affects quality

4. Cost Management

●​ Budget limitations
●​ High cost of development and maintenance
●​ Poor planning can increase expenses

5. Quality Assurance

●​ Ensuring software is error-free


●​ Requires proper testing
●​ Maintaining reliability and performance

6. Security Issues

●​ Protection from hackers and cyber threats


●​ Data privacy is very important

7. Maintenance

●​ Software needs regular updates


●​ Fixing bugs and improving features
●​ Maintenance is time-consuming and costly

5
8. Scalability

●​ Software should handle increased users or data


●​ Difficult to design scalable systems

9. Integration

●​ Combining different systems or modules


●​ Compatibility issues may arise

10. Skilled Workforce

●​ Need for trained and experienced developers


●​ Lack of skills can affect project success

Software Engineering Approach

1. Definition

The Software Engineering Approach is a systematic, disciplined, and organized


method used to develop high-quality software efficiently.

2. Explanation

6
Instead of writing code randomly, software engineering follows a step-by-step
process to:

●​ Plan
●​ Design
●​ Develop
●​ Test
●​ Maintain software

👉 This structured way is called the software engineering approach.

3. Key Features of Software Engineering Approach

1. Systematic Development

●​ Follows proper steps (SDLC)


●​ No random coding

2. Use of Models

●​ Uses models like:


○​ Waterfall Model
○​ Agile Model
○​ Spiral Model

3. Requirement Analysis

●​ Understand user needs before development


●​ Reduces errors

7
4. Modular Design

●​ Software is divided into small modules


●​ Easy to develop and manage

5. Documentation

●​ Proper records are maintained


●​ Helps in future maintenance

6. Testing and Quality Assurance

●​ Ensures software is error-free


●​ Improves reliability

7. Maintenance

●​ Continuous updates and improvements


●​ Fixing bugs after deployment

4. Advantages

●​ Improves software quality


●​ Reduces development time
●​ Better project management
●​ Easy maintenance
●​ Cost-effective in the long run

Software Development Life Cycle (SDLC)


– Detailed

8
1. Definition

The Software Development Life Cycle (SDLC) is a systematic and structured


process used to develop high-quality software through a series of well-defined
phases.

2. Objectives of SDLC

●​ To deliver high-quality software


●​ To complete the project within time and budget
●​ To ensure proper planning and control
●​ To meet user requirements effectively

3. Phases of SDLC (Detailed Explanation)

🔹 1. Requirement Gathering & Analysis


●​ First and most important phase
●​ Interaction with clients and stakeholders
●​ Collect functional and non-functional requirements

Outputs:

●​ SRS (Software Requirement Specification)

Activities:

9
●​ Requirement gathering
●​ Feasibility study (technical, economic, operational)
●​ Requirement analysis

🔹 2. System Design
●​ Converts requirements into system design
●​ Defines system architecture

Types of Design:

●​ High-Level Design (HLD): overall system structure


●​ Low-Level Design (LLD): detailed design of modules

Outputs:

●​ Design documents
●​ Flowcharts, UML diagrams

🔹 3. Implementation (Coding)
●​ Actual development of software
●​ Programmers write code based on design

Activities:

●​ Coding using programming languages


●​ Following coding standards
●​ Code reviews

10
🔹 4. Testing
●​ Ensures software is free from errors
●​ Verifies and validates the system

Types of Testing:

●​ Unit Testing – testing individual modules


●​ Integration Testing – testing combined modules
●​ System Testing – testing complete system
●​ Acceptance Testing – testing by users

🔹 5. Deployment
●​ Software is released to users
●​ Installed in real environment

Types:

●​ Pilot deployment
●​ Full deployment

🔹 6. Maintenance
●​ Longest phase of SDLC
●​ Happens after deployment

Types of Maintenance:

●​ Corrective – fixing bugs

11
●​ Adaptive – adapting to new environment
●​ Perfective – improving performance
●​ Preventive – avoiding future issues

4. SDLC Diagram (Important for Exam)

👉 Draw this flow in exam:


[Requirement] → [Design] → [Coding] → [Testing] → [Deployment] →
[Maintenance]

12
⭐⭐Chapter 2:
Software Development Process Models

A Software Process Model is a structured approach that defines how software is


developed through different stages of the SDLC.

👉 It provides a framework for planning, designing, developing, testing, and


maintaining software.

2. Why Process Models are Needed

●​ To provide a clear development structure


●​ To manage complex projects
●​ To improve software quality
●​ To complete projects on time
●​ To reduce risks

3. Types of Software Process Models

1. Waterfall Model

➤ Definition

13
A linear and sequential model where each phase must be completed before the
next begins.

➤ Phases

●​ Requirement
●​ Design
●​ Implementation
●​ Testing
●​ Deployment
●​ Maintenance

➤ Features

●​ Simple and easy to understand


●​ Follows a fixed sequence
●​ No overlapping of phases

➤ Advantages

●​ Easy to manage
●​ Well-documented
●​ Suitable for small projects

➤ Disadvantages

●​ Not flexible
●​ Difficult to handle changes
●​ Late testing

14
🔹 2. Agile Model
➤ Definition

An iterative and flexible model where software is developed in small parts called
iterations.

➤ Features

●​ Continuous feedback
●​ Customer involvement
●​ Quick delivery

➤ Advantages

●​ Flexible to changes
●​ Faster development
●​ High customer satisfaction

➤ Disadvantages

●​ Requires skilled team


●​ Less documentation
●​ Difficult to manage large projects

🔹 3. Spiral Model
➤ Definition

A risk-driven model that combines iterative development with risk analysis.

15
➤ Phases (in loop/spiral)

●​ Planning
●​ Risk Analysis
●​ Engineering
●​ Evaluation

➤ Advantages

●​ Focus on risk management


●​ Suitable for large projects
●​ Flexible

➤ Disadvantages

●​ Complex
●​ Expensive
●​ Requires expertise

🔹 4. V-Model (Verification & Validation Model)


➤ Definition

An extension of the Waterfall model where testing is done at each stage.

➤ Features

●​ Parallel testing phases


●​ Early detection of errors

➤ Advantages

16
●​ High quality
●​ Early bug detection

➤ Disadvantages

●​ Rigid
●​ Not suitable for changing requirements

🔹 5. Incremental Model
➤ Definition

Software is developed in small parts (increments) and each part is delivered step
by step.

➤ Advantages

●​ Early delivery of features


●​ Easy testing
●​ Flexible

➤ Disadvantages

●​ Requires good planning


●​ Integration issues may occur

🔹 6. Prototype Model
➤ Definition

17
A working model (prototype) is created to understand user requirements before
final development.

➤ Advantages

●​ Better understanding of requirements


●​ User involvement

➤ Disadvantages

●​ Time-consuming
●​ May increase cost

1. Waterfall Model (Detailed)

🔹 Definition
The Waterfall Model is a linear and sequential software development model in
which each phase of the development process is completed before moving to the
next phase, with no overlapping between phases.

🔹 Phases of Waterfall Model


1.​ Requirement Analysis
○​ Collect and analyze user requirements
○​ Prepare SRS document
2.​ System Design
○​ Create system architecture

18
○​ Define HLD and LLD
3.​ Implementation (Coding)
○​ Developers write code
○​ Convert design into software
4.​ Testing
○​ Detect and fix errors
○​ Perform unit, integration, system testing
5.​ Deployment
○​ Deliver software to users
6.​ Maintenance
○​ Fix bugs and update system

🔹 Diagram (Draw in Exam)


Requirement → Design → Coding → Testing → Deployment → Maintenance

🔹 Features
●​ Sequential flow
●​ No phase overlap
●​ Documentation at every stage

🔹 Advantages
●​ Simple and easy to understand
●​ Easy to manage

19
●​ Well-documented process

🔹 Disadvantages
●​ Not flexible to changes
●​ Late testing
●​ Not suitable for large/complex projects

🔹 Suitable For
●​ Small projects
●​ Projects with fixed requirements

📘 2. Prototype Model (Detailed)


🔹 Definition
The Prototype Model is a software development approach in which a working
model (prototype) of the system is developed first to understand user
requirements, and based on feedback, the final system is created.

🔹 Phases of Prototype Model


20
1.​ Requirement Gathering (Initial)
2.​ Quick Design
3.​ Build Prototype
4.​ User Evaluation
5.​ Refinement (Improve Prototype)
6.​ Final Development

🔹 Diagram (Draw in Exam)


Requirement → Quick Design → Prototype → User Feedback → Refine → Final
System

🔹 Types of Prototyping
●​ Throwaway Prototype – discarded after use
●​ Evolutionary Prototype – improved continuously

🔹 Features
●​ User involvement
●​ Early feedback
●​ Improves requirement understanding

21
🔹 Advantages
●​ Reduces requirement errors
●​ Better user satisfaction
●​ Early detection of problems

🔹 Disadvantages
●​ Time-consuming
●​ Can increase cost
●​ Too much user dependency

🔹 Suitable For
●​ Projects with unclear requirements
●​ User-interactive systems

📘 3. Iterative Model (Detailed)


🔹 Definition

22
The Iterative Model is a software development approach in which the system is
developed in small parts through repeated cycles (iterations), and each iteration
improves the previous version of the software.

🔹 Working of Iterative Model


●​ Develop a small part of software
●​ Test it
●​ Get feedback
●​ Improve and add more features
●​ Repeat until complete system is built

🔹 Phases in Each Iteration


●​ Planning
●​ Design
●​ Implementation
●​ Testing
●​ Evaluation

🔹 Diagram (Draw in Exam)


Iteration 1 → Iteration 2 → Iteration 3 → Final System

(or draw circular loop 🔥)

23
🔹 Features
●​ Repeated development cycles
●​ Continuous improvement
●​ Early delivery of partial system

🔹 Advantages
●​ Flexible to changes
●​ Early bug detection
●​ Better risk management

🔹 Disadvantages
●​ Requires good planning
●​ More management effort
●​ Can increase cost

🔹 Suitable For
●​ Large projects
●​ Projects with changing requirements

24
📊 🔥 Comparison (Very Important for
Exam)

Feature Waterfall Prototype Iterative

Flexibility Low Medium High

User Involvement Low High Medium

Risk Handling Low Medium High

Requirement Required at Not Improves over


Clarity start required time

25
Chapter 3: Software Process

🔹 1. Definition
A Software Process is a structured set of activities, methods, and practices used to
develop, deliver, and maintain software systems in a systematic and organized way.

🔹 2. What is a Software Process? (Explanation)


It defines:

●​ How software is developed


●​ What steps are followed
●​ Who performs each task

👉 It ensures software is built efficiently, correctly, and with quality.

🔹 3. Main Activities of Software Process


1. Software Specification

●​ Defines what the system should do


●​ Includes requirement gathering and analysis

26
👉 Output: SRS (Software Requirement Specification)

2. Software Development (Design & Implementation)

●​ Design system architecture


●​ Write code to build software

3. Software Validation

●​ Ensures software meets requirements


●​ Includes testing

👉 Types:
●​ Unit Testing
●​ Integration Testing
●​ System Testing

4. Software Evolution (Maintenance)

●​ Modify software after delivery


●​ Fix bugs and add new features

🔹 4. Characteristics of a Good Software Process


●​ Reliability – produces quality software
●​ Efficiency – uses time and resources well

27
●​ Maintainability – easy to update
●​ Scalability – handles growth
●​ Understandability – easy to understand

🔹 5. Types of Software Processes


(a) Generic Process

Basic process followed in all projects:

●​ Specification
●​ Development
●​ Validation
●​ Evolution

(b) Customized Process

●​ Modified according to project needs


●​ Flexible approach

Characteristics of Software Process

1. Understandability

●​ The process should be easy to understand


●​ Developers should clearly know each step

2. Visibility

28
●​ Progress of the project should be visible
●​ Milestones and results should be clearly defined

3. Reliability

●​ Process should produce consistent and correct results


●​ Leads to high-quality software

4. Maintainability

●​ Process should support easy updates and changes


●​ Helps in long-term software maintenance

5. Efficiency

●​ Proper use of time and resources


●​ Avoids unnecessary work

6. Scalability

●​ Process should handle small as well as large projects


●​ Easily adaptable to project size

7. Flexibility

29
●​ Should handle changing requirements
●​ Allows modifications during development

8. Quality Assurance

●​ Ensures proper testing and validation


●​ Maintains software standards

⭐⭐Project Management Process


🔹 Definition
The Project Management Process is a systematic approach used to plan, organize,
execute, monitor, and control software projects to achieve specific goals within
time, cost, and quality constraints.

🔹 Objectives
●​ Complete project on time
●​ Stay within budget
●​ Deliver high-quality software
●​ Meet user requirements

🔹 Phases of Project Management Process


30
🔸 1. Project Initiation
●​ Define project goals and objectives
●​ Identify stakeholders
●​ Check project feasibility

👉 Output: Project proposal

🔸 2. Project Planning
●​ Create detailed project plan
●​ Estimate time, cost, and resources
●​ Define tasks and schedule

👉 Tools:
●​ Gantt Chart
●​ PERT Chart

🔸 3. Project Execution
●​ Actual development work starts
●​ Team members perform assigned tasks
●​ Resources are utilized

🔸 4. Project Monitoring and Control


31
●​ Track project progress
●​ Compare actual vs planned work
●​ Identify and fix issues

🔸 5. Project Closure
●​ Final delivery of software
●​ Documentation completion
●​ Review project performance

🔹 Key Activities in Project Management


●​ Planning – deciding what to do
●​ Scheduling – deciding when to do
●​ Resource Management – managing people and tools
●​ Risk Management – handling risks
●​ Quality Management – ensuring standards

🔹 Role of Project Manager


●​ Plans and manages project
●​ Assigns tasks to team members
●​ Monitors progress
●​ Communicates with stakeholders
●​ Ensures project success

32
🔹 Importance of Project Management
●​ Improves project success rate
●​ Controls time and cost
●​ Ensures proper coordination
●​ Reduces risks

Software Configuration Management


(SCM) Process

🔹 Definition
Software Configuration Management (SCM) is the process of identifying,
organizing, controlling, and tracking changes in software components throughout
the software development life cycle.

👉 It ensures that all changes are properly managed and documented.

🔹 Objectives of SCM
●​ Control changes in software
●​ Maintain consistency of system
●​ Track different versions of software
●​ Improve software quality

33
●​ Avoid confusion and errors

🔹 What is Configuration?
A Configuration refers to all the components of a software system, such as:

●​ Source code
●​ Documents
●​ Design files
●​ Test cases

🔹 SCM Process Activities


🔸 1. Configuration Identification
●​ Identify and define all software components
●​ Assign unique names or IDs

👉 Example: Version 1.0, Module A

🔸 2. Configuration Control (Change Control)


●​ Manage and control changes
●​ Approve or reject change requests

👉 Prevents unauthorized changes


34
🔸 3. Configuration Status Accounting
●​ Keep records of changes made
●​ Track current status of components

👉 Answers:
●​ What changes were made?
●​ Who made them?

🔸 4. Configuration Auditing
●​ Verify that changes are correct
●​ Ensure system follows standards

👉 Types:
●​ Functional Audit
●​ Physical Audit

🔸 5. Version Control
●​ Manage different versions of software
●​ Allows rollback to previous versions

👉 Tools:
●​ Git
●​ SVN

35
🔹 SCM Tools
●​ Git
●​ GitHub
●​ SVN (Subversion)

🔹 Advantages of SCM
●​ Better control over changes
●​ Reduces errors and conflicts
●​ Improves team coordination
●​ Easy tracking of versions
●​ Supports maintenance

🔹 Disadvantages
●​ Requires proper planning
●​ Can be complex
●​ Needs skilled team

36
⭐⭐Chapter 4: Project Planning
🔹 1. Definition
Project Planning is the process of defining project objectives, estimating
resources, scheduling tasks, and preparing a roadmap to complete a software
project successfully within time and budget.

🔹 2. Objectives of Project Planning


●​ Complete project on time
●​ Stay within budget
●​ Allocate resources efficiently
●​ Reduce risks
●​ Ensure smooth project execution

🔹 3. Steps in Project Planning


🔸 1. Scope Definition
●​ Define project goals and boundaries
●​ Identify what is included and excluded

37
🔸 2. Feasibility Study
●​ Check whether the project is possible

👉 Types:
●​ Technical Feasibility – technology available or not
●​ Economic Feasibility – cost vs benefit
●​ Operational Feasibility – usability in real environment

🔸 3. Resource Estimation
●​ Estimate required:
○​ Human resources
○​ Hardware & software
○​ Time

🔸 4. Cost Estimation
●​ Calculate total project cost
●​ Include development, testing, maintenance

🔸 5. Scheduling
●​ Decide timeline of tasks

38
👉 Tools:
●​ Gantt Chart
●​ PERT Chart

🔸 6. Risk Management Planning


●​ Identify possible risks
●​ Plan how to handle them

🔹 4. Project Planning Activities


●​ Planning
●​ Scheduling
●​ Resource allocation
●​ Budgeting
●​ Risk analysis

🔹 5. Project Scheduling Techniques


🔹 (a) Gantt Chart
●​ Bar chart showing tasks vs time
●​ Easy to understand

39
🔹 (b) PERT Chart
●​ Network diagram
●​ Shows task dependencies
●​ Helps in time estimation

🔹 6. Importance of Project Planning


●​ Provides clear direction
●​ Improves coordination
●​ Reduces project failure
●​ Helps in time and cost control

🔹 7. Advantages
●​ Better resource management
●​ Early risk identification
●​ Improves efficiency
●​ Smooth workflow

⭐⭐Activities of Project Planning


🔹 Definition

40
Project Planning Activities are the tasks performed to organize, prepare, and
manage a software project before development begins.

🔹 Main Activities of Project Planning


🔸 1. Scope Planning
●​ Define project objectives and boundaries
●​ Identify what is included and excluded in the project

🔸 2. Feasibility Analysis
●​ Check whether the project is possible or not

Types:

●​ Technical Feasibility
●​ Economic Feasibility
●​ Operational Feasibility

🔸 3. Resource Planning
●​ Identify required resources:
○​ Human resources (developers, testers)
○​ Hardware and software

41
○​ Tools and technologies

🔸 4. Cost Estimation
●​ Estimate total project cost
●​ Includes development, testing, maintenance

🔸 5. Time Estimation
●​ Estimate time required for each task
●​ Helps in scheduling

🔸 6. Project Scheduling
●​ Arrange tasks in proper sequence
●​ Assign deadlines

👉 Tools:
●​ Gantt Chart
●​ PERT Chart

🔸 7. Risk Management Planning


●​ Identify possible risks
●​ Plan strategies to handle risks

42
🔸 8. Quality Planning
●​ Define quality standards
●​ Plan testing and validation

🔸 9. Communication Planning
●​ Define communication between team members
●​ Ensure proper information flow

⭐⭐COCOMO Model (Constructive Cost


Model)

🔹 Definition
The COCOMO Model (Constructive Cost Model) is a mathematical model used to
estimate the effort, time, and cost required to develop a software project based
on the size of the software.

👉 It was developed by Barry Boehm.

🔹 Purpose of COCOMO
●​ Estimate development effort (in person-months)
●​ Estimate time required

43
●​ Estimate project cost
●​ Help in project planning

🔹 1. Basic COCOMO Model


👉 Formula:
E=a×(KLOC)bE = a \times (KLOC)^bE=a×(KLOC)b

●​ E = Effort (person-months)
●​ KLOC = Thousands of lines of code
●​ a, b = Constants (depend on project type)

👉 Development Time Formula:


T=c×(E)dT = c \times (E)^dT=c×(E)d

●​ T = Time (months)
●​ E = Effort
●​ c, d = Constants

🔹 2. Types of Projects in COCOMO


🔸 1. Organic Mode
●​ Small and simple projects

44
●​ Experienced team
●​ Flexible requirements

👉 Example: College project

🔸 2. Semi-Detached Mode
●​ Medium size projects
●​ Mixed experience team

🔸 3. Embedded Mode
●​ Complex and large projects
●​ Strict requirements
●​ Hardware + software constraints

👉 Example: Banking system, Real-time systems


🔹 3. COCOMO Coefficients Table
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

45
🔹 4. Types of COCOMO Models
🔸 1. Basic COCOMO
●​ Uses only KLOC
●​ Simple estimation

🔸 2. Intermediate COCOMO
●​ Includes cost drivers (team, tools, environment)

🔸 3. Detailed COCOMO
●​ More detailed estimation
●​ Considers each phase separately

🔹 5. Advantages
●​ Easy to use
●​ Provides quick estimation
●​ Helps in project planning

🔹 6. Disadvantages
●​ Based on estimation (not 100% accurate)

46
●​ Depends on correct KLOC value
●​ Not suitable for modern agile projects

Chapter 5: Software Metrics

🔹 1. Definition
Software Metrics are quantitative measures used to evaluate the size, complexity,
quality, performance, and productivity of software and the software development
process.

🔹 2. Objectives of Software Metrics


●​ Measure software quality
●​ Estimate cost and effort
●​ Improve productivity
●​ Monitor project progress
●​ Reduce risks and errors

Importance of Software Metrics

🔸 1. Quality Measurement
●​ Helps in measuring software quality
●​ Ensures reliability and performance

47
🔸 2. Better Project Planning
●​ Helps in estimating time, cost, and effort
●​ Makes planning more accurate

🔸 3. Improves Productivity
●​ Measures developer performance
●​ Helps in increasing efficiency

🔸 4. Progress Tracking
●​ Tracks project progress at every stage
●​ Compares actual vs planned work

🔸 5. Risk Management
●​ Identifies potential risks early
●​ Helps in taking preventive actions

🔸 6. Decision Making
●​ Provides data for better decisions
●​ Helps managers choose best strategies

48
🔸 7. Cost Control
●​ Helps in managing and reducing project cost
●​ Avoids unnecessary expenses

🔸 8. Performance Evaluation
●​ Evaluates system performance
●​ Identifies areas for improvement

Categories of Software Metrics

🔸 1. Product Metrics
●​ Measure the characteristics of the final software product

👉 What it measures:
●​ Size
●​ Complexity
●​ Performance
●​ Reliability

👉 Examples:
●​ Lines of Code (LOC)
●​ Defect Density

49
●​ Response Time

🔸 2. Process Metrics
●​ Measure the software development process

👉 What it measures:
●​ Efficiency of development
●​ Error detection rate
●​ Development time

👉 Examples:
●​ Number of defects found during testing
●​ Time taken to fix bugs
●​ Process improvement rate

🔸 3. Project Metrics
●​ Measure project performance and management

👉 What it measures:
●​ Project progress
●​ Resource usage
●​ Team productivity

👉 Examples:
50
●​ Cost of project
●​ Effort required
●​ Schedule variance

Complexity Metrics (Software Metrics)

🔹 Definition
Complexity Metrics are measures used to evaluate how complex a software
program or system is. They help in understanding the difficulty of developing,
testing, and maintaining the software.

🔹 Why Complexity Metrics are Important


●​ Identify difficult and error-prone modules
●​ Improve code quality
●​ Make testing easier
●​ Reduce maintenance effort
●​ Help in better design

🔹 Types of Complexity Metrics


🔸 1. Cyclomatic Complexity
51
●​ Measures the number of independent paths in a program
●​ Proposed by McCabe

👉 Formula:
V(G)=E−N+2PV(G) = E - N + 2PV(G)=E−N+2P

●​ E = Number of edges
●​ N = Number of nodes
●​ P = Number of connected components

👉 Simple form:
V(G)=Number of Decision Points+1V(G) = \text{Number of Decision Points} +
1V(G)=Number of Decision Points+1

👉 Examples of decision points:


●​ if
●​ while
●​ for
●​ case

🔸 2. Halstead Complexity Metrics


●​ Based on operators and operands in program

👉 Measures:
●​ Program length
●​ Vocabulary
●​ Volume

52
●​ Effort

🔸 3. Lines of Code (LOC)


●​ Measures size of program
●​ More lines → more complexity (generally)

🔹 Advantages of Complexity Metrics


●​ Helps in better testing
●​ Identifies risky modules
●​ Improves maintainability
●​ Supports quality improvement

🔹 Disadvantages
●​ Not always 100% accurate
●​ May not reflect real complexity
●​ Requires proper understanding

53
⭐⭐Chapter 6: Software Quality
🔹 1. Definition
Software Quality refers to the degree to which a software product meets specified
requirements and satisfies user needs while being reliable, efficient, and easy to
maintain.

🔹 2. Objectives of Software Quality


●​ Deliver error-free software
●​ Meet user requirements
●​ Ensure reliability and performance
●​ Improve customer satisfaction
●​ Reduce maintenance cost

🔹 3. Characteristics of Software Quality


🔸 1. Correctness
●​ Software performs required functions correctly

54
🔸 2. Reliability
●​ Software works without failure for a given time

🔸 3. Efficiency
●​ Uses system resources effectively

🔸 4. Usability
●​ Easy to learn and use

🔸 5. Maintainability
●​ Easy to modify and update

🔸 6. Portability
●​ Can run on different systems

🔸 7. Security
●​ Protects data from unauthorized access

55
🔹 4. Software Quality Assurance (SQA)
👉 Definition
SQA is a set of activities that ensure software processes and products meet quality
standards.

👉 Activities of SQA
●​ Process monitoring
●​ Quality planning
●​ Reviews and audits
●​ Testing

🔹 5. Software Quality Control (SQC)


👉 Definition
SQC focuses on identifying defects in the software through testing and correcting
them.

🔹 6. SQA vs SQC (Important 🔥)


SQA SQC

56
Process-oriented Product-orient
ed

Prevents defects Detects


defects

Focus on process Focus on


improvement testing

🔹 7. Quality Standards
●​ Define rules and guidelines for software quality

👉 Examples:
●​ ISO standards
●​ IEEE standards

🔹 8. Importance of Software Quality


●​ Improves customer satisfaction
●​ Reduces errors and failures
●​ Saves time and cost
●​ Enhances reliability

57
🔹 9. Conclusion
Software quality is essential for developing reliable, efficient, and user-friendly
software. Proper quality assurance and control ensure successful software
products.

Software Quality Attributes

🔹 Definition
Software Quality Attributes are the characteristics or properties that determine
how well a software system performs and satisfies user requirements.

🔹 Main Software Quality Attributes


🔸 1. Correctness
●​ Software performs all required functions correctly
●​ Meets user requirements

🔸 2. Reliability
●​ Software works without failure for a specific period
●​ Produces consistent results

58
🔸 3. Efficiency
●​ Uses system resources (CPU, memory) effectively
●​ Provides fast performance

🔸 4. Usability
●​ Easy to learn and use
●​ User-friendly interface

🔸 5. Maintainability
●​ Easy to modify, fix bugs, and update
●​ Reduces maintenance effort

🔸 6. Portability
●​ Can run on different platforms or systems
●​ Easy to transfer

🔸 7. Security
●​ Protects data from unauthorized access
●​ Ensures data privacy

59
🔸 8. Flexibility
●​ Easy to adapt to changes
●​ Supports future modifications

🔸 9. Reusability
●​ Components can be reused in other projects
●​ Saves time and cost

🔸 10. Robustness
●​ Handles errors and unexpected inputs effectively
●​ Does not crash easily

Cyclomatic Complexity Metric

🔹 Definition
Cyclomatic Complexity is a software metric used to measure the complexity of a
program by calculating the number of independent execution paths in the
program.

👉 It was proposed by Thomas J. McCabe.

60
🔹 Purpose
●​ Measure program complexity
●​ Identify difficult and risky code
●​ Help in test case design
●​ Improve code quality

🔹 Formula
👉 Main Formula:
V(G)=E−N+2PV(G) = E - N + 2PV(G)=E−N+2P

●​ V(G) = Cyclomatic Complexity


●​ E = Number of edges
●​ N = Number of nodes
●​ P = Number of connected components

👉 Simplified Formula:
V(G)=Number of Decision Points+1V(G) = \text{Number of Decision Points} +
1V(G)=Number of Decision Points+1

🔹 Decision Points
61
These increase complexity:

●​ if
●​ else if
●​ while
●​ for
●​ case (switch)

🔹 Interpretation of Cyclomatic Complexity


Complexity Meaning
Value

1 – 10 Simple, low risk

11 – 20 Moderate
complexity

21 – 50 High complexity

> 50 Very complex,


risky

🔹 Example (Simple)
If a program has:

62
●​ 3 decision points

👉 Then:
V(G)=3+1=4V(G) = 3 + 1 = 4V(G)=3+1=4

🔹 Advantages
●​ Helps in test case design
●​ Identifies complex modules
●​ Improves code maintainability
●​ Easy to calculate

🔹 Disadvantages
●​ Does not measure all types of complexity
●​ May not reflect real-world difficulty
●​ Focuses only on control flow

63
Chapter 7: Software Requirement
Analysis

🔹 1. Definition
Software Requirement Analysis is the process of identifying, gathering, analyzing,
and documenting the requirements of a software system to understand what the
user needs.

🔹 2. Objectives
●​ Understand user requirements clearly
●​ Define system functionality
●​ Reduce development errors
●​ Provide a base for design and development

🔹 3. Types of Requirements
🔸 1. Functional Requirements
●​ Describe what the system should do

64
👉 Examples:
●​ User login
●​ Data processing
●​ Report generation

🔸 2. Non-Functional Requirements
●​ Describe how the system performs

👉 Examples:
●​ Performance
●​ Security
●​ Reliability
●​ Usability

🔹 4. Requirement Analysis Process


🔸 1. Requirement Gathering
●​ Collect requirements from users
●​ Methods: interviews, questionnaires, observation

🔸 2. Requirement Analysis
●​ Study and refine requirements

65
●​ Remove inconsistencies

🔸 3. Requirement Specification
●​ Document requirements clearly

👉 Output: SRS (Software Requirement Specification)

🔸 4. Requirement Validation
●​ Check if requirements are correct and complete
●​ Ensure they meet user needs

🔹 5. Software Requirement Specification (SRS)


👉 Definition
SRS is a document that describes all functional and non-functional requirements of
a software system.

👉 Characteristics of Good SRS


●​ Correct
●​ Complete
●​ Consistent
●​ Clear

66
●​ Verifiable

🔹 6. Techniques of Requirement Analysis


●​ Interviews
●​ Questionnaires
●​ Observation
●​ Prototyping

🔹 7. Importance of Requirement Analysis


●​ Reduces development errors
●​ Saves time and cost
●​ Improves software quality
●​ Ensures user satisfaction

🔹 8. Challenges in Requirement Analysis


●​ Changing requirements
●​ Communication gap
●​ Incomplete requirements
●​ Misunderstanding user needs

67
Need of SRS (Software Requirement
Specification)

🔹 Definition (Start like this)


A Software Requirement Specification (SRS) is a document that clearly describes
all functional and non-functional requirements of a software system.

🔹 Need / Importance of SRS


🔸 1. Clear Understanding of Requirements
●​ Provides a detailed description of user needs
●​ Avoids confusion between developers and clients

🔸 2. Acts as a Reference Document


●​ Serves as a guideline for developers, testers, and managers
●​ Used throughout the project

🔸 3. Helps in Design and Development


●​ Provides a base for system design

68
●​ Makes development more structured

🔸 4. Reduces Errors and Rework


●​ Clearly defined requirements reduce mistakes
●​ Avoids unnecessary changes later

🔸 5. Facilitates Testing
●​ Helps testers verify whether software meets requirements
●​ Used to design test cases

🔸 6. Improves Communication
●​ Ensures proper communication between stakeholders
●​ All team members understand the system

🔸 7. Helps in Project Planning


●​ Used for estimating cost, time, and resources
●​ Supports project management

🔸 8. Acts as Legal Agreement


●​ Serves as a contract between client and developer

69
●​ Ensures both follow agreed requirements

Data Flow Diagram (DFD)

🔹 Definition
A Data Flow Diagram (DFD) is a graphical representation of how data flows
through a system, showing the input, processing, storage, and output of data.

🔹 Purpose of DFD
●​ Understand system requirements
●​ Visualize data movement
●​ Simplify complex systems
●​ Help in system design

🔹 Basic Components of DFD


🔸 1. Process (Circle / Bubble)
●​ Represents a function or activity
●​ Transforms input data into output

👉 Example: “Process Order”

70
🔸 2. Data Flow (Arrow)
●​ Shows movement of data
●​ Direction indicates flow

🔸 3. Data Store (Rectangle / Open box)


●​ Represents storage of data

👉 Example: Database, File

🔸 4. External Entity (Square)


●​ Source or destination of data
●​ Outside the system

👉 Example: User, Bank


Data Dictionary

🔹 Definition
A Data Dictionary is a centralized collection of information that describes the
structure, meaning, and usage of data elements in a system.

👉 In simple words:​
It is a “data about data” (metadata).

71
🔹 Purpose of Data Dictionary
●​ Define all data elements clearly
●​ Avoid confusion and ambiguity
●​ Ensure consistency in data usage
●​ Help developers and analysts understand the system

🔹 Contents of Data Dictionary


A data dictionary includes details such as:

●​ Data name
●​ Description
●​ Data type (integer, string, etc.)
●​ Size/length
●​ Format
●​ Allowed values
●​ Source of data
●​ Destination of data

🔹 Types of Data Dictionary


🔸 1. Active Data Dictionary
●​ Automatically updated

72
●​ Linked with database system

🔸 2. Passive Data Dictionary


●​ Manually maintained
●​ Not automatically updated

Entity Relationship Diagram (ERD)

🔹 Definition
An Entity Relationship Diagram (ERD) is a graphical representation of entities,
their attributes, and the relationships between them in a database system.

🔹 Purpose of ERD
●​ Design database structure
●​ Show relationships between data
●​ Help in database development
●​ Improve system understanding

🔹 Components of ERD

73
🔸 1. Entity
●​ Represents a real-world object

👉 Examples:
●​ Student
●​ Employee
●​ Product

👉 Symbol: Rectangle

🔸 2. Attribute
●​ Describes properties of an entity

👉 Examples:
●​ Name, Age, ID

👉 Types:
●​ Simple Attribute – cannot be divided
●​ Composite Attribute – can be divided
●​ Derived Attribute – calculated

👉 Symbol: Oval

🔸 3. Relationship
●​ Shows how entities are connected

74
👉 Examples:
●​ Student enrolls in Course

👉 Symbol: Diamond

🔹 Types of Relationships
🔸 1. One-to-One (1:1)
●​ One entity is related to only one entity

🔸 2. One-to-Many (1:M)
●​ One entity is related to many entities

👉 Example: One teacher → many students

🔸 3. Many-to-Many (M:N)
●​ Many entities related to many entities

👉 Example: Students ↔ Courses

🔹 Keys in ERD
75
🔸 1. Primary Key
●​ Unique identifier of an entity

👉 Example: Student_ID

🔸 2. Foreign Key
●​ Links one entity to another

Example (Simple ERD)

[Student] --- (Enrolls) --- [Course]

| |

(ID) (Course_ID)

(Name) (Title)

Characteristics of a Good SRS

🔸 1. Correct
●​ All requirements should be accurate
●​ Reflect actual user needs

76
🔸 2. Complete
●​ Includes all functional and non-functional requirements
●​ No missing information

🔸 3. Consistent
●​ No conflicts between requirements
●​ All statements should agree with each other

🔸 4. Unambiguous
●​ Requirements should be clear and easy to understand
●​ Avoid confusion

🔸 5. Verifiable
●​ Requirements should be testable
●​ Can be checked through testing

🔸 6. Feasible
●​ Requirements should be achievable
●​ Within time and budget

77
🔸 7. Modifiable
●​ Easy to update when changes occur

🔸 8. Traceable
●​ Each requirement can be tracked
●​ From origin to implementation

Components of SRS

🔸 1. Introduction
●​ Purpose of system
●​ Scope of project
●​ Definitions and abbreviations

🔸 2. Overall Description
●​ Product perspective
●​ Product functions
●​ User characteristics
●​ Constraints

78
🔸 3. Functional Requirements
●​ What the system should do

👉 Examples:
●​ Login system
●​ Data processing

🔸 4. Non-Functional Requirements
●​ How the system performs

👉 Examples:
●​ Performance
●​ Security
●​ Reliability

🔸 5. External Interface Requirements


●​ Interaction with:
○​ Users
○​ Hardware
○​ Software

🔸 6. System Features

79
●​ Detailed description of system functions

🔸 7. Constraints
●​ Limitations of system

👉 Example:
●​ Budget
●​ Hardware limitations

🔸 8. Appendices (Optional)
●​ Additional information
●​ References

Requirement Validation

Requirement Validation is the process of checking whether the defined


requirements are correct, complete, consistent, and truly reflect the user’s needs.

bjectives of Validation

●​ Ensure requirements are accurate


●​ Detect errors early
●​ Confirm user needs are satisfied
●​ Improve software quality

80
🔹 Need of Validation
●​ Avoid costly mistakes in later stages
●​ Reduce rework
●​ Ensure clear understanding
●​ Deliver correct software

Validation Checks

🔸 1. Validity
●​ Are we building the right product?

🔸 2. Consistency
●​ No conflicting requirements

🔸 3. Completeness
●​ All requirements are included

🔸 4. Realism (Feasibility)
●​ Requirements are achievable

81
🔸 5. Verifiability
●​ Requirements can be tested

Techniques of Requirement Validation

🔸 1. Reviews / Inspections
●​ Experts examine requirements
●​ Find errors and issues

🔸 2. Prototyping
●​ Build a sample system
●​ Get user feedback

🔸 3. Test Case Generation


●​ Create test cases from requirements
●​ Check if they are testable

🔸 4. Automated Tools
●​ Use tools to check consistency and completeness

82
🔹 Advantages of Validation
●​ Reduces errors
●​ Saves time and cost
●​ Improves quality
●​ Increases user satisfaction

83

You might also like