You are on page 1of 1

Structured Analysis: Design Principles:

Introduction: Problem Partitioning and Hierarchy: Breaking down a complex problem


Structured Analysis is a system development technique that transforms into smaller, more manageable sub-problems is essential. Hierarchy
user requirements into a well-defined system specification. It helps in involves organizing these sub-problems into levels, creating a
understanding and documenting the flow of data within a system and structured and understandable system. This aids in managing
identifying the processes that manipulate this data. complexity and facilitates efficient problem-solving.
Abstraction: Abstraction involves focusing on the essential features of
Elements of Analysis Model: an object or system while ignoring unnecessary details. It simplifies the
The analysis model comprises three main elements: processes, data, and design process by allowing designers to concentrate on the high-level
external entities. structure without getting bogged down by minutiae.
Processes represent the tasks or activities Modularity: Modularity is the concept of dividing a system into
Data refers to the information manipulated by processes. independent and interchangeable modules or components. Each
External entities are sources or destinations of data. module performs a specific function and can be developed, tested, and
modified independently. This enhances maintainability, reusability, and
Data Objects, Attributes, and Relationships: understandability of the system.
Data objects are entities in the system that store information. Attributes
describe the characteristics of these data objects, and relationships define Design Strategies:
how different data objects are related to each other. For example, in a Top-down Strategy: Top-down design involves starting with the overall
library system, a "Book" is a data object with attributes like "Title" and system and breaking it down into smaller sub-systems or modules. This
"Author," and it has a relationship with the "Borrower" data object. hierarchical approach allows for a systematic and structured design
process. It facilitates focusing on higher-level functionalities before delving
Cardinality and Modality: into the details.
Cardinality defines the number of instances of one entity that can be Bottom-up Strategy: Bottom-up design starts with individual components
associated with another. Modality specifies whether the presence of an or modules and gradually integrates them to form a complete system. This
entity in a relationship is optional or mandatory. For instance, in a "Teacher approach is useful when the functionalities of lower-level modules are well-
teaches Class" relationship, the cardinality might be one-to-many, and the understood or when reusing existing components. It promotes building
modality could be mandatory on the "Teacher" side and optional on the from the ground up.
"Class" side.
Effective Modular Design:
ERD (Entity-Relationship Diagram): Functional Independency: Each module should perform a specific and
ERD is a visual representation of the relationships between different entities well-defined function without unnecessary dependencies on other
in a system. It uses symbols like rectangles for entities, diamonds for modules. Functional independency ensures that changes to one module
relationships, and ovals for attributes. ERDs help in understanding the do not affect others, enhancing maintainability and flexibility.
structure of a database and how data flows between different entities. Cohesion: Cohesion refers to the degree to which the elements within a
module are related and contribute to a common purpose. High
DFD (Data Flow Diagram): cohesion implies that the module has a single, well-defined
DFD illustrates how data moves within a system. It consists of processes, responsibility, promoting clarity and ease of maintenance.
data stores, data flow, and external entities. Processes represent the Coupling: Coupling measures the degree of dependence between
functions or activities, and arrows depict the flow of data between these modules. Low coupling is desirable as it minimizes the impact of
components. DFDs are crucial for understanding the overall system changes in one module on others. Modules should communicate
architecture. through well-defined interfaces, reducing interdependencies and
enhancing system flexibility.
Software Testing Fundamentals:
Purpose of Testing: Techniques:
Testing is conducted to identify and fix errors in software, ensuring that it Print Statements: Adding print statements to display variable values
meets specified requirements and functions correctly. It aims to enhance during execution.
the quality, reliability, and performance of software systems. Interactive Debugging: Using debugging tools that allow step-by-step
execution and inspection of code.
Verification vs. Validation:
Verification involves checking whether the software adheres to its Software Quality Factors:
specifications. Validation, on the other hand, ensures that the software Functionality: Ensures that the software meets the specified
meets the customer's expectations and needs. requirements and performs its intended functions accurately.

White Box Testing: Reliability: Measures the software's ability to perform consistently
White Box Testing, also known as structural or glass box testing, involves under varying conditions and for a specified period.
testing the internal logic, structure, and code of a software application.
Testers have knowledge of the internal workings of the code. Usability: Focuses on the user interface and overall user experience,
assessing how easily users can interact with the software.
Techniques:
Statement Coverage: Ensures that each line of code is executed at least Efficiency: Examines the software's performance in terms of speed,
once during testing. resource utilization, and responsiveness.
Branch Coverage: Verifies that every branch of decision-making
constructs is executed. Maintainability: Assesses how easily the software can be modified,
Path Coverage: Tests all possible paths from the start to the end of a updated, or enhanced without causing disruptions.
function.
Advantages of Testing:
Black Box Testing:
Black Box Testing focuses on testing the functionality of a software Early Defect Detection: Testing helps identify and address defects early
application without any knowledge of its internal code. Testers evaluate in the development process, reducing the cost and effort required for
inputs and outputs to ensure that the system behaves as expected. later corrections.

Techniques: Improved Quality: Effective testing enhances the overall quality and
Equivalence Partitioning: Divides input data into partitions and tests one reliability of the software, ensuring it meets user expectations.
representative value from each partition.
Boundary Value Analysis: Tests values at the edge of acceptable ranges. Increased Customer Satisfaction: Thorough testing results in a more
Error Guessing: Testers use their experience to anticipate potential errors. robust and error-free software product, leading to higher customer
satisfaction.
Debugging:
Debugging is the process of identifying, isolating, and fixing defects or Cost Savings: Identifying and fixing defects early in the development
"bugs" in software. It involves analyzing code, examining variables, and process is more cost-effective than addressing them after the software
correcting errors to ensure the program functions correctly. is deployed.

You might also like