0% found this document useful (0 votes)
15 views

SEPM

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

SEPM

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

 Software design concepts 8 points

1. Modularity: This concept involves breaking down a software system into smaller, self-
contained units or modules. Each module should have a specific responsibility and can be
developed, tested, and maintained independently. Modularity enhances reusability and
makes the system easier to understand and manage.
2. Encapsulation: Encapsulation refers to the bundling of data and methods that operate on
that data within a single unit, such as a class in object-oriented programming. It hides the
internal state of an object and only exposes a controlled interface to the outside world. This
helps protect the internal state from unintended interference and misuse.
3. Abstraction: Abstraction involves hiding complex implementation details and exposing only
the necessary and relevant features of a component. It simplifies interactions by allowing
users to focus on higher-level operations rather than the intricacies of the implementation.
4. Separation of Concerns: This principle advocates dividing a software system into distinct
sections, each addressing a separate concern or aspect of the system’s functionality. By
separating concerns, you can reduce complexity, improve maintainability, and make the
system more understandable.
5. Design Patterns: Design patterns are reusable solutions to common problems that arise in
software design. They provide a template for addressing particular design challenges and can
help streamline the development process by applying proven strategies.
6. Scalability: Scalability is the capability of a software system to handle increased load or
demand gracefully. A scalable design ensures that the system can grow and adapt to larger
volumes of data or users without significant modifications to its architecture.
7. Responsibility Assignment: This concept involves deciding which components or modules
should handle specific responsibilities or tasks within the system. Proper assignment of
responsibilities ensures that each part of the system is focused on a particular function,
which improves cohesion and reduces coupling.
8. Dependency Injection: Dependency injection is a design pattern used to manage
dependencies between objects. Instead of creating dependencies directly within a class, they
are provided (injected) from an external source. This approach enhances flexibility,
testability, and reduces tight coupling between components.

 User interface design model and its Types


User Interface (UI) design models are frameworks or approaches used to guide the development of
user interfaces. They focus on how users interact with software and aim to create intuitive, effective,
and enjoyable user experiences. Here are some prominent UI design models and their types:
1. The Model-View-Controller (MVC) Model
 Model: Represents the data and business logic of the application.
 View: Displays the data (model) to the user and provides an interface for user interaction.
 Controller: Manages user input and updates the model and view accordingly.
Types of MVC Models:
 Traditional MVC: Common in web applications, where the controller handles user input and
updates both the model and view.
 Variant MVC: Some variations like Model-View-ViewModel (MVVM) and Model-View-
Presenter (MVP) adapt the MVC pattern for specific use cases.
2. The Model-View-ViewModel (MVVM) Model
 Model: Holds the data and business logic.
 View: Represents the UI and displays data from the ViewModel.
 ViewModel: Acts as an intermediary between the Model and the View, handling the logic
that updates the View.
Types of MVVM Models:
 Standard MVVM: Utilized in frameworks like WPF (Windows Presentation Foundation) and
Xamarin.Forms.
 Reactive MVVM: Incorporates reactive programming principles for more dynamic data
handling.
3. The Model-View-Presenter (MVP) Model
 Model: Manages data and business logic.
 View: Interface that displays data and sends user interactions to the Presenter.
 Presenter: Handles the logic and updates the View with the Model’s data.
Types of MVP Models:
 Classic MVP: Common in traditional desktop applications.
 Android MVP: A variant used for Android application development.
4. The User-Centered Design (UCD) Model
 Understand Users: Research and understand the users' needs and context.
 Design: Create designs based on user insights.
 Evaluate: Test the designs with users to refine and improve.
Types of UCD Models:
 Iterative UCD: Involves continuous cycles of design, testing, and refinement.
 Participatory Design: Engages users directly in the design process to ensure their needs are
met.
5. The Human-Computer Interaction (HCI) Model
 User: The person interacting with the system.
 Computer: The system or application being used.
 Interaction: The processes and methods by which the user and computer exchange
information.
Types of HCI Models:
 Direct Manipulation: Users interact with visual representations of objects and actions (e.g.,
dragging files).
 Command-Line Interfaces: Users interact through text commands and responses.
6. The Gestalt Principles
 Proximity: Objects close to each other are perceived as related.
 Similarity: Objects with similar attributes are grouped together.
 Continuity: Users perceive continuous forms rather than disjointed ones.
Types of Gestalt Principles:
 Perceptual Grouping: Techniques like proximity and similarity.
 Visual Hierarchy: Arranging elements to guide the user’s eye through the interface.
7. The Flow Model
 Flow: The optimal state of immersion and engagement a user experiences when interacting
with a system.
 Context: The environment and situation in which the user interacts with the system.
 User Goals: The objectives the user aims to achieve through interaction.
Types of Flow Models:
 Task-Oriented Flow: Focuses on the efficiency and satisfaction of completing specific tasks.
 Experience-Oriented Flow: Emphasizes overall user engagement and enjoyment.
8. The Affordance Model
 Affordances: The qualities or properties of an object that suggest how it should be used
(e.g., a button that looks clickable).
 Signifiers: Indicators that communicate where actions should occur (e.g., labels on buttons).
Types of Affordance Models:
 Physical Affordances: Related to the physical properties of objects (e.g., a knob you can
turn).
 Digital Affordances: Related to interactive elements in software (e.g., clickable links).
 Architectural design model Importance
Architectural design models are frameworks that guide the organization and structure of a software
system. They define the high-level structure and organization of the system, and they are crucial for
managing complexity and ensuring that the system meets its requirements. Here’s a closer look at
architectural design models and their importance:
Key Architectural Design Models
1. Layered Architecture
o Description: Divides the system into layers, each with a specific role (e.g.,
presentation, business logic, data access).
o Importance: Promotes separation of concerns, enhances maintainability, and allows
for independent development and testing of layers.
2. Client-Server Architecture
o Description: Divides the system into client and server components, where the client
requests services and the server provides them.
o Importance: Facilitates scalable distribution of tasks, supports networked
applications, and enhances modularity.
3. Microservices Architecture
o Description: Structures the system as a collection of small, loosely coupled services
that communicate through APIs.
o Importance: Increases scalability, flexibility, and resilience, enabling independent
deployment and scaling of services.
4. Service-Oriented Architecture (SOA)
o Description: Similar to microservices but often involves larger, more coarse-grained
services. Focuses on integrating various services across the enterprise.
o Importance: Enhances interoperability and reusability of services, and promotes
integration of heterogeneous systems.
5. Event-Driven Architecture
o Description: Uses events to trigger and communicate between decoupled
components or services.
o Importance: Improves responsiveness and scalability by enabling asynchronous
communication and processing.
6. Peer-to-Peer Architecture
o Description: All nodes in the network have equal roles and responsibilities, sharing
resources and services.
o Importance: Enhances redundancy and robustness, and supports decentralized
control.
7. Model-View-Controller (MVC) Architecture
o Description: Separates the system into Model (data), View (user interface), and
Controller (logic) components.
o Importance: Improves modularity, allows for independent updates of the user
interface and logic, and facilitates easier testing.
8. Component-Based Architecture
o Description: Structures the system into interchangeable components, each with
defined interfaces and responsibilities.
o Importance: Promotes reuse, simplifies maintenance, and allows for easier
integration of new functionalities.
Importance of Architectural Design Models
1. Organizational Structure: Architectural models provide a blueprint for organizing and
structuring the system, which helps in managing complexity and ensuring that different
components work together seamlessly.
2. Separation of Concerns: By defining clear boundaries between different aspects of the
system (e.g., presentation, business logic, data access), architectural models promote
separation of concerns. This makes the system more modular and easier to manage.
3. Scalability and Performance: Different architectural models support varying degrees of
scalability and performance optimization. For instance, microservices and event-driven
architectures facilitate scaling specific parts of the system independently based on demand.
4. Maintainability and Flexibility: Well-defined architecture makes the system more
maintainable by isolating changes to specific components or layers. It also provides flexibility
in evolving the system over time without major disruptions.
5. Reusability and Modularity: Architectural models encourage the design of reusable and
modular components. This helps in reducing redundancy and improving the efficiency of
development and maintenance processes.
6. Risk Management: By defining clear roles and interactions between components,
architectural models help in identifying potential risks and designing solutions to mitigate
them early in the development process.
7. Communication and Collaboration: A clear architectural design provides a common
understanding of the system's structure, which enhances communication and collaboration
among team members, stakeholders, and developers.
8. Quality Assurance: Architectural models play a crucial role in ensuring that the system meets
its quality attributes, such as performance, reliability, and security. They guide the
implementation of these attributes in a structured manner.
 SRS
Software Requirements Specification (SRS) is a comprehensive document that describes the
intended functionality, behavior, and constraints of a software system. It serves as a formal
agreement between stakeholders and developers, providing a detailed description of what the
system should do and how it should perform. Here’s an overview of SRS and its key components:
Purpose of SRS
1. Communication: Provides a clear and detailed description of the system's requirements to
ensure that all stakeholders have a common understanding.
2. Foundation for Design and Development: Guides the design, development, and
implementation of the system based on specified requirements.
3. Basis for Validation and Verification: Establishes criteria for testing and validating the system
to ensure it meets the specified requirements.
4. Documentation: Serves as a reference document throughout the software lifecycle, including
maintenance and future enhancements.
Key Components of an SRS Document
1. Introduction
o Purpose: States the purpose of the SRS and the intended audience.
o Scope: Defines the boundaries of the system, including what will and will not be
covered.
o Definitions, Acronyms, and Abbreviations: Provides definitions and explanations of
terms used in the document.
o References: Lists any documents or resources referenced in the SRS.
o Overview: Gives a brief overview of the SRS structure.
2. Overall Description
o Product Perspective: Describes the context and environment in which the system will
operate, including dependencies and interfaces with other systems.
o Product Functions: Summarizes the major functionalities and capabilities of the
system.
o User Classes and Characteristics: Identifies different user types and their needs or
expectations from the system.
o Operating Environment: Specifies the hardware, software, and network
environments where the system will be deployed.
o Design and Implementation Constraints: Lists constraints such as regulatory
requirements, hardware limitations, or performance constraints.
o Assumptions and Dependencies: Details assumptions made during the requirements
gathering process and dependencies on external factors or systems.
3. Specific Requirements
o Functional Requirements: Defines specific functions or behaviors the system must
perform, including detailed descriptions of inputs, outputs, and processing.
o External Interface Requirements: Describes interactions between the system and
external entities, such as users, hardware, or other systems. Includes user interfaces,
hardware interfaces, software interfaces, and communication interfaces.
o Performance Requirements: Specifies performance criteria such as response times,
throughput, and resource usage.
o Design Constraints: Outlines constraints related to design, such as adherence to
standards, programming languages, or development tools.
o Logical Database Requirements: Details the data storage requirements, including
database design and data integrity constraints.
o Security Requirements: Defines security measures, including authentication,
authorization, and data protection.
4. Use Cases
o Use Case Descriptions: Provides detailed descriptions of various scenarios in which
the system will be used, including the interactions between users and the system to
achieve specific goals.
5. Non-Functional Requirements
o Usability: Defines criteria related to user experience, such as ease of use and
accessibility.
o Reliability: Specifies requirements related to system reliability, including fault
tolerance and recovery procedures.
o Maintainability: Describes requirements related to ease of maintenance and support,
including documentation and modifiability.
o Portability: Defines the system's ability to operate in different environments or be
adapted for different platforms.
6. Appendices
o Glossary: Provides additional definitions or explanations of terms used in the
document.
o Supporting Information: Includes any additional information that supports the SRS
but does not fit into other sections.
Importance of SRS
1. Clarity and Precision: Ensures that all requirements are clearly defined and understood by all
stakeholders, reducing ambiguity and misunderstandings.
2. Scope Management: Helps in defining and managing the project scope, preventing scope
creep and ensuring that only the agreed-upon functionalities are implemented.
3. Quality Assurance: Provides a basis for developing test cases and validation criteria to
ensure that the final product meets the specified requirements.
4. Project Planning: Aids in estimating resources, timelines, and costs by providing a detailed
understanding of what needs to be built.
5. Communication Tool: Acts as a communication tool between stakeholders, including clients,
developers, testers, and project managers, ensuring alignment on project goals and
expectations.

You might also like