0% found this document useful (0 votes)
18 views20 pages

Models in SE

Uploaded by

vadini.vatsla76
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views20 pages

Models in SE

Uploaded by

vadini.vatsla76
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Models in SE

chatgpt.com/c/673d73da-f560-8013-b74a-9b1134e797f1

models in SE

In Software Engineering (SE), models are simplified representations or abstractions


of real-world systems, processes, or concepts. They help in understanding,
designing, and managing complex systems. Below are some commonly used models
in SE:

1. Process Models
These models define the steps and workflows for developing software systematically.

Waterfall Model: A linear sequential approach where each phase


(Requirements, Design, Implementation, Testing) is completed before moving
to the next.
Iterative Model: Develop software in repeated cycles (iterations).
Agile Model: Focuses on iterative development with frequent feedback and
collaboration.
Spiral Model: Combines iterative development with risk analysis.
V-Model: Extends the Waterfall model with corresponding testing phases for
each development phase.

2. Data Models

1/20
Data models describe the structure, relationships, and constraints of data used in a
system.

Entity-Relationship (ER) Model: Defines entities, attributes, and relationships.


Relational Model: Represents data in tables (relations).
Object-Oriented Model: Combines data and behavior into objects.
NoSQL Models: Examples include document, key-value, and graph-based
data models.

3. Architectural Models
These models represent the high-level structure of software.

Layered Architecture: Divides a system into layers (e.g., Presentation,


Business Logic, Data).
Client-Server Model: Separates clients (users) from servers (services).
Microservices Architecture: A collection of small, loosely coupled services.
Event-Driven Architecture: Focuses on communication through events.

4. Design Models
Design models provide blueprints for building software.

Class Diagrams: Represent object-oriented classes and relationships.


Sequence Diagrams: Show interactions between objects over time.
State Diagrams: Represent the states and transitions of a system.
Component Diagrams: Represent modular components of a system.

5. Testing Models

These ensure that the software meets requirements.

Black-Box Testing: Testing without knowledge of internal code.


White-Box Testing: Testing with full knowledge of the internal structure.
Unit Testing Models: Focus on testing individual units of code.
Integration Testing Models: Test interactions between units.

6. Deployment Models

These describe how the software is distributed and used.

Single-Tenant vs Multi-Tenant Models: Used in cloud systems.


Client-Side vs Server-Side Models: Defines where the software runs.
Hybrid Deployment: Combines on-premise and cloud-based systems.

2/20
7. UML (Unified Modeling Language) Models

UML is widely used for visual modeling. Common UML diagrams include:

Use Case Diagrams: Represent system functionality from a user's perspective.


Activity Diagrams: Represent workflows and processes.
Class Diagrams: Show the static structure of a system.
Component Diagrams: Focus on modular components.

Models in SE are critical for:

1. Visualizing and simplifying complex systems.


2. Communicating ideas and requirements among stakeholders.
3. Providing a roadmap for implementation and maintenance.

what is RAD

RAD (Rapid Application Development) is a software development methodology


that emphasizes rapid prototyping and iterative delivery over strict planning and
requirements gathering. It is designed to quickly develop high-quality systems by
involving users and stakeholders throughout the development process. RAD focuses
on adaptability, collaboration, and continuous feedback to ensure the end product
meets user needs effectively.

Key Features of RAD:

1. User Involvement:

End users are actively involved in the development process, providing


feedback and helping shape the final product.
2. Iterative Development:

Software is developed in small, incremental prototypes or iterations,


allowing for quick revisions and enhancements.
3. Flexibility and Adaptability:

Requirements can evolve during development as user feedback is


incorporated.
4. Component-Based Design:

Emphasizes reusing existing components to speed up development.

3/20
5. Rapid Prototyping:

Prototypes are created quickly to visualize functionality and design,


reducing time-to-market.

Phases of RAD:
1. Business Modeling:

Understand the business process and gather key requirements.


2. Data 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:

Develop prototypes or system components rapidly, often using automated


tools or reusable components.
5. Testing and Turnover:

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.

When to Use RAD:

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.

Tools Used in RAD:

Low-code or No-code Platforms: OutSystems, Mendix, PowerApps.


Prototyping Tools: Figma, Adobe XD.
Collaboration Tools: Jira, Trello.

In essence, RAD is about speed, collaboration, and user-centric development. It


suits dynamic environments where requirements change frequently, and rapid
delivery is crucial.

FAST

FAST (Facilitated Application Specification Technique) is a software


requirements gathering methodology that emphasizes collaborative group
sessions involving stakeholders, users, and developers. It is used to identify, specify,
and prioritize software requirements efficiently in a structured and inclusive manner.

Key Features of FAST:

1. Facilitated Workshops:

Interactive sessions where a facilitator guides participants through


discussions to capture requirements.
2. User and Stakeholder Involvement:

Actively involves end-users, business analysts, and technical teams to


ensure requirements align with business needs.
3. Focus on Collaboration:

Encourages open communication and brainstorming to gather diverse


perspectives.
4. Visual Documentation:

Utilizes diagrams, flowcharts, and models to represent requirements


clearly.
5. Prioritization of Requirements:

Helps stakeholders agree on the most critical features for development.

Phases of FAST:

5/20
1. Preparation:

Identify participants (stakeholders, users, developers).


Define objectives and agenda for the workshop.
2. Workshop Sessions:

Conduct brainstorming and discussions to identify:


System goals: What the software should achieve.
Functional requirements: Specific features and functions.
Non-functional requirements: Performance, security, usability
needs.
Use techniques like use case modeling, storyboarding, or prototyping
for clarity.
3. Documentation:

Consolidate workshop outcomes into clear, actionable specifications.


4. Validation:

Review the documented requirements with stakeholders to ensure


accuracy and completeness.

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.

When to Use FAST:


Projects with well-defined user groups.
When rapid and collaborative requirements gathering is critical.
In environments where stakeholder consensus is vital.

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.

blackbox testing and its types

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.

Key Features of Black Box Testing:

No Knowledge of Internal Code: Testers do not need access to the source


code.
Focus on Functionality: Ensures the software behaves as expected from the
user's perspective.
Requirement-Based: Tests are designed based on the software’s
specifications and requirements.
Input-Output Validation: Verifies that inputs produce the expected outputs.

Types of Black Box Testing:

1. Functional Testing

Purpose: Ensures that specific functionality of the software works as intended.


Examples:
Login validation
Shopping cart operations
File upload/download
Techniques Used:
Equivalence Partitioning: Divides input data into valid and invalid
partitions to test representative values.
Boundary Value Analysis (BVA): Focuses on values at the edges of
input ranges.
Decision Table Testing: Maps all possible conditions and their
corresponding actions.

2. Non-Functional Testing

Purpose: Tests non-functional aspects like performance, usability, and


reliability.

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

Purpose: Validates the critical functionalities of the application to ensure


stability for further testing.
Examples:
Checking if the application opens and basic features work.

5. Sanity Testing

Purpose: Focuses on testing specific functionality after minor changes to


ensure proper working.
Examples:
Verifying a new button added to a page performs the correct action.

6. Compatibility Testing

Purpose: Checks whether the software works as expected across different


environments (OS, browsers, devices).
Examples:
Testing a website on Chrome, Firefox, and Safari.
Verifying a mobile app on iOS and Android.

7. Localization and Globalization Testing

Localization Testing: Ensures the software is adapted for a specific region


(language, currency).
Globalization Testing: Validates that the application supports multiple
languages and regions.

Advantages of Black Box Testing:

1. User-Centric: Mimics real-world user scenarios.

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.

Disadvantages of Black Box Testing:

1. Limited Coverage: May miss internal code errors.


2. Time-Consuming: Requires creating extensive test cases for all input
combinations.
3. High Dependency: Relies on clear and detailed requirements.

Examples of Black Box Testing in Practice:

Website Testing: Validating login forms, navigation, or payment gateways.


Mobile App Testing: Checking UI/UX, input handling, and device compatibility.
APIs: Testing API responses without knowing the server's internal logic.

Black Box Testing ensures that the application functions as intended, delivering a
user-friendly and reliable system.

cohesion

Cohesion in software engineering refers to the degree to which the elements of a


module, class, or component work together to achieve a single, well-defined
purpose. It measures how closely related and focused the responsibilities of a
software module are.

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):

1. Coincidental Cohesion (Lowest Level)

Definition: When parts of a module are grouped arbitrarily and have no


meaningful relationship.

9/20
Example: A utility module containing unrelated functions like readFile(),
sendEmail(), and calculateTax().
Impact: Hard to maintain and understand.

2. Logical Cohesion

Definition: When elements of a module are grouped because they perform


similar types of tasks based on a decision.
Example: A module with functions for different types of input validations (e.g.,
validateEmail(), validatePhoneNumber()).
Impact: Better than coincidental cohesion, but still suboptimal as the tasks are
loosely related.

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

Definition: When elements are grouped because they execute in a specific


sequence.
Example: A function that first validates input, then processes it, and finally
saves it to a database.
Impact: The module follows a flow, but the tasks may not be highly related.

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.

6. Functional Cohesion (Highest Level)

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.

Advantages of High Cohesion

1. Improved Maintainability: Easier to understand and modify the code.


2. Better Reusability: Modules with focused responsibilities can be reused in
other projects.
3. Enhanced Debugging: Bugs are localized within a single module.
4. Simplified Testing: Cohesive modules are easier to test because they have
fewer dependencies.

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.

In conclusion, high cohesion is a fundamental principle of good software design,


ensuring clarity, maintainability, and adaptability of the system.

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

Evaluates the non-functional aspects like performance, usability, and reliability.


Key Types:
Performance Testing: Assesses system responsiveness and stability
under load.
Subtypes: Load Testing, Stress Testing, Spike Testing.
Security Testing: Identifies vulnerabilities and ensures data protection.
Usability Testing: Ensures the software is user-friendly.
Compatibility Testing: Checks compatibility across different devices,
browsers, and OS.
Scalability Testing: Assesses how well the system handles increasing
workload.
Reliability Testing: Ensures consistent performance over time.

3. Manual Testing

Testers manually execute test cases without using automation tools.


Examples: Exploratory Testing, Ad-hoc Testing.

4. Automated Testing

Testing performed using automated tools like Selenium, JUnit, TestNG.


Examples: Regression Testing, Unit Testing.

5. Black Box Testing

Tests the software without knowledge of internal implementation.

13/20
Examples: Functional Testing, Compatibility Testing.

6. White Box Testing

Tests the software with knowledge of internal code and logic.


Examples: Statement Coverage, Branch Coverage, Path Testing.

7. Gray Box Testing

Combines black-box and white-box techniques to test both functionality and


internal logic.

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.

10. Sanity Testing

Verifies specific functionalities after minor changes to ensure they work as


expected.

11. Exploratory Testing

A simultaneous learning, test design, and test execution approach without


predefined test cases.

12. Ad-hoc Testing


Informal testing without any planning or documentation to identify defects
randomly.

13. Static Testing

Involves reviewing code, design, and documents without executing the


software.
Examples: Code Reviews, Walkthroughs, Inspections.

14/20
14. Dynamic Testing
Involves executing the software to verify functionality and behavior.
Examples: Unit Testing, Integration Testing.

15. Security Testing

Ensures the application is free from vulnerabilities and protects data from
threats.

16. Recovery Testing

Tests the system's ability to recover from crashes or failures.

17. Localization and Globalization Testing

Localization Testing: Ensures the software is adapted for a specific region


(e.g., language, currency).
Globalization Testing: Verifies that the application works globally across
multiple languages and regions.

18. End-to-End Testing

Tests the complete workflow of an application, from start to finish, including all
integrations.

19. Alpha and Beta Testing

Alpha Testing: Conducted in-house by the development team.


Beta Testing: Performed by external users in a real-world environment.

20. Mutation Testing

Deliberately introduces errors (mutants) into the code to test the effectiveness
of existing test cases.

21. Penetration Testing (Pen Testing)


Identifies security vulnerabilities by simulating attacks on the application.

Summary Table

15/20
Testing Type Focus Approach

Functional Testing Validating functionality Black Box

Non-Functional Testing Performance, usability Black/Gray Box

Manual Testing Human-driven tests Manual

Automated Testing Tool-driven tests Automated

Security Testing Protecting from vulnerabilities Manual/Automated

Regression Testing Verifying no new defects Automated

Each testing type serves a specific purpose in ensuring software quality and
reliability.

cocomo and other models

COCOMO (Constructive Cost Model)

COCOMO is a software cost estimation model developed by Barry W. Boehm in


1981. It estimates the effort, time, and cost required to develop software projects
based on the size of the project (measured in KLOC - thousand lines of code).

Types of COCOMO Models

1. Basic COCOMO:

Provides a rough estimate based on the size of the software.


Formula:
Effort (E)=a×(KLOC)b
Time (T)=c×(Effort)d
Where a,b,c,d are constants depending on the project type.
Project Types:
Organic: Simple and small projects with experienced teams.
Semi-Detached: Medium projects with moderate complexity.
Embedded: Complex projects with strict constraints.
2. Intermediate 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

Simple to understand and implement.


Provides accurate estimates for well-defined projects.
Considers multiple factors (in Intermediate and Detailed versions).

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.

Other Software Estimation Models

1. Putnam Model (SLIM)

Developed by Lawrence H. Putnam, it estimates project effort using the


Rayleigh Curve.
Based on the software equation:
Effort (E)=Productivity×Time4(Size)​
Focuses on balancing resources, time, and productivity.

Advantages:

Suitable for long-term projects.


Provides insight into resource allocation over time.

Disadvantages:

Requires historical data for accuracy.


Assumes project productivity remains constant.

2. Function Point Analysis (FPA)

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

QFD (Quality Function Deployment)

Quality Function Deployment (QFD) is a structured methodology used to translate


customer requirements (the "voice of the customer") into detailed technical
specifications and solutions during product or service development. It ensures that
the final product aligns with customer expectations and business goals.

Key Features of QFD

1. Customer-Centric: Focuses on understanding and prioritizing customer


needs.
2. Cross-Functional: Involves teams from various departments (e.g., marketing,
design, engineering).
3. Systematic Process: Converts qualitative customer demands into measurable
technical requirements.

Phases of QFD

QFD typically consists of four phases, often represented in a series of


interconnected matrices:

1. Product Planning (House of Quality)

Translates customer requirements into product features.


Tools Used:
The "House of Quality," a visual matrix linking customer needs with
technical specifications.

2. Product Design

Converts product features into specific components or subsystems.


Focuses on detailed design decisions.

3. Process Planning

Identifies manufacturing or process requirements to achieve the design


specifications.

4. Process Control

Ensures consistent production and quality standards by defining control


measures.

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

1. Improved Customer Satisfaction: Aligns product development with customer


needs.
2. Better Communication: Encourages collaboration among teams.
3. Reduced Development Time: Helps identify and address issues early in the
process.
4. Competitive Advantage: Enables benchmarking against competitors.

Applications of QFD

Product design and development.


Software development.
Service design (e.g., healthcare, hospitality).
Business process improvements.

Example of QFD in Action

Consider designing a smartphone:

1. Customer Requirements (What): Long battery life, high-resolution camera,


lightweight design.
2. Technical Requirements (How): Battery capacity, megapixels, material
density.
3. Relationship Matrix: Strong relationship between "long battery life" and
"battery capacity."
4. Importance Ratings: "High-resolution camera" might be rated as the highest
priority.
5. Technical Correlations: Increase in battery capacity might increase the device
weight, which conflicts with "lightweight design."

By resolving conflicts and prioritizing features, QFD ensures a customer-focused


approach to design.

19/20
ChatGPT can make mistakes. Check important info.

20/20

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy