Software Engineering 1 - words/knowledge needed for 1-4 of "multible choice" Flashcards
Name the SOLID principles of object-oriented programming
Single Responsibility Principle (SRP)
Open/Closed Principle (OCP)
Liskov Substitution Principle (LSP)
Interface Segregation Principle (ISP)
Dependency Inversion Principle (DIP)
Explain Single Responsibility Principle (SRP)
(the S in SOLID principles of object-oriented programming)
Definition: A class should have only one reason to change, meaning it should have only one responsibility.
Goal: Keep classes focused on a single functionality to make the system more modular and easier to maintain.
Explain Open/Closed Principle (OCP)
(the O in SOLID principles of object-oriented programming)
Definition: Software entities (classes, modules, functions) should be open for extension but closed for modification.
Goal: Allow behavior to be extended without altering existing code, reducing the risk of introducing bugs in already-tested functionality.
Explain Liskov Substitution Principle (LSP)
(the L in SOLID principles of object-oriented programming)
Definition: Subclasses should be substitutable for their base classes without altering the correctness of the program.
Goal: Ensure that derived classes extend behavior without breaking the existing system.
Explain Interface Segregation Principle (ISP)
(the I in SOLID principles of object-oriented programming)
Definition: A class should not be forced to implement interfaces it does not use.
Goal: Create smaller, more specific interfaces rather than large, multipurpose ones, so that implementing classes only need to know about relevant methods.
Explain Dependency Inversion Principle (DIP)
(the D in SOLID principles of object-oriented programming)
Definition: High-level modules should not depend on low-level modules; both should depend on abstractions.
Goal: Decouple components by relying on abstractions rather than concrete implementations, enabling easier swapping and testing of components.
Explain Recovery Testing
Recovery Testing is a type of software testing that evaluates how well a system can recover from crashes, hardware failures, or other catastrophic issues. The primary goal is to ensure the system can return to a stable state after an unexpected disruption.
Explain Performance Testing
Definition: Performance testing evaluates how a system performs under various conditions, including normal and peak loads. It aims to measure responsiveness, stability, and scalability.
What are the key objectives of Perfomance Testing?
Key Objectives of Perfomance Testing:
- Identify bottlenecks in the system.
- Ensure the system meets performance benchmarks such as response time, throughput, and resource usage.
- Test the system’s behavior under stress (e.g., high user loads).
Name 4 types of Perfomance testing
Types of Performance Testing:
Load Testing
Stress Testing
Scalability Testing
Endurance Testing
Explain Load Testing
(a type of Perfomance Testing)
Load Testing: Assesses performance under expected user load.
Explain Stress Testing
(a type of Perfomance Testing)
Stress Testing: Tests limits by increasing the load beyond normal levels.
Explain Scalability Testing
(a type of Perfomance Testing)
Scalability Testing: Evaluates the system’s ability to scale up or down.
Explain Endurance Testing
(a type of Perfomance Testing)
Endurance Testing: Checks performance over an extended period.
Explain Compatibility Testing
Definition: Compatibility testing ensures that the software operates correctly across various environments, such as different operating systems, browsers, hardware configurations, or network conditions.
What are the key objectives of Compability Testing?
Key Objectives of Compability Testing:
- Confirm that the application behaves consistently across diverse platforms.
- Identify any platform-specific issues or limitations.
- Ensure proper integration with other software components or tools.
Name 4 aspects of Compability testing
OS Compatibility: Windows, macOS, Linux, etc.
Browser Compatibility: Chrome, Firefox, Safari, etc.
Device Compatibility: Smartphones, tablets, desktops, etc.
Network Compatibility: Different bandwidths or latency levels.
Give examples of OS Compatibility
(an aspect of Compability Testing)
Windows, macOS, Linux, etc.
Give examples of Browser Compatibility
(an aspect of Compability Testing)
Chrome, Firefox, Safari, etc.
Give examples of Device Compatibility
(an aspect of Compability Testing)
Smartphones, tablets, desktops, etc.
Give examples of Network Compatibility
(an aspect of Compability Testing)
Different bandwidths or latency levels.
Explain Data Validation or Input/Output Testing
Definition: This testing ensures the accuracy, reliability, and consistency of data being input into the system, processed, and output to the user or external systems.
What are the key objectives of Data Validation or Input/Output Testing?
Key Objectives of Data Validation or Input/Output testing:
- Validate that inputs conform to expected formats and constraints.
- Check data transformations, calculations, or processing accuracy.
- Verify that outputs are correct, complete, and in the expected format.
What are the 3 steps in Data Validation or Input/Output Testing?
Steps in Data Validation Testing:
Validate Input Data
Test Data Processing
Verify Output Data
Explain the first step in Data Validation or Input/Output Testing:
1) Validate Input Data
Ensuring that all inputs meet predefined criteria, such as correct formats, acceptable ranges, or required constraints. This step prevents invalid data from entering the system.
Explain the second step in Data Validation or Input/Output Testing:
2) Test Data Processing
Ensures that the system correctly processes input data according to defined rules, algorithms, or transformations. This step verifies that the logic used to manipulate, calculate, or transform data functions as intended.
Explain the third step in Data Validation or Input/Output Testing:
3) Verify Output Data
Ensures that the data generated as output from the system is accurate, complete, and presented in the correct format.
Explain the Model-View-Controller (MVC) architecture pattern
The Model-View-Controller (MVC) is a software architecture pattern used to separate concerns in an application, making it more modular, maintainable, and scalable. The idea is to separate the application into three main components: Model, View, and Controller, each with distinct responsibilities.
Explain the resposibility of Model in Model-View-Controller (MVC)
Responsibility of Model:
The Model represents the application’s data and business logic. It is responsible for retrieving, storing, and manipulating data, typically from a database or an external API. The Model also contains the rules and logic that govern how the data behaves.
Explain the resposibility of View in Model-View-Controller (MVC)
Responsibility of View:
The View is responsible for rendering the user interface (UI) and displaying data to the user. It takes the data provided by the Model and presents it in a format suitable for the user (e.g., HTML for a web application, UI elements for a desktop app). The View does not manipulate data or contain business logic.
Explain the resposibility of Controller in Model-View-Controller (MVC)
Responsibility of Controller:
The Controller acts as an intermediary between the Model and View. It listens for user input (such as button clicks or form submissions), processes it (often by modifying the Model), and updates the View accordingly. The Controller handles the flow of data between the Model and View.
Name the 4 steps of the workflow in Model-View-Controller (MVC)
Workflow in MVC:
User interaction
Controller handling
Model updates
View update
Explain the first step of Model-View-Controller (MVC)
1) User interaction
User interaction: The user interacts with the View (e.g., clicking a button or submitting a form).
Explain the second step of Model-View-Controller (MVC)
2) Controller handling
Controller handling: The Controller captures the input and determines the appropriate response. It may update the Model (e.g., add an item to the cart).
Explain the third step of Model-View-Controller (MVC)
3) Model updates
Model updates: The Model updates the data accordingly (e.g., the cart’s total price changes).
Explain the fourth step of Model-View-Controller (MVC)
4) View update
View update: The Controller then updates the View to reflect the changes made by the Model (e.g., displaying the updated cart with new totals).
Name 4 benefits of Model-View-Controller (MVC)
Benefits of MVC:
1. Separation of concerns: Each component has a distinct responsibility, making the code easier to maintain, update, and debug.
- Scalability: You can update or replace one component
- Reusability: Components can be reused across different parts of the application
- Testability: With clear separation, it’s easier to test individual components
Explain what UML(Unified Modeling Language) is
UML (Unified Modeling Language) is a standardized modeling language used in software engineering to visualize, specify, construct, and document the architecture and design of software systems. It provides a set of diagrams and notations to represent various aspects of a system, making it easier for developers, architects, and stakeholders to understand and communicate ideas.
Name 4 Key Features of UML
Key Features of UML:
- Visual Representation
- Standardization
- Flexibility
- Platform-Independent
Explain what Visual Representation of UML is
Visual Representation: Provides a graphical way to design and visualize a system’s structure and behavior.
Explain what Standardization of UML is
Standardization: UML is standardized by the Object Management Group (OMG), ensuring consistency and interoperability across tools and teams.
Explain what Flexibilty of UML is
Flexibility: It can model any type of system, from small applications to large, distributed systems.
Explain what Platform-Independence of UML is
Platform-Independent: UML is not tied to any programming language or platform.
What is UML:s used for?
Uses of UML:
- System Design: Plan and design the structure and behavior of a system before implementation.
- Documentation: Document the components, relationships, and workflows of a system for maintenance and future development.
- Communication: Serve as a common language for developers, business analysts, and stakeholders.
UML diagrams can be devided into 2 types, which?
structural diagrams and behavioral diagrams
Explain the Structural UML Diagram “Class Diagram”
Shows classes, attributes, methods, and relationships.
Explain the Structural UML Diagram “Object Diagram”
Represents instances of classes at a specific moment.
Explain the Structural UML Diagram “Component Diagram”
Illustrates the system’s components and dependencies.
Explain the Structural UML Diagram “Deployment Diagram”
Models the physical deployment of software components on hardware.
Explain the Structural UML Diagram “Package Diagram”
Groups related elements into packages.
Explain the Behavioral UML Diagram “Use Case Diagram”
Describes system functionality from a user’s perspective.
Explain the Behavioral UML Diagram “Sequence Diagram”
Shows interactions between objects in a time sequence.
Explain the Behavioral UML Diagram “Activity Diagram”
Represents workflows or processes.
Explain the Behavioral UML Diagram “State Diagram”
Models the states and transitions of an object.
Explain the Behavioral UML Diagram “Interaction Overview Diagram”
Combines elements of activity and sequence diagrams.
Explain the Behavioral UML Diagram “Timing Diagram”
Focuses on time-related interactions.