Swe
Swe
test good-quality software. SDLC, or software development life cycle, is a methodology that defines
the entire procedure of software development step-by-step. The goal of the SDLC life cycle model is
to deliver high-quality, maintainable software that meets the user's requirements.
2: Defining Requirements
3: Designing Architecture
4: Developing Product
The Software Development Life Cycle (SDLC) is a structured approach to developing software,
ensuring quality, efficiency, and alignment with business goals. Below is a detailed description of
each component:
Description:
This is the foundational phase where the project's scope, objectives, and feasibility are determined.
It involves gathering input from stakeholders (clients, users, business analysts) to define what the
software should accomplish.
Key Activities:
Outcome:
A clear project roadmap with defined goals, constraints, and success criteria.
2. System Design
Description:
In this phase, the system architecture is designed based on the SRS. It defines how the software will
be structured, including data flow, modules, and technologies.
Key Activities:
• High-Level Design (HLD): Overall system architecture, database design, and technology stack
selection.
• Low-Level Design (LLD): Detailed module design, algorithms, and data structures.
Outcome:
• Prototypes/Wireframes
3. Implementation (Coding)
Description:
Developers write the actual code based on the design documents. This phase transforms
requirements into a functional product.
Key Activities:
4. Testing
Description:
The software is rigorously tested to identify and fix defects before deployment.
Key Activities:
• Bug Fixing & Regression Testing: Ensures fixes don’t break existing features.
Outcome:
5. Deployment
Description:
The software is released to the production environment for end-users.
Key Activities:
Outcome:
6. Maintenance
Description:
After deployment, the software is continuously monitored, updated, and improved.
Key Activities:
Outcome:
Definition:
2)Umbrella activities are the supporting tasks that are carried out throughout the entire
software development life cycle (SDLC). They ensure quality, efficiency, and manageability of
the project.
• Re-usability Management
• Risk Management
Definition:
In software engineering, umbrella activities are the supportive, cross-cutting tasks that span across
all stages of the Software Development Life Cycle (SDLC). These activities ensure that the
development process is managed, controlled, and optimized to deliver a high-quality, cost-
effective, and reliable software product.
Purpose:
To continuously monitor the progress of the project and ensure that it aligns with the planned
schedule, budget, and resources.
Key Tasks:
• Progress Tracking: Comparing actual progress with the project plan using tools like Gantt
charts or burndown charts.
Tools:
Jira, Trello, Microsoft Project, Asana.
Purpose:
To identify and eliminate defects early in the development cycle through structured peer
evaluations.
Key Tasks:
• Inspections: Formal reviews with predefined checklists, mainly for critical documents like
SRS or design specs.
Focus Areas:
Outcome:
Review reports, defect logs, and recommended improvements.
Purpose:
To ensure that the software and its development process meet predefined quality standards.
Key Tasks:
• Test Planning and Execution: Managing unit, integration, system, and acceptance testing.
• Metrics Monitoring: Analyzing defect density, code coverage, and other KPIs.
Standards:
ISO 9001, IEEE 730, CMMI Levels.
Tools:
Selenium, SonarQube, TestRail, JUnit.
Purpose:
To handle the organization and control of software changes across the project lifecycle.
Key Tasks:
• Version Control: Tracking changes to code using tools like Git, SVN.
• Build & Release Management: Automating the deployment process with CI/CD tools.
Tools:
GitHub, GitLab, Jenkins, Docker, Ansible.
Purpose:
To ensure accurate and updated documentation is available for all stakeholders throughout the
project.
Types of Documents:
Best Practices:
• Version-controlled documentation.
6. Reusability Management
Purpose:
To identify and reuse existing components, designs, or modules to save time, reduce effort, and
ensure reliability.
Key Tasks:
• Code Reuse: Utilizing libraries (React, jQuery), frameworks (Spring Boot), or APIs.
• Design Patterns: Implementing common reusable solutions like Singleton, Factory, and
MVC.
Benefits:
• Accelerated development
• Reduced bugs
• Consistency across projects
Purpose:
To quantitatively assess the performance, quality, and efficiency of the software and the
development process.
Types of Metrics:
• Product Metrics:
• Process Metrics:
Tools:
SonarQube, Prometheus, Excel, Tableau (for dashboards).
8. Risk Management
Purpose:
To proactively identify, analyze, and mitigate risks that may affect the success of the project.
Key Steps:
Tools:
Risk Registers, Monte Carlo Simulation, Risk Matrix templates.
Conclusion:
Umbrella activities are critical to the success of a software project. They provide a support
framework that spans across the SDLC to ensure:
These activities are vital for managing complex projects, especially in modern development
environments like Agile, DevOps, and Hybrid models.
Agile breaks down large projects into smaller, manageable units called iterations or sprints, usually
lasting 1–4 weeks.
5. Build projects around motivated individuals, trust them to get the job done.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects and tunes its behavior for effectiveness.
Events/Meetings in Scrum:
Advantages of Agile:
Conclusion:
A Software Development Process Model is a structured framework that describes the sequence of
activities and tasks involved in developing a software product. It provides a systematic way to plan,
develop, test, and deploy software.
Different models suit different project types depending on factors like project size, complexity,
requirements clarity, and timeline.
WATER FALL MODEL:
Definition:
The Waterfall Model is a linear and sequential software development model where each phase
must be completed before moving to the next. It flows downward like a waterfall, hence the name.
It is one of the earliest models used in software development.
specialization of tasks
2. System Design
3. Implementation (Coding)
4. Testing
5. Deployment
6. Maintenance
Sure! Below is the exact content from the PDF regarding the Waterfall Model, V-Model, Incremental
Model, and Iterative Model (as it appears in your Unit-1 PPT):
Waterfall Model
➢ It is the Oldest model and is known as linear sequential model or classic life cycle model;
➢ The waterfall model is a breakdown of project activities into linear sequential phases, where each
phase depends on the deliverables of the previous one and corresponds to a specialization of tasks.
Phases:
• Communication
✓ All the possible requirements of the system to be developed are captured in this phase.
✓ Communication between customer and developer.
• Planning
✓ It consists of complete estimation, scheduling for project development.
• Modelling
✓ Defines overall system architecture.
✓ Helps in specifying hardware and software.
✓ Architecture creates low level and high level design.
• Construction
✓ Consists of code generation and testing.
✓ Coding implements the design details using an appropriate programming language.
✓ Testing the flow of coding and checking the functionality.
✓ Testing is done by unit testing, integration testing, and system testing.
✓ Unit testing – testing individual component.
✓ Integration testing – individual units are combined and tested.
✓ System testing – testing that validates the complete and fully integrated software product.
• Deployment
✓ Delivering the product to the customer and taking feedback from them.
✓ Software must be maintained.
Advantages:
Disadvantages:
When to Use:
V-Model
➢ A variation of waterfall model that depicts the relationship of quality assurance actions to the
actions associated with communication, modeling, and early code construction activities.
➢ The V-Model demonstrates the relationships between each phase of the development life cycle
and its associated phase of testing.
➢ It is also known as verification and validation model.
Advantages:
Disadvantages:
Incremental Model
➢ The incremental model combines elements of linear and parallel process flows.
➢ It combines elements of the Waterfall model, applied in an iterative manner.
➢ The first increment is often a core product with many supplementary features.
➢ Users use and evaluate it, and modifications are made to better meet needs.
Advantages:
Disadvantages:
When to Use:
Iterative Model
➢ In iterative method, the concept of incremental development is used frequently, with changes
made during design and implementation of each new iteration.
➢ Begins by specifying and implementing part of the software, which is reviewed to identify further
requirements.
➢ The process is repeated with new versions created in each iteration.
When to Use:
• Project is large.
Advantages:
Let me know if you want the RAD model, Spiral model, Prototype model, or the Agile
methodologies content as well in the same format.
UNIT-II
Definition of SRS:
Software Requirements Specification (SRS) is a structured document that describes what the
software will do and how it is expected to perform. It acts as an agreement between the client and
development team and includes functional, non-functional, and interface requirements.
1. Introduction
Describes the overall purpose and structure of the SRS document. It helps the reader understand
the background, scope, and intent of the software project.
1.1 Purpose
1.2 Scope
• Describes what the software will do and what it will not do.
1.4 References
• Lists external documents used for reference while preparing the SRS.
1.5 Overview
2. System Description
Gives a high-level overview of the software system, its environment, and its key users.
2.1 Product Perspective
• Explains how the software fits into a larger system, or whether it is standalone.
• Lists hardware, software, or network requirements needed for the system to function.
o User Authentication
o Processing Logic
o Report Generation
• Define how the system interacts with hardware, other software, or users.
Let me know if you'd like a filled example SRS using this structure for a specific project (e.g., Library
System, Online Store, etc.).
Solution:
Here is the COCOMO Theory explained clearly in exam-ready format, suitable for an 8-mark answer:
Definition:
COCOMO is a software cost estimation model developed by Barry W. Boehm in 1981. It helps
estimate the effort, time, and cost required to develop software projects based on the size of the
project (in KLOC).
1. Basic COCOMO:
Estimates effort and development time using a simple equation based on the size (KLOC).
2. Intermediate COCOMO:
Considers additional cost drivers like product reliability, database size, developer capability,
etc.
3. Detailed COCOMO:
More accurate; applies cost drivers to each phase of the software lifecycle.
Modes in COCOMO:
COCOMO provides different constant values (a, b, c, d) based on the project mode:
Mode Description a b c d
Organic Small, simple projects with experienced teams 2.4 1.05 2.5 0.38
Mode Description a b c d
Semi-Detached Medium-sized projects with average experience 3.0 1.12 2.5 0.35
Embedded Complex systems with strict hardware/software requirements 3.6 1.20 2.5 0.32
Inputs Required:
Advantages:
Limitations:
Given:
• Project Size = 200 KLOC
• Mode = Semi-Detached (Average experience, schedule not
tight)
• Constants for Semi-Detached mode:
o a = 3.0, b = 1.12, c = 2.5, d = 0.35
1. Effort Calculation
E = a × (KLOC)^b = 3.0 × (200)^1.12 = 3.0 × 427.04 = 1281.12 person-
months
4. Productivity
P = KLOC / E = 200 / 1281.12 = 0.156 KLOC/person-month
Final Answer:
Parameter Result
Definition: Cohesion
Cohesion refers to how closely related the tasks performed by a single module are.
High Cohesion means a module does one specific task well.
Low Cohesion means the module performs unrelated tasks.
1. Functional Cohesion
2. Sequential Cohesion
The output of one task is used as input for the next task in the module.
Example: A module that reads data → processes it → stores it.
3. Communicational Cohesion
4. Procedural Cohesion
5. Temporal Cohesion
Tasks grouped because they are executed at the same time (e.g., at system startup).
Example: Initialization module that loads settings and starts logging.
6. Logical Cohesion
Definition: Coupling
1. Content Coupling
2. Common Coupling
3. External Coupling
4. Control Coupling
5. Stamp Coupling
Modules share a composite data structure (like a record or object), but use only parts of it.
Example: Passing a full student object, but only accessing the name.
6. Data Coupling
7. No Coupling
Pseudocode Analysis
float z;
input(x, y);
if(y<0)
power = -y;
else power = y;
z=1;
while(power!=0)
{ z=z*x;
power=power-1;
} if(y<0)
z=1/z;
output(z);
end
Node 1 (Start):
• if(y<0)
• power = -y;
• power = y;
• z=1;
• while(power!=0)
• z=z*x; power=power-1;
• if(y<0)
• z=1/z;
Node 10 (End):
• output(z); end
Control Flow Connections
1. Node 1 → Node 2
4. Node 3 → Node 5
5. Node 4 → Node 5
6. Node 5 → Node 6
Where:
• E = Number of edges = 12
• N = Number of nodes = 10
V(G) = 12 - 10 + 2(1) = 4
2. while(power!=0)
Result
This indicates moderate complexity with 4 independent execution paths through the program. The complexity arises from
two conditional statements and one loop structure.
Black Box Testing is a software testing method where the internal structure, design, and
implementation of the item being tested are not known to the tester. The tester focuses only on
inputs and outputs without any knowledge of the internal code structure.
• Requirements-based testing
Definition: Dividing input data into equivalent partitions where all values in a partition should
behave similarly.
Process:
Definition: Testing at the boundaries of equivalence classes, as errors often occur at boundary
conditions.
Types:
Definition: Systematic approach for complex business logic with multiple input combinations.
Components:
Process:
6. Error Guessing
Approach:
7. Cause-Effect Graphing
Process:
Benefits:
• Reduces number of test cases
Process:
1. Functional Testing
2. Non-Functional Testing
White Box Testing is a software testing method where the tester has complete knowledge of the
internal structure, design, and implementation of the software being tested.
• Structure-based testing
• Developer perspective
Path Coverage:
Key Concepts:
Coverage Criteria:
• All-defs: Every definition reaches at least one use
3. Loop Testing
Simple Loops:
Nested Loops:
Concatenated Loops:
Unstructured Loops:
4. Condition Testing
Process:
• V(G) = E - N + 2P
7. Mutation Testing
Definition: Introducing small changes (mutants) to code and checking if tests detect them.
Process:
• Change constants
1. Unit Testing
• Individual functions/methods
• Logic verification
2. Integration Testing
• Interface testing
3. System Testing
Coverage Types
Popular Tools
Static Testing
• Code reviews
• Code walkthrough
• Code inspection
• No code execution
Dynamic Testing
• Coverage measurement
• Performance profiling
Best Practices
Gray Box Testing: Combines both black box and white box approaches
• Penetration testing
The most effective testing strategy uses both black box and white box techniques complementarily,
ensuring comprehensive coverage from both user and developer perspectives.