0% found this document useful (0 votes)
35 views30 pages

Osmania University Matrusri Engineering College Hyderabad Software Engineering Unit 1

Osmania University matrusri engineering College hyderabad software engineering unit 1 introduction to software engineering

Uploaded by

Aravind
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)
35 views30 pages

Osmania University Matrusri Engineering College Hyderabad Software Engineering Unit 1

Osmania University matrusri engineering College hyderabad software engineering unit 1 introduction to software engineering

Uploaded by

Aravind
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
You are on page 1/ 30

UNIT 1

MODULE 1
A GENERIC VIEW OF PROCESS: SOFTWARE ENGINEERING

WHAT IS SOFTWARE?
➢ Software is a set of instructions, data, or programs used to
operate computers and perform specific tasks.
➢ It is the opposite of hardware, which refers to the physical
components of a computer.
➢ Software is what enables a computer to function efficiently. It
allows users to interact with the system, automate tasks, and
perform complex operations.
➢ From simple mobile applications to advanced artificial
intelligence programs, software plays a crucial role in
technology and innovation.

WHAT IS ENGINEERING?
➢ Engineering is the application of scientific, mathematical, and
practical knowledge to design, build, and maintain structures,
machines, systems, and processes that solve real-world
problems.
➢ It is a broad field that combines creativity, problem-solving, and
technical skills to develop innovative solutions in various
industries.
WHAT IS THE ROLE OF SOFTWARE ENGINEER?
➢ A software engineer is a professional who applies engineering
principles to design, develop, test, deploy, and maintain
software applications and systems.
➢ They play a crucial role in the software development lifecycle,
ensuring that programs are efficient, scalable, and meet user
needs.

WHAT IS USER ROLE IN SOFTWARE ENGINEERING?


➢ In software engineering, the user role refers to the different
ways individuals interact with software systems, whether as
end users, administrators, testers, or developers. Types of User
Roles in Software Engineering
1. End Users (General Users)
o The primary users of the software who interact with it to
accomplish tasks. o Example: A customer using an e-
commerce app to buy products.
2. Administrators (Admins or Superusers) o Manage user accounts,
configure system settings, and oversee software operations. o
Example: A website admin controlling user access and content
management.
3. Developers & Software Engineers o Build, maintain, and update
the software system. o Example: A backend engineer writing API
logic for an application.
4. Testers & Quality Assurance (QA) Engineers
o

o Ensure software quality by detecting bugs and ensuring


functionality meets requirements.
Example: A QA tester using automated testing tools to
check for software defects.
5. Business Analysts & Product Managers o Define software
requirements based on user needs and business goals. o
Example: A product manager deciding which features to add in
the next software release.
6. Support & Maintenance Teams o Provide customer support and
troubleshoot issues postlaunch. o Example: An IT support
engineer helping users resolve login problems.
7. Stakeholders & Clients
o Individuals or organizations that have an interest in the
software’s success. o Example: A company investing in a
custom-built enterprise software system.

WHAT IS SRS DOCUMENT?


A Software Requirements Specification (SRS) document is a formal
document that describes the functional and non-functional
requirements of a software system. It serves as a blueprint for
developers, testers, designers, and stakeholders, ensuring that
everyone understands the project’s objectives, scope, and
expectations.
Key Components of an SRS Document
1. Introduction
o

Purpose of the software.


o Intended audience (developers, testers, clients, etc.).
o Project scope and objectives.
2. Overall Description o General functionality of the system.
o Constraints (e.g., budget, platform compatibility). o
Assumptions and dependencies (e.g., third-party software
required).
3. Functional Requirements o Detailed description of features and
functionalities. o Example: "The system shall allow users to log
in using an email and password."
4. Non-Functional Requirements o Performance requirements
(e.g., system response time).
o Security requirements (e.g., data encryption).
o Usability, scalability, and maintainability requirements.
5. External Interfaces o User interfaces (UI design considerations).
o Hardware and software interfaces.
o Communication with other systems or APIs.
6. System Features o Breakdown of key features and how they
interact. o Example: "Users should receive email notifications
for account activity."
7. Acceptance Criteria
Conditions under which the system will be considered
complete.
WHY IS SRS DOCUMENT IMPORTANT?
• Clear Communication: Ensures that all stakeholders understand
the project requirements.
• Prevents Scope Creep: Defines project boundaries to avoid
unnecessary changes.
• Foundation for Testing: Helps testers verify that the final
product meets expectations.
• Improves Development Efficiency: Provides developers with a
clear roadmap.

WHAT IS FRONT END DEVELOPER VS BACKEND DEVELOPER?


FRONTEND DEVELOPER
A frontend developer builds the visible part of a website or web
app that users interact with.
Responsibilities:
Designing and coding UI components (buttons, menus, forms).
Making the website responsive (works on different screen sizes).
Improving user experience with animations and interactive
elements.
Connecting the frontend to the backend using APIs.
Technologies Used:
• Languages: HTML, CSS, JavaScript
• Frameworks & Libraries: React, Angular, Vue.js
• Tools: Bootstrap, Tailwind CSS, Figma
o

EXAMPLE:
When you visit Facebook, the layout, news feed, and like buttons
are all built by frontend developers.

BACKEND DEVELOPER
A backend developer works on the server-side of a web
application, managing data, security, and business logic.
Responsibilities:
Handling database operations (storing and retrieving user data).
Writing APIs that allow the frontend to fetch data.
Managing authentication (login, signup, user sessions).
Ensuring security and optimizing performance.
Technologies Used:
• Languages: Node.js, Python, Java, PHP, Ruby
• Frameworks: Express.js, Django, Spring Boot, Laravel
• Databases: MySQL, PostgreSQL, MongoDB
• Tools: Postman, Redis, Docker EXAMPLE:
When you log into Instagram, the backend verifies your
username/password, fetches your posts, and sends them to the
frontend for display.
WHAT ARE APIS?
➢ An API (Application Programming Interface) is a set of rules
that allows different software applications to communicate
with each other.
➢ It acts as a bridge between different systems, enabling them
to exchange data and functionality without needing to
understand each other’s internal workings.

HOW APIS WORK (SIMPLE EXAMPLE) Imagine


a restaurant:
• You (the customer) place an order.
• The waiter (API) takes your request to the kitchen (server).
• The kitchen prepares the food and gives it to the waiter.
• The waiter delivers the food to you.
Here, the waiter (API) acts as the middleman, ensuring smooth
communication between you (the client) and the kitchen (the
backend server).

WHAT IS PRODUCT VS PROCESS?


In software development, product and process are two
fundamental concepts:
1. Product → The final outcome or deliverable (software,
application, system).
2. Process → The steps and methodologies used to develop the
product
1. WHAT IS A PRODUCT?
A product is the final software or application that users interact
with. It is the tangible result of the development process.
EXAMPLES OF PRODUCTS:

Google Chrome – A web browser.


Microsoft Word – A document editing application.
Facebook – A social media platform.
Mobile Banking App – A financial application for users.

KEY CHARACTERISTICS OF A PRODUCT:


• Deliverable to customers or end-users.
• Must meet functional and non-functional requirements.
• Can be commercial (paid) or open-source (free).
• Needs maintenance, updates, and bug fixes over time.

2. WHAT IS A PROCESS?
A process is the structured set of steps, methodologies, and
frameworks followed to develop a product. It ensures quality,
efficiency, and consistency in software development.
EXAMPLES OF PROCESSES:
Agile Development – Iterative approach with continuous
feedback.
Waterfall Model – A sequential, step-by-step approach.
DevOps Process – Integrates development and operations for
faster releases.
Software Development Life Cycle (SDLC) – A standard
framework for software development.
KEY CHARACTERISTICS OF A PROCESS:
• Defines how a product is built.
• Includes stages like planning, designing, coding, testing, and
deployment.
• Helps in managing risks and improving efficiency.
• Can be optimized and improved for better productivity.

CHARACTERISTICS OF A SOFTWARE?
Characteristic Description

1. Software is Unlike physical products, software is


developed, engineered through coding, designing, and
not testing instead of being manufactured in a
manufactured factory.
2. Software Hardware components fail over time, but
does not wear software does not physically degrade.
out However, it may deteriorate due to updates,
bugs, or changes.
3. Software is Unlike hardware, which is mass-produced,
custom-built most software is developed uniquely for
specific purposes.
4. Software is Unlike hardware, software can be modified
flexible and and updated easily to add new features or
adaptable fix issues.
5. Software is Software requires regular updates, patches,
subject to and improvements to meet changing user
continuous needs and technology advancements.
evolution
6. Software is As features grow, software can become
prone to difficult to maintain and debug.
complexity

WHAT IS SOFTWARE PROJECT MANAGEMENT?


Software Project Management (SPM) is the process of planning,
organizing, leading, and controlling software development
projects to ensure they are delivered on time, within budget,
and with the required quality. It involves managing resources,
risks, timelines, and stakeholders to achieve project goals.

Aspect Description
Project Planning Defining project scope, objectives, and timelines.
Creating a roadmap for development.
Requirement Analysis Understanding what the client and users need from
the software.
Resource Management Allocating developers, designers, testers, and other
resources efficiently
Scheduling Creating a timeline with milestones, deadlines, and
deliverables.
Risk Management Identifying potential risks (delays, cost overruns,
technical failures) and planning solutions.
Quality Assurance Ensuring that the software meets the required
quality standards through testing and reviews.
Budget Management Controlling costs and ensuring the project stays
within budget.
Communication & Coordinating between developers, testers, clients,
Collaboration and stakeholders to ensure smooth progress.
Software Development Using models like Agile, Waterfall, Scrum, or
Models DevOps for project execution.
Deployment & Delivering the final product and ensuring long-term
Maintenance maintenance and updates.

WHY IS SOFTWARE PROJECT MANAGEMENT IMPORTANT?

Ensures Timely Delivery – Helps complete the project within


deadlines.
Prevents Cost Overruns – Keeps expenses under control.
Improves Software Quality – Ensures that the software is
reliable, secure, and efficient.
Enhances Team Productivity – Helps teams stay organized and
focused.
Minimizes Risks – Identifies and mitigates potential project
failures.

TYPES OF SOFTWARE
➢ Software can be categorized into different types based on
its purpose, functionality, and usage. Below is a
breakdown of the main types of software:

1. SYSTEM SOFTWARE
Definition: Software that manages hardware and
provides a platform for other software to run.
Type Description Examples
Operating Controls hardware, manages Windows, macOS, Linux,
System (OS) system resources, and runs Android, iOS
applications.
Device Drivers Enables communication between Printer driver, Graphics
hardware and the OS. driver (NVIDIA, AMD)
Utility Helps in system maintenance and Antivirus, Disk Cleanup,
Software optimization. Backup Software
2. APPLICATION SOFTWARE
Definition: Software designed for end-users to perform
specific tasks.
Type Description Examples
Productivity Used for office work Microsoft Office, Google Docs, Excel,
Software and productivity Notion
tasks.
Multimedia Used for creating or Adobe Photoshop, VLC Media Player,
Software editing images, Premiere Pro
videos, and audio.
Web Browsers Allows users to Google Chrome, Mozilla Firefox,
access the internet. Safari
Communication Enables messaging Zoom, Microsoft Teams, WhatsApp
Software and video calling.
Entertainment Used for gaming and Netflix, Spotify, Steam
& Gaming media consumption.
Software

3. PROGRAMMING SOFTWARE
Definition: Software that provides tools for programmers to
write, test, and debug code.
Type Description Examples
Compilers & Converts source GCC, Python Interpreter, Java
Interpreters code into executable Compiler
programs.
integrated Provides a complete Visual Studio, IntelliJ IDEA, PyCharm
Development coding environment.
Environment
(IDE)
Text Editors Lightweight tools for Notepad++, Sublime Text, VS Code
coding.
8. Open-Source vs. Proprietary Software

Type Description Examples


Open-Source Free software with Linux, VLC Media Player,
Software (OSS) publicly available LibreOffice
source code.
Proprietary Owned by companies, Windows, Adobe Photoshop,
Software requires a license. Microsoft Office

OTHER TYPES OF SOFTWARE:


➢ System Software → Manages hardware (e.g., OS, Drivers).
➢ Application Software → Used by end-users (e.g., Browsers,
Office Tools).
➢ Programming Software → Helps developers
(e.g.,
Compilers, IDEs).
➢ Middleware → Connects systems and applications.
➢ Embedded Software → Runs on hardware devices (e.g.,
Smart TVs, IoT).
➢ AI & ML Software → Intelligent applications (e.g.,
Chatbots, Data Analysis).

WHAT IS SOFTWARE MYTHS?


Software myths are false beliefs about software development that
can lead to poor project planning and execution. These myths
exist among management, developers, and customers.

1. MANAGEMENT MYTHS
Myth: "Adding more developers will speed up a late project."
Reality: More developers can increase complexity and slow
progress (Brooks' Law).

Myth: "A good project plan ensures no issues."


Reality: Software projects always face unexpected challenges
(bugs, scope changes).
Myth: "Once the software is developed, the job is done."
Reality: Maintenance and updates are crucial for software
longevity

2. CUSTOMER MYTHS
Myth: "Software requirements can change anytime without
affecting cost and timeline."
Reality: Frequent changes can lead to delays and budget
overruns.
Myth: "A general statement of objectives is enough to start
coding."
Reality: Detailed requirements (SRS) are necessary for a
successful project.
Myth: "Once software is built, it will work perfectly forever."
Reality: Software needs updates to fix bugs and adapt to new
environments.

3. Developer Myths
Myth: "The project is done when coding is complete."
Reality: Testing, debugging, and documentation are equally
important.
Myth: "If my program works, it’s fully optimized and efficient."
Reality: Code efficiency, security, and scalability must be
evaluated.
Myth: "Software testing ensures a bug-free product."
Reality: No software is 100% bug-free; testing reduces but does
not eliminate errors.

WHAT IS VERIFICATION AND VALIDATION?

1. VERIFICATION – "ARE WE BUILDING THE PRODUCT RIGHT?"


Definition: Verification is the process of checking whether the
software meets design specifications before execution.
Goal: Ensure the software is developed correctly according to
requirements, without actual execution.
Focus: Process-oriented (checking documents, design, and code).
Methods:
• Reviews (Design Review, Code Review)
• Walkthroughs
• Inspections
• Static Testing
WHO PERFORMS?
Developers, QA teams

2. VALIDATION – "ARE WE BUILDING THE RIGHT PRODUCT?"


Definition: Validation is the process of checking whether the final
software meets user needs and expectations after execution.
Goal: Ensure the software works correctly and fulfills its
intended purpose.
Focus: Product-oriented (actual software testing). Methods:
• Unit Testing
• Integration Testing
• System Testing
• User Acceptance Testing (UAT)
WHO PERFORMS?
Testing teams, end users.
Conclusion

Verification → Prevents defects before development.


Validation → Detects defects after development.
Both are necessary for high-quality software.

SOFTWARE ENGINEERING – A LAYERED TECHNOLOGY


➢ software Engineering is structured as a layered
technology, meaning that it is built upon multiple
layers, each serving a specific role in ensuring the
quality and efficiency of software development.
➢ These layers provide a systematic approach to
software development, from fundamental principles
to practical implementation.
Software Engineering consists of four layers, arranged in a
hierarchical manner:

1. QUALITY FOCUS (FOUNDATION LAYER)


Definition: The foundation of software engineering that ensures
software meets the required quality standards.
Key Concept: "Software Quality Assurance (SQA)" Why It
Matters?
• Ensures reliability, maintainability, and efficiency.
• Reduces errors and improves customer satisfaction.
• Involves reviews, testing, and defect prevention techniques.
Example:
A software product must be bug-free, secure, and efficient before
deployment.

2. PROCESS LAYER (GUIDING FRAMEWORK)


Definition: Defines the structured framework for managing and
controlling software development.
Key Concept: Software Development Life Cycle (SDLC) Why It
Matters?
• Provides a roadmap for planning, designing, developing, testing,
and maintaining software.
• Helps in managing time, cost, and resources efficiently.
• Common models include Waterfall, Agile, Spiral, and DevOps.
Example:
A company following Agile methodology divides the software
development process into sprints, ensuring continuous feedback
and improvement.

3. METHODS LAYER (HOW TO BUILD SOFTWARE)


Definition: Defines the technical approach used in software
development.
Key Concept: Software Engineering Methods
Why It Matters?
• Provides a structured way to analyze, design, implement, and
test software.
• Includes techniques such as Object-Oriented Programming
(OOP), Structured Programming, and Model-Driven
Development.
• Ensures scalability, modularity, and maintainability.
Example:
Using Object-Oriented Design (OOD) principles to build modular
and reusable software components.
4. TOOLS LAYER (AUTOMATION & SUPPORT)
Definition: Provides automated tools and technologies that
support software development and maintenance.
Key Concept: Computer-Aided Software Engineering (CASE) Tools
Why It Matters?
• Enhances efficiency, accuracy, and productivity.
• Helps in code generation, testing, debugging, and version
control.
• Includes tools like Git, Jenkins, Selenium, and JIRA.
Example:
Developers use GitHub for version control and Jenkins for
automated CI/CD pipelines.

WHAT IS A PROCESS FRAMEWORK?


➢ A Process Framework is a structured set of guidelines, best
practices, and methodologies that define how software
development processes should be executed.
➢ It provides a standardized approach to managing software
projects, ensuring consistency, efficiency, and quality.

COMPONENTS OF A PROCESS FRAMEWORK


A software process framework typically includes:
1. Process Models – "How the software will be developed?"
Defines the overall approach to software development.
Examples: Waterfall, Agile, DevOps, Spiral Model.
2. Workflows – "How tasks are executed?"
Defines the sequence of activities, dependencies, and
responsibilities.
Example: Ag

ile workflow includes Sprint Planning → Development →


Testing → Deployment.
3. Roles & Responsibilities – "Who does what?"
Defines roles like Project Manager, Developers, Testers, UX
Designers, Stakeholders, etc.
4. Tools & Techniques – "What tools help in execution?"
Includes software development and project management
tools.
Examples: GitHub (Version Control), JIRA (Task
Management), Jenkins (CI/CD).
5. Metrics & Measurements – "How do we track progress?"
Defines KPIs (Key Performance Indicators) to evaluate
success.
Examples: Code Quality, Bug Count, Sprint Velocity,
Deployment Frequency.
SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC) ACTIVITIES

The Software Development Life Cycle (SDLC) is a structured


process used to design, develop, test, and deploy software. It
consists of several key phases:
1. Requirement Analysis
o Gather and analyze user and business needs.

o Define functional and non-functional requirements.


o Output: Software Requirement Specification (SRS).
2. Planning
o Define project scope, timeline, budget, and resources.

o Identify risks and mitigation strategies.

o Output: Project Plan.

3. Design
o Create architectural and detailed design for the system.

o Define system components, databases, and user

interfaces.
o Output: Design documents, prototypes.

4. Implementation (Coding)
o Write and develop the actual source code based on design

specifications.
o Follow coding standards and best practices.

o Output: Source code, unit tests.

5. Testing
o Verify and validate the software against requirements.

o Perform unit testing, integration testing, system testing,

and user acceptance testing (UAT).


o Output: Test cases, test reports.

 WHAT ARE TEST CASES?

In software engineering, test cases are specific conditions


or variables under which a tester determines whether a
system, application, or feature is working as expected.
Each test case consists of inputs, execution steps, and
expected outputs to verify a particular aspect of the
software.

KEY COMPONENTS OF A TEST CASE


1. Test Case ID – A unique identifier for tracking.
2. Test Description – A brief summary of what is being tested.
3. Preconditions – Any requirements that must be met before
executing the test.
4. Test Steps – Detailed, step-by-step instructions for executing the
test.
5. Test Data – Input values required for testing.
6. Expected Result – The expected output if the system behaves
correctly.
7. Actual Result – The result observed after execution.
8. Pass/Fail Status – Whether the test case passed or failed.
9. Postconditions – Any required state after execution.

WHAT ARE TEST REPORTS?

Test reports Details –


 Number of test cases executed.
 Pass/Fail ratio.
 Issues found and their severity.

6. Deployment
o Release the software for production use.

o May involve installation, configuration, and user training.

o Output: Deployed software.

7. Maintenance & Support


o Fix bugs, enhance features, and ensure system stability

post-deployment.
o Provide technical support and updates.

o Output: Patches, updates, documentation.


SOFTWARE PROCESS FRAMEWORK

The diagram represents a Software Process Framework, which is a


structured approach to software development. It consists of multiple
layers, each playing a crucial role in ensuring the software
development process is organized and efficient.
1. COMMON PROCESS FRAMEWORK

 This is the outermost layer that defines the overall structure of the
software development process.
 It serves as a general guideline applicable to various software projects
and methodologies.
 Ensures consistency and standardization across different projects.

2. FRAMEWORK ACTIVITIES

 These are the core activities involved in any software


development process.
 Examples include Requirement Analysis, Design,
Implementation, Testing, Deployment, and Maintenance.
 These activities form the backbone of the Software
Development Life Cycle (SDLC).

3. TASK SETS (INSIDE FRAMEWORK ACTIVITIES)

 Task sets represent specific work elements within each


framework activity.
 A task set consists of:
o Task – A specific action to be performed.

o Milestone & Work Product – A measurable outcome (e.g.,

a completed design document, a working module).


o SQA Points (Software Quality Assurance Points) – Quality

checks and validation steps to ensure correctness and


reliability.

4. UMBRELLA ACTIVITIES (SURROUNDING EVERYTHING)


 These are supportive activities that run in parallel with
framework activities.
 They ensure smooth development by providing monitoring,
control, and improvement mechanisms.
 Examples include:
o Software Project Management – Planning, scheduling,

resource allocation.
o Software Configuration Management – Version control,

change management.
o Risk Management – Identifying and mitigating risks.

o Quality Assurance (QA) – Ensuring high standards in

software development.

CAPABILITY MATURITY MODEL INTEGRATION (CMMI)

the diagram represents the Capability Maturity Model Integration


(CMMI), which is a framework used to assess and improve software
development processes. CMMI defines five maturity levels, each
representing an organization's process capability and efficiency.

MATURITY LEVEL 1: INITIAL (UNPREDICTABLE AND REACTIVE)

 Processes are ad hoc, chaotic, and unstructured.


 No standard procedures or consistency in project execution.
 Projects are often delayed, over budget, and face quality issues.
 Example: A startup developing software without proper
planning, leading to frequent failures.

MATURITY LEVEL 2: MANAGED (PROJECT-LEVEL MANAGEMENT)

 Basic project management practices are in place.


 Processes are planned, performed, monitored, and controlled.
 Still reactive, but some consistency is maintained in execution.
 Example: A company implementing project tracking and risk
management but lacking standard organization-wide processes.

MATURITY LEVEL 3: DEFINED (PROACTIVE, ORGANIZATION-WIDE


STANDARDS)

 Processes are well-documented, standardized, and defined


across the organization.
 Best practices and guidelines are established.
 Focus on maintaining consistency and efficiency across projects.
 Example: A software firm with well-documented coding
standards, design patterns, and development methodologies.
MATURITY LEVEL 4: QUANTITATIVELY MANAGED (MEASURED AND
CONTROLLED)

 Organizations use metrics and quantitative data to manage


processes.
 Performance is monitored using statistical and quantitative
techniques.
 Decisions are data-driven, improving predictability and
efficiency.
 Example: A tech company measuring software defect rates,
productivity, and process efficiency to optimize project
outcomes.

MATURITY LEVEL 5: OPTIMIZING (CONTINUOUS IMPROVEMENT)

 Focus on continuous process improvement using feedback and


innovation.
 Agile, adaptable, and efficient in handling changes and risks.
 Encourages innovation, automation, and data-driven
enhancements.
 Example: A global IT company constantly refining its
development methodologies using AI-driven analytics and
automation.

Conclusion
 Small startups → Level 1 or 2 (reactive and evolving).

 Growing IT companies → Level 3 (structured but improving).

 Large enterprises → Level 4 (data-driven and optimized).

 Tech giants (Google, Tesla, Amazon) → Level 5 (innovation-

focused and constantly improving).


UNIT 1
MODULE 2

PROCESS MODELS: PRESCRIPTIVE MODELS, WATERFALL MODEL,


INCREMENTAL PROCESS MODELS, EVOLUTIONARY PROCESS MODELS,
SPECIALIZED PROCESS MODELS, THE UNIFIED MODELS, PERSONAL
AND TEAM PROCESS MODELS,
PROCESS TECHNOLOGY, PRODUCT AND PROCESS.

WHAT IS TESTING?
TYPES OF TESTING?

You might also like