Software Engineering BCA Bankura University
Software Engineering BCA Bankura University
BY
THE CODER BRO
[Link]@[Link]
Join Our Telegram Channel for Free CS/IT Notes - [Link]
INTRODUCTION TO SOFTWARE ENGINEERING (UNIT-1)
Let us understand what Software Engineering stands for. The term is made of two words, software and
engineering.
Software is more than just a program code. A program is an executable code, which serves some
computational purpose. When we talk about software, we mean not only the code that makes it work but also
the libraries it uses and the documents that explain how to use it. Software, when made for a specific
requirement is called software product.
Engineering on the other hand, is all about developing products, using well defined, scientific principles and
methods.
Software engineering is an engineering branch associated with development of software product using well-
defined scientific principles, methods, and procedures. The outcome of software engineering is an efficient
and reliable software product.
Software Paradigms
Software paradigms refer to the methods and steps, which are taken while
designing the software. There are many methods proposed and are
implemented. But, we need to see where in the software engineering concept,
these paradigms stand. These can be combined into various categories,
though each of them is contained in one another:
Software Engineering Paradigm: Software engineering paradigms is where
all the engineering concepts pertaining to the development of software are
applied. It includes various research and requirement gathering which helps
the software product to build. It consists of –
• Requirement Gathering: It involves gathering all the necessary information and specifications for the
software.
• Software Design: It involves designing how the software will function and what it will look like.
• Programming: This is the actual building phase, where developers write the code that makes the
software work based on the design.
• Design: This is like creating a detailed plan or blueprint for how the software will work and what it will
look like.
• Maintenance: This involves keeping the software running smoothly over time by fixing bugs, making
updates, and ensuring it continues to meet user needs.
• Programming: This is the actual building phase, where developers write the code that brings the design
to life.
Programming Paradigm:
• Coding: This is like writing the specific instructions or lines of code that tell the computer what to do.
• Testing: This involves checking the software to make sure it works correctly and doesn't have any
problems.
• Integration: This involves putting all the pieces of the software together and making sure they work well
together.
1. Huge Programming: It is simpler to manufacture a wall than to a house or building, similarly, as the
measure of programming become extensive engineering has to step to give it a scientific process.
2. Scalability: If the software procedure were not based on scientific and engineering ideas, it would be
simpler to re-create new software than to scale an existing one.
3. Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let down the cost
of computer and electronic hardware. But the cost of programming remains high if the proper process is
not adapted.
4. Dynamic Nature: The continually growing and adapting nature of programming hugely depends upon the
environment in which the client works. If the quality of the software is continually changing, new upgrades
need to be done in the existing one.
5. Quality Management: Better procedure of software development provides a better and quality software
product.
Knowledge Engineering: Knowledge Engineering is a field within software engineering that focuses on
capturing, organizing, and utilizing knowledge to solve specific problems or perform tasks.
How does it work?: It involves gathering knowledge from experts in a particular domain and then encoding that
knowledge into a computer-readable format, such as rules, ontologies, or databases.
Example: Imagine you're trying to build a system that diagnoses medical conditions based on symptoms.
Knowledge engineers would work with medical experts to gather their diagnostic rules and encode them into a
software system so that it can make accurate diagnoses.
End-User Development: End-User Development (EUD) refers to the practice of allowing non-professional
developers, typically end-users or domain experts, to create or customize software applications to meet their
specific needs.
How does it work?: EUD tools provide user-friendly interfaces and pre-built components that allow users to
build, modify, or extend software applications without needing to write code from scratch.
Example: Consider a spreadsheet program like Microsoft Excel. End-users can create complex calculations,
charts, and macros without needing to be professional programmers. This empowers them to develop software
solutions tailored to their unique requirements.
Systems Analys is a process of collecting and interpreting facts, identifying the problems, and decomposition
of a system into its components. It is conducted for the purpose of studying a system or its parts in order to
identify its objectives. It is a problem-solving technique that improves the system and ensures that all the
components of the system work efficiently to accomplish their purpose. Analysis specifies what the system
should do.
Abstraction: It is the activity of reducing the information in a problem to only that information which is
important to us. When we perform analysis and design, we use many levels of abstraction in order to make
both the problem we are solving and the software we are developing understandable and meaningful. At higher
abstraction levels, the problem and the software are described in less detail and more broadly. At lower
abstraction levels, more details are given, and the software begins to take on a more concrete form.
Partitioning: Partitioning involves breaking down a complex system or problem into smaller, more
manageable parts or components.
• Explanation: It helps in organizing and structuring the system, making it easier to understand, develop,
and maintain.
• Example: In database design, partitioning involves dividing large datasets into smaller partitions based
on specific criteria such as date ranges or geographical locations. This improves query performance, data
management, and scalability by distributing the workload across multiple storage devices or servers.
Projection: Projection is the process of predicting or envisioning future states or outcomes based on existing
information or models.
• Explanation: It involves extrapolating current trends or patterns to anticipate how a system or situation
may evolve over time.
• Example: Weather forecasting uses projection to predict future weather conditions based on historical
data, atmospheric models, and current observations. By analysing patterns in temperature, humidity, and
air pressure, meteorologists can project the likelihood of rain, snow, or sunshine in the coming days.
System Specification: System specification involves documenting the functional and non-functional
requirements of a software system, as well as any constraints or dependencies that may affect its design,
development, and implementation.
Purpose: The primary purpose of system specification is to provide a detailed description of what the software
system should do and how it should behave. It serves as a blueprint for software developers, guiding the
design, development, and testing phases of the project.
➢ Functional Requirements: Functional requirements define the specific features, functionalities, and
behaviours that the software system must exhibit to fulfill its intended purpose. These requirements
describe the interactions between the system and its users, as well as any external systems/Components.
➢ Non-Functional Requirements: Non-functional requirements specify the quality attributes or
characteristics of the software system, such as performance, scalability, reliability, usability, and security.
These requirements describe how the system should perform under various conditions and constraints.
➢ Constraints and Dependencies: Constraints and dependencies refer to any limitations or restrictions that
may impact the design, development, or implementation of the software system. This includes technical
constraints, regulatory requirements, compatibility constraints, and dependencies on external systems or
resources.
Join Our WhatsApp Group for more Free notes [Link]
Join Our Telegram Channel for Free CS/IT Notes - [Link]
Software Requirement Specification (SRS) (Important)
SRS is a document created by system analyst after the requirements are collected from various stakeholders.
SRS defines how the intended software will interact with hardware, external interfaces, speed of operation,
response time of system, portability of software across various platforms, maintainability, speed of recovery
after crashing, Security, Quality, Limitations etc. The requirements received from client are written in natural
language. It is the responsibility of the system analyst to document the requirements in technical language so
that they can be comprehended and used by the software development team.
1. Correct: The SRS accurately represents the needs and expectations of the stakeholders. It should reflect
the true requirements of the system.
2. Unambiguous: The requirements should be clear and precise, leaving no room for misinterpretation.
Ambiguities can lead to confusion and errors in the development process.
3. Complete: The SRS should capture all relevant requirements necessary for the successful development
and operation of the software system. Missing requirements can result in incomplete or inadequate
software.
4. Consistent: The requirements should not conflict with each other and should be coherent across the
entire document. Inconsistencies can lead to confusion and make it difficult to understand the system's
behaviour.
5. Ranked for Importance and/or Stability: Requirements should be prioritized based on their importance to
the stakeholders or their stability over time. This helps in making informed decisions during development
and managing changes effectively.
6. Verifiable: The requirements should be testable, allowing for validation that the software meets the
specified criteria. Verifiability ensures that stakeholders can confirm whether the software fulfills their
needs.
7. Modifiable: The SRS should be flexible and allow for changes as requirements evolve or new information
becomes available. It should be possible to update or modify requirements without compromising the
integrity of the document.
8. Traceable: Each requirement should be traceable to its source, whether it's a stakeholder request, a
regulatory requirement, or a design decision. Traceability helps in understanding the rationale behind each
requirement and facilitates impact analysis when changes occur.
Types of Requirements: The below diagram depicts the various types of requirements that are captured during
SRS.
➢ Formal Specification Methods: Formal specification methods are techniques used to describe the
behaviour and properties of a software system using formal mathematical languages or notations.
• Purpose: These methods help in precisely defining the requirements, design, and behaviour of
software systems to ensure correctness, completeness, and consistency.
• Examples: Formal specification methods include Z notation, B method, Abstract State Machines
(ASM), and Specification and Description Language (SDL).
➢ Specification Tools: Specification tools are software applications or platforms used to document,
manage, and analyse software requirements and specifications.
• Purpose: These tools facilitate collaboration among stakeholders, enable traceability of requirements,
and support version control and change management.
• Examples: Popular specification tools include IBM Rational DOORS, Jama Connect, Sparx Systems
Enterprise Architect, and ReqView.
➢ Flow-Based Analysis: Flow-based analysis is a technique used to analyse the flow of data or control within
a software system.
• Purpose: This analysis helps in understanding how data or control moves through the system,
identifying potential bottlenecks, and optimizing system performance.
• Examples: Flow-based analysis techniques include data flow diagrams (DFD), control flow diagrams,
and process flowcharts.
➢ Data-Based Analysis: Data-based analysis involves analysing the characteristics, structure, and
relationships of data within a software system.
• Purpose: This analysis helps in designing efficient data storage and retrieval mechanisms, ensuring
data integrity, and optimizing data processing.
• Examples: Data-based analysis techniques include entity-relationship diagrams (ERD), data
dictionaries, and data modelling languages such as UML (Unified Modelling Language).
➢ Object-Oriented Analysis (OOA): Object-Oriented Analysis (OOA) is a methodology for analysing and
modelling software systems based on the concept of objects and classes.
• Purpose: OOA helps in identifying the objects, classes, attributes, and behaviors of a system, as well
as defining their relationships and interactions.
• Examples: Techniques used in OOA include class diagrams, use case diagrams, sequence diagrams,
and state diagrams, which are part of the Unified Modelling Language (UML).
Types of Documentation
➢ User Manuals/Guides: These documents are aimed at end-users and provide instructions on how to use
the software. They may include tutorials, FAQs, troubleshooting tips, and examples.
➢ Technical Documentation: This type of documentation is aimed at developers and includes details about
the software architecture, APIs, data structures, algorithms, and codebase organization.
➢ System Requirements: Documents outlining the hardware, software, and other resources required to run
the system.
➢ Design Documents: These documents describe the design decisions made during the development of the
software, including system architecture, data flow diagrams, and user interface design.
➢ Test Documentation: Documents related to testing, including test plans, test cases, and test results.
System planning involves gathering necessary data and facts to understand the requirements and context of a
system before designing and implementing it. Here are the techniques commonly used for data and fact
gathering:
1. Interviewing: Interviewing involves direct conversations with stakeholders, including end-users, clients,
managers, and subject matter experts.
• How it works: Interviewers ask specific questions to gather information about the system's
requirements, goals, constraints, and user needs. They may conduct individual or group interviews to
gather insights from various perspectives.
• Advantages: Allows for direct interaction with stakeholders to clarify requirements and gather detailed
information. Provides opportunities for stakeholders to express their needs and concerns.
• Disadvantages: Can be time-consuming and may require skillful questioning to extract relevant
information. Bias or miscommunication may affect the accuracy of the gathered data.
2. Communications: Communications involve exchanging information through various channels, such as
emails, memos, or online collaboration platforms.
• How it works: Project managers and team members communicate with stakeholders to gather
requirements, provide updates, and address concerns throughout the planning process.
• Advantages: Facilitates ongoing communication and feedback exchange with stakeholders, ensuring
that project requirements are understood and addressed effectively.
• Disadvantages: May lead to information overload or misunderstandings if not managed properly.
Requires clear and effective communication strategies to ensure that all relevant stakeholders are
engaged.
3. Presentations: Presentations involve sharing information in a formal setting, such as meetings,
workshops, or seminars.
• How it works: Project teams present project plans, progress reports, or proposals to stakeholders to
gather feedback, gain buy-in, and align expectations.
• Advantages: Allows for visual and verbal communication of complex information, making it easier for
stakeholders to understand project goals and requirements.
• Disadvantages: Requires preparation and coordination to ensure that presentations are effective and
engaging. May not provide opportunities for direct interaction or detailed discussions with
stakeholders.
4. Site Visit: Site visits involve physically inspecting the location or environment where the system will be
implemented or used.
• How it works: Project teams visit client sites, end-user locations, or project sites to observe
workflows, gather context-specific information, and identify potential challenges or opportunities.
• Advantages: Provides firsthand insights into the operational environment and user workflows, helping
to identify requirements and design solutions that meet real-world needs.
• Disadvantages: Can be time-consuming and may require coordination with multiple stakeholders.
May not be feasible for remote or inaccessible locations.
A Feasibility Study in software engineering is a systematic assessment of the practicality and viability of a
proposed software project. It aims to determine whether the project is technically, economically, and
operationally feasible before committing resources to its development.
1. Technical Feasibility:
• Assesses whether the proposed software project can be implemented using available technology and
resources.
• Considers factors such as hardware and software requirements, technical expertise, and compatibility
with existing systems.
• Determines if the project can be completed within the desired timeframe and budget constraints.
2. Economic Feasibility:
• Evaluates the financial viability of the proposed software project.
• Estimates the costs associated with development, implementation, maintenance, and support.
• Compares the projected costs against the expected benefits, such as increased revenue, cost savings,
or competitive advantages.
• Conducts cost-benefit analysis to determine if the project will deliver a positive return on investment
(ROI).
3. Operational Feasibility:
• Assesses whether the proposed software project aligns with the organization's goals, objectives, and
operational processes.
• Considers factors such as user acceptance, organizational culture, and potential impact on business
operations.
• Determines if the project will improve efficiency, productivity, or competitiveness within the
organization.
4. Legal and Regulatory Feasibility:
• Examines the legal and regulatory requirements that may impact the proposed software project.
• Identifies potential legal risks, compliance issues, intellectual property rights, and data privacy
concerns.
• Ensures that the project complies with relevant laws, regulations, and industry standards.
5. Schedule Feasibility:
• Evaluates whether the proposed software project can be completed within the desired timeframe.
• Considers factors such as project scope, resource availability, and dependencies on external factors.
• Develops a realistic project schedule and timeline to ensure timely delivery of the software solution.
Cost-Benefit Analysis (CBA) is a technique used to evaluate the financial implications of a proposed project or
decision by comparing the costs involved with the benefits expected to be gained. Here are some tools and
techniques commonly used in conducting a cost-benefit analysis:
1. Financial Metrics:
• Net Present Value (NPV): NPV calculates the present value of all cash inflows and outflows associated
with the project, discounted at a specified rate of return. A positive NPV indicates that the benefits
outweigh the costs.
• Internal Rate of Return (IRR): IRR is the discount rate at which the NPV of a project is zero. It
represents the project's expected rate of return and is used to compare against the organization's cost
of capital.
• Payback Period: Payback period calculates the time it takes for the project's cumulative cash inflows
to equal its initial investment. A shorter payback period indicates a faster return on investment.
2. Sensitivity Analysis: Sensitivity analysis examines how changes in key variables, such as costs, revenues,
or market conditions, affect the project's financial outcomes. It helps identify which factors have the most
significant impact on the project's viability.
3. Scenario Analysis: Scenario analysis evaluates different scenarios or assumptions about the project's
costs and benefits to understand their potential impact on financial outcomes. It helps assess the project's
robustness under various conditions.
4. Break-Even Analysis: Break-even analysis calculates the point at which the project's revenues equal its
costs, resulting in zero profit or loss. It helps determine the level of sales or output required for the project
to be financially viable.
5. Cost-Benefit Matrix: A cost-benefit matrix compares the costs and benefits of different project
alternatives or options. It provides a visual representation of the trade-offs between costs and benefits to
facilitate decision-making.
6. Opportunity Cost Analysis: Opportunity cost analysis evaluates the benefits forgone by choosing one
project or investment over another. It helps assess the value of the next best alternative and whether the
chosen project maximizes overall benefits.
7. Risk Analysis: Risk analysis assesses the potential risks and uncertainties associated with the project,
such as cost overruns, revenue shortfalls, or market fluctuations. It helps quantify the impact of risk on the
project's financial outcomes.
8. Discounted Cash Flow (DCF) Analysis: DCF analysis calculates the present value of all future cash flows
generated by the project, discounted at a specified rate. It provides a comprehensive assessment of the
project's financial performance over time.
Prototyping: Prototyping is an iterative approach to software development where a basic version of the
software is created rapidly to validate requirements, explore design options, and gather feedback from
stakeholders.
Purpose: The primary goal of prototyping is to enable stakeholders to visualize and interact with the proposed
software solution early in the development process, allowing for early identification of requirements, design
flaws, and potential improvements.
Benefits of Prototyping:
CASE stands for Computer Aided Software Engineering. It means, development and maintenance of software
projects with help of various automated software tools.
CASE Tools: CASE tools are set of software application programs, which are used to automate SDLC activities.
CASE tools are used by software project managers, analysts and engineers to develop software system. There
are number of CASE tools available to simplify various stages of Software Development Life Cycle such as
Analysis tools, Design tools, Project management tools, Database Management tools, Documentation tools
are to name a few. Use of CASE tools accelerates the development of project to produce desired result and
helps to uncover flaws before moving ahead with next stage in software development.
1. Automation: CASE tools automate repetitive tasks in software development, such as code generation,
documentation, and testing. This saves time and reduces the chance of human error.
2. Standardization: CASE tools enforce standard practices and methodologies across development teams,
ensuring consistency in coding styles, design patterns, and documentation formats.
3. Collaboration: CASE tools facilitate collaboration among team members by providing centralized
repositories for storing and sharing project artifacts, such as requirements, designs, and test cases.
4. Visualization: CASE tools offer visual representations of software components, such as diagrams and
charts, making it easier to understand complex systems and communicate ideas effectively.
5. Analysis: CASE tools provide analysis capabilities to evaluate the quality, performance, and maintainability
of software artifacts, helping developers make informed decisions during the development process.
1. Cost: Using a case tool is very costly. Most firms engaged in software development on a small scale do not
invest in CASE tools because they think that the benefit of CASE is justifiable only in the development of
large systems.
2. Learning Curve: In most cases, programmers’ productivity may fall in the initial phase of implementation,
because users need time to learn the technology. Many consultants offer training and on-site services that
can be important to accelerate the learning curve and to the development and use of the CASE tools.
3. Tool Mix: It is important to build an appropriate selection tool mix to urge cost advantage CASE integration
and data integration across all platforms is extremely important.
Components of CASE Tools: CASE tools can be broadly divided into the following parts based on their use at a
particular SDLC stage:
• Central Repository - CASE tools require a central repository, which can serve as a source of common,
integrated and consistent information. Central repository is a central place of storage where product
specifications, requirement documents, related reports and diagrams,
other useful information regarding management is stored. Central
repository also serves as data dictionary.
• Upper Case Tools - Upper CASE tools are used in planning, analysis and
design stages of SDLC.
• Lower Case Tools - Lower CASE tools are used in implementation, testing
and maintenance.
• Integrated Case Tools - Integrated CASE tools are helpful in all the stages
of SDLC, from Requirement gathering to Testing and documentation.
Choice of Programming Languages: Refers to the decision-making process of selecting programming languages for
developing software systems.
• Factors Considered: Performance requirements, platform compatibility, developer expertise, community support,
and project scalability.
• Examples: Popular programming languages include Python, Java, C++, JavaScript, and Ruby.
Mixed Language Programming: Involves using multiple programming languages within a single software project to
leverage the strengths of each language.
Cell Semantics: A programming paradigm that treats program components as autonomous cells, each encapsulating its
state and behaviour.
• Benefits: Allows developers to choose the best-suited language for different parts of the system, enhancing
performance, productivity, and maintainability.
Reengineering Legacy Systems in Software Engineering: Reengineering legacy systems involves modernizing and
updating outdated software systems to improve performance, maintainability, and functionality.
• Challenges: Understanding legacy code, identifying dependencies, mitigating risks, and ensuring backward
compatibility.
• Approaches: Refactoring, rewriting, replatforming, or replacing legacy systems with modern alternatives.
• Benefits: Enhances system reliability, scalability, and security while extending the lifespan of existing investments
in software systems.
Coding Standards: General coding standards refers to how the developer writes code, so here we will
discuss some essential standards regardless of the programming language being used.
1. Indentation: Proper and consistent indentation is essential in producing easy to read and maintainable
programs.
Indentation should be used to:
➢ Emphasize the body of a control structure such as a loop or a select statement.
➢ Emphasize the body of a conditional statement.
➢ Emphasize a new scope block.
2. Inline comments: Inline comments analyze the functioning of the subroutine, or key aspects of the
algorithm shall be frequently used.
3. Rules for limiting the use of global: These rules file what types of data can be declared global and what
cannot.
4. Structured Programming: Structured (or Modular) Programming methods shall be used. "GOTO"
statements shall not be used as they lead to "spaghetti" code, which is hard to read and maintain, except
as outlined line in the FORTRAN Standards and Guidelines.
5. Naming conventions for global variables, local variables, and constant identifiers: A possible naming
convention can be that global variable names always begin with a capital letter, local variable names are
made of small letters, and constant names are always capital letters.
6. Error return conventions and exception handling system: Different functions in a program report the way
error conditions are handled should be standard within an organization. For example, different tasks while
encountering an error condition should either return a 0 or 1 consistently.
Software Quality Assurance (SQA) is a systematic process used to ensure that software products meet
specified quality standards and requirements throughout the software development life cycle. Here's a
simplified explanation:
• Definition: Software Quality Assurance (SQA) refers to the planned and systematic activities performed
within the software development process to ensure that the final software product meets specified
quality standards and requirements.
• Purpose: The primary goal of SQA is to prevent defects, errors, and bugs in software products by
implementing quality control measures and best practices throughout the development process.
1. Quality Planning: Involves defining quality objectives, establishing quality metrics, and creating a
quality management plan that outlines the processes, standards, and procedures to be followed during
the software development life cycle.
2. Quality Control: Encompasses activities such as code reviews, testing, and inspections to identify and
address defects and deviations from quality standards at various stages of the development process.
4. Quality Assurance Audits: Conducting regular audits and assessments to evaluate compliance with
quality standards, identify areas for improvement, and ensure adherence to established processes and
procedures.
1. Quality Assurance Engineer: Responsible for developing and implementing quality assurance
processes, conducting audits, and ensuring compliance with quality standards and requirements.
2. Testers: Responsible for designing and executing test cases, identifying defects, and verifying that the
software meets specified functional and non-functional requirements.
3. Quality Managers: Responsible for overseeing the overall quality assurance process, defining quality
objectives, and ensuring that quality standards are met throughout the software development life cycle.
1. Improved Product Quality: Ensures that software products meet specified quality standards and
requirements, resulting in higher customer satisfaction and reduced post-release defects.
2. Cost Reduction: Identifies and addresses defects early in the development process, reducing the cost
of rework, maintenance, and support.
3. Enhanced Customer Satisfaction: Delivers software products that are reliable, stable, and perform as
expected, leading to increased customer trust and loyalty.
4. Risk Mitigation: Helps identify and mitigate risks associated with software development, such as
schedule delays, budget overruns, and security vulnerabilities.
1. Basic It is a software testing technique that examines In white-box testing, the internal
the functionality of software without knowing structure of the software is known to
its internal structure or coding. the tester.
2. Also known as Black Box Testing is also known as functional It is also known as structural testing,
testing, data-driven testing, and closed-box clear box testing, code-based testing,
testing. and transparent testing.
4. Algorithm testing It is not well suitable for algorithm testing. It is well suitable and recommended for
algorithm testing.
5. Usage It is done at higher levels of testing that are It is done at lower levels of testing that
system testing and acceptance testing. are unit testing and integration testing.
6. Automation It is hard to automate black-box testing due to It is easy to automate the white box
the dependency of testers and programmers testing.
on each other.
9. Base of testing The base of this testing is external The base of this testing is coding which
expectations. is responsible for internal working.
10. Exhaustive It is less exhaustive than White Box testing. It is more exhaustive than Black Box
testing.
12. Aim The main objective of implementing black box Its main objective is to check the code
testing is to specify the business needs or the quality.
13. Defect detection In black-box testing, defects are identified Whereas, in white box testing, there is a
once the code is ready. possibility of early detection of defects.
14. Testing method It can be performed by trial and error It can test data domain and data
technique. boundaries in a better way.
15. Types Mainly, there are three types of black-box The types of white box testing are – Path
testing: functional testing, Non-Functional testing, Loop testing, and Condition
testing, and Regression testing. testing.
16. Errors It does not find the errors related to the code. In white-box testing, there is the
detection of hidden errors. It also helps
to optimize the code.
Software Testing: Software testing is the process of evaluating a software application or system to ensure
that it meets specified requirements and functions correctly.
1. Purpose: The primary purpose of software testing is to identify defects or bugs in the software early in
the development process, thereby reducing the risk of errors in the final product and ensuring its quality
and reliability.
2. Key Activities: Software testing involves planning and designing test cases, executing tests, analyzing
results, and reporting defects to developers for resolution.
1. Unit Testing:
• Typically performed by developers using frameworks such as JUnit for Java or NUnit for .NET.
2. Integration Testing:
• Tests the interaction between different modules or components of the software to ensure that they
work together as intended.
3. System Testing:
• Evaluates the entire software system as a whole to verify that it meets specified requirements and
functions correctly in the intended environment.
• Includes functional testing, usability testing, performance testing, and security testing.
4. Acceptance Testing:
• Validates whether the software meets the acceptance criteria defined by stakeholders and is ready for
deployment.
5. Regression Testing:
• Re-tests previously tested functionalities or components to ensure that recent changes or fixes have
not introduced new defects or broken existing functionality.
• Helps maintain software quality and stability throughout the development lifecycle.
6. Performance Testing:
• Assesses the performance, scalability, and responsiveness of the software under various conditions,
such as high load, concurrency, and stress.
7. Security Testing:
• Identifies vulnerabilities, weaknesses, and security risks in the software that could be exploited by
attackers.
8. Usability Testing:
• Evaluates the user interface, navigation, and overall user experience of the software to ensure that it is
intuitive, easy to use, and meets user needs.
• Involves gathering feedback from end-users through surveys, interviews, and usability testing
sessions.
Software Validation: Validation is process of examining whether or not the software satisfies the user
requirements. It is carried out at the end of the SDLC. If the software matches requirements for which it was
made, it is validated.
• Validation ensures the product under development is as per the user requirements.
• Validation answers the question – "Are we developing the product which attempts all that user needs
from this software ?".
• Validation emphasizes on user requirements.
Software Verification: Verification is the process of confirming if the software is meeting the business
requirements and is developed adhering to the proper specifications and methodologies.
Target of the test are - Errors - These are actual coding mistakes made by developers. In addition, there is a
difference in output of software and desired output, is considered as an error.
• Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an error which can
cause system to fail.
• Failure - failure is said to be the inability of the system to perform the desired task. Failure occurs when
fault exists in the system.
Join Our WhatsApp Group for more Free notes [Link]
Join Our Telegram Channel for Free CS/IT Notes - [Link]
Important Topics –
Cohesion Coupling
Planning Software Projects: Planning software projects involves defining project objectives, scope,
deliverables, timelines, resources, and risks.
• Activities: Establish project goals, create a project plan, define requirements, allocate resources, and
develop a project schedule.
• Tools: Gantt charts, project management software (e.g., Microsoft Project, Jira), and collaboration tools
(e.g., Trello, Asana).
• Definition: A Work Breakdown Structure is a hierarchical decomposition of the project scope into
smaller, more manageable work packages.
• Purpose: Helps organize and define project tasks, allocate resources, estimate costs, and establish
accountability.
• Components: WBS organizes work into phases, deliverables, tasks, and sub-tasks, providing a visual
representation of the project's scope and structure.
• Definition: Integrating software design and project planning involves aligning the technical design and
architecture of the software with project objectives and requirements.
• Activities: Define system architecture, identify design patterns, establish coding standards, and ensure
design compliance with project constraints.
• Benefits: Ensures that software design aligns with project goals, facilitates efficient development,
reduces rework, and improves project outcomes.
• Composition: Software project teams typically consist of developers, designers, testers, project
managers, business analysts, and other stakeholders.
• Roles and Responsibilities: Each team member has specific roles and responsibilities aligned with
their expertise and contribution to project deliverables.
• Collaboration: Effective communication, collaboration, and teamwork are essential for project
success. Regular meetings, status updates, and feedback sessions help foster collaboration among
team members.
• Definition: Project monitoring and control involve tracking project progress, identifying variances from
the project plan, and taking corrective actions to keep the project on track.
• Activities: Monitor project milestones, track progress against the project schedule, assess risks and
issues, and implement corrective actions as needed.
• Tools: Project management software, progress reports, status meetings, and performance metrics help
monitor and control project activities.