Models in SE
Models in SE
chatgpt.com/c/673d73da-f560-8013-b74a-9b1134e797f1
models in SE
1. Process Models
These models define the steps and workflows for developing software systematically.
2. Data Models
1/20
Data models describe the structure, relationships, and constraints of data used in a
system.
3. Architectural Models
These models represent the high-level structure of software.
4. Design Models
Design models provide blueprints for building software.
5. Testing Models
6. Deployment Models
2/20
7. UML (Unified Modeling Language) Models
UML is widely used for visual modeling. Common UML diagrams include:
what is RAD
1. User Involvement:
3/20
5. Rapid Prototyping:
Phases of RAD:
1. Business Modeling:
Identify and define the data required for the application, including
relationships and workflows.
3. Process Modeling:
Define how data will flow and how business processes will be handled by
the system.
4. Application Generation:
Test the prototypes with user feedback, refine the system, and prepare for
deployment.
Advantages of RAD:
Faster Delivery: Accelerates the development lifecycle.
Higher User Satisfaction: Continuous involvement ensures the product aligns
with user needs.
Flexibility: Changes in requirements can be accommodated without significant
delays.
Improved Quality: Iterative testing and feedback improve overall quality.
Disadvantages of RAD:
Resource Intensive: Requires skilled developers and designers, as well as
continuous user involvement.
Limited Scalability: Not ideal for large or highly complex projects.
Dependency on Users: Relies heavily on active user feedback and
participation.
4/20
When the project requires quick delivery and frequent updates.
When requirements are uncertain or likely to evolve.
For small to medium-sized projects with well-defined user groups.
FAST
1. Facilitated Workshops:
Phases of FAST:
5/20
1. Preparation:
Advantages of FAST:
Speed: Rapidly gathers and defines requirements in a few focused sessions.
Clarity: Visual and collaborative methods reduce misunderstandings.
User-Centric: Direct involvement of users ensures the system meets real
needs.
Consensus Building: Facilitates agreement among diverse stakeholders.
Disadvantages of FAST:
Resource Intensive: Requires skilled facilitators and full participation from
stakeholders.
Scope for Conflicts: Differing opinions among participants may delay
decisions.
Not Suitable for Complex Systems: Limited applicability in highly technical or
intricate projects.
6/20
FAST is widely used in modern Agile and iterative software development processes
to align stakeholders early and ensure requirements are well understood and agreed
upon.
Black Box Testing is a software testing technique where the internal structure,
code, or implementation of the application is not known to the tester. It focuses solely
on the inputs, outputs, and user interface of the system to validate its behavior
according to the specified requirements.
1. Functional Testing
2. Non-Functional Testing
7/20
Examples:
Checking page load speed (Performance Testing).
Verifying accessibility standards (Usability Testing).
Ensuring the system works under high loads (Stress Testing).
3. Regression Testing
Purpose: Ensures that recent changes or bug fixes in the code have not
introduced new defects.
Examples:
Retesting login functionality after adding a "remember me" feature.
4. Smoke Testing
5. Sanity Testing
6. Compatibility Testing
8/20
2. Independent Testing: Can be performed by testers unfamiliar with the
codebase.
3. Applicable at All Levels: Suitable for unit, integration, system, and
acceptance testing.
Black Box Testing ensures that the application functions as intended, delivering a
user-friendly and reliable system.
cohesion
A highly cohesive module performs a single, focused task, making the system easier
to understand, maintain, and modify. Conversely, low cohesion indicates that a
module is performing unrelated tasks, which can lead to poor design and
maintenance challenges.
Types of Cohesion
Cohesion can be classified into various levels, ranging from low (undesirable) to high
(desirable):
9/20
Example: A utility module containing unrelated functions like readFile(),
sendEmail(), and calculateTax().
Impact: Hard to maintain and understand.
2. Logical Cohesion
3. Temporal Cohesion
Definition: When elements are grouped because they are executed at the
same time or during the same phase of execution.
Example: A module with initialization functions like setupLogger(),
initializeDatabase(), and loadConfiguration().
Impact: Can make debugging difficult if unrelated functionalities are grouped
together.
4. Procedural Cohesion
5. Communicational Cohesion
Definition: When elements are grouped because they operate on the same
data or contribute to a common output.
Example: A module that reads a file, parses its contents, and writes the results
to another file.
Impact: Stronger than procedural cohesion but still not ideal.
Definition: When elements are grouped because they all contribute to a single,
well-defined task.
Example: A module responsible only for calculating the area of geometric
shapes (e.g., calculateCircleArea(), calculateRectangleArea()).
10/20
Impact: Highly desirable as it improves readability, reusability, and
maintainability.
Cohesion vs Coupling
Cohesion: Focuses on the internal strength of a module (how well its parts
work together).
Coupling: Focuses on the interdependence between different modules (how
much they rely on each other).
Goal: High cohesion and low coupling for an efficient and maintainable design.
Example of Cohesion
Consider two modules:
1. Low Cohesion:
python
class Utility:
def send_email(self):
pass
def calculate_area(self):
pass
def load_file(self):
pass
Tasks are unrelated, making the module confusing and hard to maintain.
11/20
2. High Cohesion:
python
class EmailService:
def send_email(self):
pass
def validate_email(self):
pass
All functions are related to handling email, making the module focused
and reusable.
testing types
Software testing can be broadly categorized into various types based on objectives,
approaches, and the stage of the software development lifecycle. Here's a detailed
breakdown:
1. Functional Testing
Focuses on testing the functionality of the software against the specified
requirements.
12/20
Key Types:
Unit Testing: Tests individual components or units of code (e.g.,
functions, classes).
Integration Testing: Tests interactions between integrated components
or modules.
Subtypes:
Top-Down Testing
Bottom-Up Testing
Big Bang Testing
System Testing: Validates the complete and integrated system as a
whole.
Acceptance Testing: Verifies whether the software meets the business
requirements.
Subtypes: Alpha Testing (internal) and Beta Testing (external
users).
2. Non-Functional Testing
3. Manual Testing
4. Automated Testing
13/20
Examples: Functional Testing, Compatibility Testing.
8. Regression Testing
Verifies that recent changes (like bug fixes or new features) haven’t affected
existing functionalities.
9. Smoke Testing
Validates that the critical functionalities of the application work correctly after a
build.
14/20
14. Dynamic Testing
Involves executing the software to verify functionality and behavior.
Examples: Unit Testing, Integration Testing.
Ensures the application is free from vulnerabilities and protects data from
threats.
Tests the complete workflow of an application, from start to finish, including all
integrations.
Deliberately introduces errors (mutants) into the code to test the effectiveness
of existing test cases.
Summary Table
15/20
Testing Type Focus Approach
Each testing type serves a specific purpose in ensuring software quality and
reliability.
1. Basic COCOMO:
Considers additional cost drivers like team experience, tools, and product
requirements.
Effort equation includes a multiplicative factor (EAF):
Effort (E)=a×(KLOC)b×EAF
16/20
3. Detailed COCOMO:
Breaks the project into smaller components and applies cost estimation to
each.
Advantages of COCOMO
Disadvantages of COCOMO
Requires accurate size estimation (KLOC), which is hard for new projects.
Less effective for modern agile or iterative methodologies.
Doesn't account for newer programming paradigms or tools.
Advantages:
Disadvantages:
Measures the functionality provided by the software, rather than the size (lines
of code).
Breaks the software into components like inputs, outputs, interfaces, and
files to calculate Function Points (FP).
Formula:
( \text{Effort} = \text{FP} \times \text{Product
17/20
qfd
Phases of QFD
2. Product Design
3. Process Planning
4. Process Control
18/20
Components of the House of Quality
1. Customer Requirements (What): What customers expect from the product.
2. Technical Requirements (How): How the product will meet those
expectations.
3. Relationship Matrix: Maps the correlation between "What" and "How."
4. Importance Ratings: Prioritizes customer needs based on their importance.
5. Competitive Benchmarking: Compares your product with competitors.
6. Technical Correlations: Identifies relationships among technical requirements.
Benefits of QFD
Applications of QFD
19/20
ChatGPT can make mistakes. Check important info.
20/20