Cheat Sheet
Cheat Sheet
represents a linear flow, where progress flows in execution. Technical Architect - Designs the technical architecture and ensures the management
one direction through a series of distinct phases: project’s technical integrity. Business Analyst - Gathers and analyzes requirements, involves planning
Requirements definition: get requirement translating them intofunctional specifications. Tester - Conducts testing activities (estimation, sche -
documents, Analysis and design: get SW to ensure SW quality and identify defects. Maintainer - Responsible for ongoing duling, and task
architecture documents(SAD), Implementation maintenance and support of the SW after deployment assignment), team
and unit testing: get source code and test cases, SW requirements :User requirements represent the high-level needs building, human
Integration and System testing: get test result and expectations of end users, while system requirements provide management, con -
specific details about the SW system's behavior and characteristics. trolling and moni -
Advantage: Clear Documentation - Predictable and Easy
System requirements often include use cases, toring (reporting,
structured - Well-Suited for Stable Requirements - Easy
which describe interactions between users and the system, and user problem-solving, and
Management || Disadvantage: Inflexibility to Changes -
stories, which provide concise descriptions of desired features. customer colla -
Late Feedback - Limited User Involvement - No
Additionally, there are functional requirements that specify the system's boration), and risk
Deliverables Until the End - Testing and Debugging
desired functions and operations, and nonfunctional requirements ….… management
Challenges – Depen -dency on Initial Requirements
RUP Model: doing things repeatedly, incrementally. …….that define qualities and constraints such as performance and security. Domain requi-
Detailed process to do things and roles of team members rements, specific to a particular application domain, can be functional or non-functional, cap-
(Inception, Elaboration, Construction, Transition) turing unique needs and constraints. Effectively managing these requirements is crucial for
Advantage: Iterative and Incremental - Risk Management – developing a system that meets user needs, aligns with goals, and adheres to industry standards
Adaptability - Well-Defined Phases – Collaboration
Requirements engineering: the process of gathering, analyzing, documenting, and validating
Disadvantage: Complexity - Documentation Overhead
SW requirements.In the requirement gathering phase, techniques such as interviews, surveys,
Agile Model: iterative and incremental; emphasizes observation, and record analysis are used to collect comprehensive requirements from
flexibility, collaboration, and customer involvement. It aims stakeholders. The requirement analysis and documentation phase involves analyzing the
to deliver value to customers early and often by breaking gathered information to define the scope, dependencies, and relationships of the
down the development process into small, manageable requirements. Use case modeling is often employed to describe system behavior and
increments called "sprints" or "iterations“. Advantage: interactions. In the requirement validation phase, techniques like inspection, test-driven
Flexibility and Adaptability - Customer-Centric - Faster development (TDD), and prototyping (Proof of Concept) are utilized to ensure the
Delivery of Value - Iterative and Incremental - Continuous completeness, consistency, and feasibility of the requirements. Requirement management
Improvement - Stakeholder Collaboration - Reduced Risk - involves tracing, prioritizing, and accommodating changes in requirements throughout the
Higher Quality || Disadvantage: Lack of Predictability – SW development lifecycle, ensuring they align with project goals and objectives.
Complexity - Dependency on Customer Availability -
Documentation Challenges - Communication Overhead Why do we need to detail/form an Requirements validation: is necessary to ensure
4 value propositions: Individuals and interactions, working architecture for the SW? Firstly, it accurate, complete, and feasible require-ments,
SW, customer collaboration, responding to change. Scrum provides a high-level overview and minimizing risks and avoiding project failures.
is an Agile framework that emphasizes iterative structure of the SW system, faci- Requirement inspection or review is effective
development; includes sprints (time-boxed iterations), litating clear communication and sha- because it systematically identifies errors, inconsis-
backlog management, defined roles (product owner, red understanding among stake- tencies, and omissions, leveraging multiple
development team, Scrum master), and events (daily holders. Secondly, it guides the design perspectives and expertise to improve requirement
Scrum, sprint planning, sprint review, sprint retrospective). process by offering principles, quality and promote collaboration among team
It promotes transparency, adaptability, and continuous patterns, and best practices, aiding in members..
improvement in SW development. informed decision-making…
Scalability involves designing the architecture to handle increasing …Additionally, a well-defined architecture anticipates scalability and flexibility
workloads. Reliability requires implementing mechanisms for fault requirements, enabling future changes and reducing redesign efforts. Moreover,
tolerance and error handling. Usability focuses on user-centered design it plays a vital role in achieving desired quality attributes by identifying and
and intuitive interfaces. Interoperability ensures smooth integration with addressing performance, reliability, security, safety, availability, maintainability
external systems. Extensibility allows for easy addition or modification of (fine-grain, self-contained components), and other aspects. Lastly, it fosters
functionalities. Flexibility enables adaptation to changing requirements. team collaboration by providing clear boundaries and interfaces, allowing for
Compliance ensures adherence to regulations and standards. independent work while ensuring integration and interoperability.
Scalability in SW systems can be achieved through Class diagrams are graphical representations that illustrate the classes, their relationships,
horizontal scaling (adding more machines /nodes) or and their attributes and methods. They provide a visual overview of the system's structure
vertical scaling (upgrading resources of a single machine). and help in understanding the organization of classes and their interactions. Sequence
Horizontal scaling distributes the workload across multiple diagrams depict the flow of interactions between objects or components in a particular
instances, improving load balancing and fault tolerance. scenario or use case. They illustrate the order in which messages are sent between objects and
Vertical scaling enhances the capabilities of a single server, the responses they generate, helping to visualize the dynamic behavior of the system. Both
simplifying management and maintenance. The choice high-level and detailed design are crucial for creating a comprehensive and wellstructured SW
depends on factors like application nature, traffic patterns, solution, with high-level design providing an architectural roadmap and detailed design diving
and resource requirements. A combination of both into the specifics of implementation. Class diagrams and sequence diagrams are valuable tools
approaches can be used for optimal scalability. in documenting and communicating the design decisions.
XP (Extreme Programming) emphasizes taking good Static inspection: Review (artifacts, work products): …security vulnerabilities, coding style vio-
SW development practices to the extreme. It is This technique involves a systematic examination of ations, and other issues.It helps ensure code
characterized by the following key practices: pair SW artifacts, such as require-ments documents, design quality and adherence to coding standards
programming (collaborative coding), small releases specifications, or code, to identify defects, Dynamic teachniques: Testing involves
(frequent delivery of working SW), coding standards inconsistencies, and adherence to standards. Reviews executing the SW and observing its behavior
(maintaining consistent code style), and a can be performed by individuals or in a group setting to validate its functionality, performance,
philosophy of continuous improvement. XP and help catch issues early in the development process. and reliability. Various testing techniques,
promotes values like communication, simplicity, Analysis (code analysis): Code analysis tools are used to such as unit testing, integration testing,
feedback, and courage, fostering a collaborative and examine the source code without executing it. Static system testing, and acceptance testing, are
quality-driven approach to SW development. code analysis can identify potential coding errors …. employed to verify that the SW meets
SW project Test-driven development (TDD) is a A test case is a set of conditions or specified requirements and behaves as
management: development methodology where tests are actions designed to verify specific expected. Analysis techniques involve
include delivering the written before the actual code is implemented. functionality or behavior of the analyzing the SW during runtime to gather
project within budget, Developers create automated tests that define SW. It includes inputs, expected information about its execution behavior,
meeting quality the desired behavior of the SW. The code is outcomes, and steps to be performance characteristics, memory usage,
standards, adhering to then implemented incrementally to pass these executed during testing. Test and other runtime properties. This
the schedule, and tests. TDD promotes code quality, test steps are the detailed instructions information helps identify performance
satisfying customer coverage, and helps drive the development or actions that need to be bottlenecks, memory leaks, and other
requirements. process based on requirements. followed to execute a test case(**) runtime issues.
Model-driven development (MDD) is an approach Test data refers to the inputs or TDD and MDD play important roles in SW development
where models are used as the primary artifacts in the values used during testing to exe- by ensuring quality, improving productivity, and reducing
SW development process. Models capture the system's cute the test cases. It includes both defects. Static inspection and analysis techniques catch
requirements, design, and behavior and serve as the valid and invalid data to cover issues early in the development process, while dynamic
basis for generating code or other implementation various scenarios and edge cases. techniques like testing and analysis validate the SW's
artifacts. MDD emphasizes the use of visual models to Test results are the outcomes or behavior and performance. Test-driven development and
improve communication, reduce errors, and increase observations observed during the model-driven development provide structured
productivity in SW development. execution of the test cases. approaches to SW development, emphasizing quality, and
Unit testing examines individual components or units of code, while system testing includes reducing development risks.
integration testing to verify the interaction between units and release testing to validate the Functional testing focuses on verifying the functional
entire system before deployment. Finally, acceptance testing evaluates the SW from the user's requirements of the SW. It ensures that the SW behaves
perspective to ensure it meets the specified requirements. By conducting testing at these levels, as expected and performs its intended functions.
developers can identify and rectify defects, ensure seamless integration, and deliver a high-quality …These types of testing cover both functional and non-
SW product that meets user expectations. functional aspects of the SW to ensure its quality,
Non-functional: Performance testing - evaluating the SW's speed, responsiveness, scalability, and performance, usability, and security. Functional testing
resource usage under different workloads to ensure it meets performance requirements, Load verifies that the SW functions correctly, while non-
testing - assessing the SW's behavior and performance when subjected to expected or increased functional testing focuses on performance, load handling,
workloads. It tests the SW's ability to handle concurrent users or large amounts of data, Usability usability, and security aspects to deliver a well-rounded
testing - evaluating the SW's user-friendliness, intuitiveness, and ease of use. It assesses how well and reliable SW product.
users can navigate and interact with the SW. Security testing identifies vulnerabilities and Regression testing is performed to ensure that changes to
weaknesses in the SW's security mechanisms. It ensures that the SW protects data, has the SW do not introduce new defects or impact existing
appropriate access controls, and guards against potential security breaches. … functionality. Ad-hoc testing is unplanned and informal
Defects, also known as bugs or issues, are problems or abnormalities identified during testing testing used to explore the SW system for defects. Smoke
where the actual behavior of the SW deviates from the expected behavior. Defects are recorded, testing quickly verifies critical functionalities after a build
tracked, and subsequently addressed by the development team. Test coverage measures the or release. These testing techniques contribute to SW
extent to which the SW and its features have been tested. It ensures that all critical areas of the quality by uncovering defects, evaluating system behavior,
SW have been exercised. Different types of test coverage include: Code coverage - measures the and ensuring stability.
proportion of code or statements that have been executed during testing. Function coverage (1) …(1)- focuses on verifying that all functions or methods
within the software have been tested. ….(2)
(2)UI coverage - evaluates the extent to which the user interface elements and interactions
Requirement-based testing involve deriving test cases directly from
have been tested. Path coverage - aims to exercise all possible execution paths within the
the software requirements.It ensures that the software meets the
software, ensuring comprehensive testing of different logical flows. These concepts play a
specified functional and nonfunctional requirements.Test cases are
crucial role in planning, designing, executing, and evaluating software testing activities,
designed to validate each requirement individually or in combinatio
helping to ensure the thoroughness and effectiveness of the testing process
Equivalence partitioning is a technique used to reduce the Path testing aims to cover all possible execution paths in the Ad-hoc testing refers to
number of test cases while ensuring adequate coverage. It software. It involves identifying different paths, such as informal and
involves dividing the input domain into equivalent classes, branches, loops, and decision points, and designing test cases to unstructured testing
where each class exhibits similar behavior. Only one or a few traverse each path. This technique helps ensure comprehensive performed without
representative test cases from each class are selected for testing coverage of the code and logic within the software. following a predefined
Smoke testing, also known as build verification testing, is a preliminary testing activity performed to quickly determine whether the test plan. It relies on
critical functionalities of the software are working as expected after a build or release. It aims to identify major failures or the tester's intuition,
showstopping issues early on. Smoke tests are usually executed with minimal effort and cover the main features to ensure the experience, and
software is stable enough for further testing. These testing techniques provide different approaches to designing and executing test domain knowledge to
cases, ensuring thorough testing coverage and effective identification of defects in the software. Requirement-based testing ensures explore the software
alignment with requirements, equivalence partitioning reduces test case volume, path testing covers code paths, ad-hoc testing system and uncover
explores the system intuitively, and smoke testing quickly verifies critical functionalities defects. Ad-hoc testing
is flexible and allows
Why do we need to do requirements validation? Requirements validation helps us detect errors at an early stage of product testers to identify
development so that it does not result in excessive rework when detected later in the system development life cycle. Why issues that may not be
requirement inspection/review is effective? Requirement reviews and inspections are essential activities to ensure the quality, covered by formal
completeness, and consistency of system requirements. They help you identify and resolve errors, ambiguities, and gaps in the testing approaches.
requirements before they become costly and risky problems later in the development process.
Why do we need to detail/form an architecture for the software? A software architecture provides a The architectural design is based on the
blueprint for the system. It defines the system's components, their relationships, and their interactions. It requirements gathered during the analysis
helps to ensure that the system is well-designed, maintainable, and scalable. Improved communication: A phase. It involves making decisions about the
software architecture can help to ensure that everyone involved in the project is on the same page and overall structure, components, and interactions
understands the system's design. Increased flexibility: A well-designed software architecture can be easily of the system. The architecture should be
modified to meet changing requirements. Improved scalability: A software architecture can help to ensure designed to fulfill the identified requirements
that the system can grow and adapt to meet the needs of users. Reduced costs: A well-designed software and provide a blueprint for the development
architecture can help to avoid costly changes and rework later in the development process. process. The architecture can significantly
affect the performance of the software. A well-
Loosely coupled architecture promotes a modular and flexible
designed architecture takes into account
system, where components have minimal dependencies on each
performance considerations such as response
other. This allows for easier maintenance, scalability, and
time, throughput, and scalability. It enables
extensibility. Tightly coupled architecture, on the other hand, has
efficient resource utilization, effective load
strong dependencies between components, making the system
balancing, and optimized data access, all of
more interconnected but potentially harder to modify or scale.
which contribute to improved performance.
Fine-grained components refer to smaller High-level design focuses on defining
and more specialized components, offering the overall architecture and major
more granularity and flexibility. Coarse- components of the system, while
grained components, on the other hand, detailed design delves into the
are larger and encompass more specifics of individual components
functionality. The choice between fine- and their interactions. Detailed
grained and coarsegrained components design involves designing classes,
depends on factors like the complexity of methods, and data structures that
the system, reusability requirements, and implement the functionality outlined
the need for encapsulation. in the high-level design.