Enterprise System Design NOTE
Enterprise System Design NOTE
Requirements Elicitation
Requirements elicitation is gathering information from stakeholders to understand system goals
and operations, ensuring the development team captures their needs accurately.
1.Identify Stakeholders : Find people involved, like users, analysts, managers, and clients.
1 Preparation: 2. Define Objectives: Set goals to understand needs, functions, and constraints.
3.Select Techniques: Pick methods based on the project and stakeholders.
5. Document Analysis: Review existing documents like plans and reports to gather
information.
6.Prototyping: - Low-fidelity: Basic sketches or mockups.
- High-fidelity: Detailed, functional simulations.
Analysis and 7. Use Cases and Scenarios: Describe how users interact with the system to achieve goals.
3 • Consolidation:
8. Workshops Combine
and Joint information
Application from various
Development (JAD): sources.
Collaborative sessions to define
Validation:
• Validation: Check requirements for accuracy, completeness, and
requirements.
alignment with stakeholder needs using reviews and prototypes.
4o
Documentation ••
4 Document requirements using standard formats like specifications,
user stories, and use cases.
5 Review and
• Review requirements with stakeholders, gather feedback, and
Feedback
make adjustments.
Challenges in Requirements Elicitation
Best Practices
1. Engage Stakeholders Early and Continuously.
2. Use Multiple Elicitation Techniques
3. Clarify Objectives and Scope
4. Document Thoroughly
5. Foster Collaboration
Requirement analysis is the process of making sure the gathered requirements are clear,
complete, and meet the project's goals.
2.Prioritization
• MoSCoW Method: Classifying requirements as Must have, Should have, Could have, and Won't have
• Kano Model
• Value vs. Effort Matrix
3.Conflict Resolution:
• Identify Conflicts:
• Negotiation and Mediation:
• Documentation of Decisions:
4.Feasibility Analysis
• Technical Feasibility: Can the requirements be done with existing technology?
• Economic Feasibility: Are the requirements affordable?
• Operational Feasibility: Do the requirements fit with the organization's operations?
• Requirements Identification: Assign unique IDs and categorize by type, priority, and
stakeholders.
• Traceability: Link requirements to design, code, and tests, and map them to business goals
using traceability matrices.
• Prioritization: Rank requirements by value, risk, and cost using methods like MoSCoW and
the Kano Model.
• Change Management: Manage changes with impact analysis, approval, and version
control to track updates.
• Verification and Validation
• Stakeholder Communication:Maintain clear and continuous communication with stakeholders
(Plan database for employee details (e.g., name, salary, tax rates).
Design user interfaces for HR staff to input attendance and generate reports.)
4. Integration and Testing: Combine all modules and check for errors
(Test with sample data to check calculations, accuracy, and error handling.)
5. Deployment: Deliver the final product to the client, Install the system for real-world use.
(Install the system at the company’s office, Train HR staff to use the system.)
1. Planning: Set goals and scope for the iteration, Decide which features to develop, Plan tasks,
timelines.
2. Analysis and Design: Study requirements for the iteration., Design the system architecture.
3. Implementation: Write and code the planned features, Combine the new code
4. Testing: Check the software for bugs and fix them.
5. Evaluation and Review: Share results with stakeholders and gather feedback.
6. Refinement: Use feedback to improve the software.
The Incremental software process model is a development approach where the system is
designed, implemented, and tested incrementally until the entire product is finished.
• Incremental Delivery: The system is built in small parts, each adding more functionality.
• Customer Feedback: After each part is delivered, the customer gives feedback.
This feedback helps improve the product
• Prioritization: High-priority features are developed and delivered first
• Risk Management: Risks are identified early in each increment.
Phases of the Incremental Process Model(Example: developing an e-commerce website)
1. Initial Planning: Set the overall system design and identify key increments.
Create a high-level plan for the order
(e.g., user registration, product catalog, shopping cart, payment processing).
2. Increment Planning: Define the goals, scope, and requirements for each increment.
Make detailed plans for design, implementation, and testing of each part.
(Define the objectives and scope for user registration.)
3. Analysis and Design: Study the requirements and design the system
(Develop the design for the user registration feature)
The evolutionary model is a combination of the Iterative and Incremental models of the
software development life cycle.
• Red-Green-Refactor Cycle: Red: Write a failing test to define the required functionality.
Green: Write the code needed to pass the test.
Refactor: Clean up the code to improve clarity without
changing how it works.
• Incremental Development
• Continuous Testing:
• Code Quality and Design:
• Immediate Feedback:
Process Steps in Test-Driven Development (TDD)
• Write a Test: Define a test case
• Run the Test: Execute the test case
• Write the Code: Implement the login functionality
• Run Tests and Refactor: Run all existing tests,Repeat the Cycle: Follow the same process
Advantages Disadvantages
Improved Code Quality: Time-Consuming
Faster Feedback Overhead:
Reduced Debugging Time Not Suitable for All Projects:
Enhanced Design:
Confidence in Changes
Key Characteristics
• Risk management
• Iterative development
• Flexibility
• Evaluation
• Flexible and Adaptive
1. Identification of Objectives :Set clear goals for the current phase of development.
2. Risk Analysis :Assess potential risks and create strategies to reduce them.
3. Development and Testing :Build and test the software based on the objectives.
4. Evaluation and Planning :Review results, learn from the process, and plan for the next
phase.
Advantages Disadvantages
Risk Management Complexity
Flexibility Cost and Schedule Estimation
High-Quality Software Documentation Overhead
Customer Feedback Potential for Scope Creep
Types of UML
• Initial Node: The starting point of the diagram (filled circle, labeled "Start").
• Activity (Action): A task or operation in the process (rounded rectangle with the activity
name).
• Control Flow: Represents the sequence in which activities are performed.
(Shown as arrows connecting activities)
• Decision Node
• Merge Node
• Join node
• Final node: Represents the end point
1. Modularity and Encapsulation: Create self-contained parts for easier reuse and maintenance.
2. Separation of Concerns: Divide tasks into layers (e.g., UI, logic, data) for clarity and easier updates.
3. Design Patterns: Use proven solutions like Singleton or Factory for common problems.
4. Scalability and Performance
5. Documentation and Communication
6. Design for Maintainability
7. User Interface (UI) Design
2. Benefits
• Modularity: Design modules for specific tasks.
• Maintainability: Easy to update one part without affecting others.
• Reusability: Use components in different parts or projects.
• Testing: Easier testing by isolating parts and reducing dependencies.
4.2 Coupling
Coupling in software design measures how much one module depends on another. Lower
coupling makes software easier to maintain, scale, and modify.
Types of Coupling
• Content Coupling:
• Common Coupling:
• Control Coupling
• Data Coupling:
• Message Coupling:
Impact of Coupling
• Maintainability: Hard to update with high coupling.
• Testability: Hard to test with high coupling.
• Flexibility: Low coupling makes reuse and replacement easier.
• Scalability: Low coupling helps scale modules independently.
Managing Coupling
• Encapsulation: Hide data and functions to reduce external access.
• Abstraction: Use interfaces to minimize dependencies.
• Dependency Injection: Provide dependencies from outside to reduce coupling.
• Design Patterns: Use patterns to reduce coupling and improve flexibility.
• Layered Architecture: Organize the system into clear layers.
• Modularity: Break the system into independent, focused modules.
4.3 Cohesion
Cohesion refers to how closely related and focused the elements within a module are in
achieving a common goal or functionality.
Types of Cohesion
1. Functional Cohesion: All elements in the module work together for one clear task.
Example: A payroll calculation module.
2. Sequential Cohesion: Elements work in a sequence, with each step depending on the
previous one.
Example: A module that reads, processes, and outputs data.
3. Communicational Cohesion: Elements share and operate on the same data.
Example: A module that processes customer data for multiple reports.
4. Procedural Cohesion, Logical Cohesion:
4.4 Modularity
Modularity means breaking a system into separate, independent parts that handle specific
tasks and interact through clear interfaces. It improves reusability, maintainability, and
flexibility.
Key Characteristics
Benefits of Modularity
Information hiding means keeping system details hidden to reduce complexity, improve
organization, and protect sensitive information.
• Encapsulation: Combines data and methods, hiding details and showing only needed
functions.
• Visibility Control: Limits access to parts of the system.
• Abstraction: Hides complex details, showing only the important features.
Benefits of Information Hiding
• Modularity: Defines clear boundaries between components.
• Encapsulation: Prevents direct access to data, using interfaces for access.
• Reduced Complexity: Simplifies code by focusing on essentials and hiding details.
• Security: Limits access to sensitive data, reducing risks.
• Flexibility: Allows updates to internal details without affecting external interfaces.
4.7 Abstraction
Abstraction means hiding complex details and showing only the essential features of a system
Key Concepts
• Focus on What, Not How: Abstraction shows what an object does, not how it works.
• Levels of Abstraction: High-Level: Focuses on the big picture.
Low-Level: Deals with specific details.
• Encapsulation and Abstraction
• Achieving Abstraction: Interfaces: Define operations without implementation.
Benefits of Abstraction
• Simplicity and Manageability
• Flexibility
• Modularity
• Security:
4.8 Generality
Generality in software engineering means creating systems or components that can be used in
different contexts without major changes. it promotes reusability, flexibility, and scalability
Key Aspects
• Flexibility and Adaptability: Generality allows systems to work in various contexts with
minimal changes.
• Reusability: Encourages reusing components, saving development time and effort.
• Parameterization: Allows components to be customized based on specific needs.
• Abstraction and Interfaces: Hides details and focuses on essential functions, promoting
integration and flexibility.
Benefits of Generality
• Cost Efficiency
• Scalability:
• Maintenance: