Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Exercise One (1): Concepts (10 Marks)

1. Difference between Architecture Style and Architectural Pattern (2.5pts)

- Architecture Style:

- Definition : Architectural Style refers to a set of guidelines or principles for designing and building
software systems. It specifies the components and connectors of the system and constraints on how
they can be composed.

- Example 1 : Layered Architecture - In this style, the system is divided into layers, where each layer
provides services to the layer above it and serves as a client to the layer below. Common in
enterprise applications.

- Example 2: Client-Server Architecture - This style divides the system into two main types of
components: clients, which request services, and servers, which provide services.

- Architectural Pattern:

- Definition : An ArchitecturalPattern is a specific,reusable solution to a common problem or design


issue in software architecture. It provides a template for how to solve a problem that can be used in
many different situations.

- Example 1: Model-View-Controller (MVC) - This pattern separates an application into three main
components: Model (data), View (user interface), and Controller (business logic). Widely used in web
applications.

- Example 2: Event-Driven Architecture - This pattern involves components that communicate


through the production and consumption of events, allowing for loosely coupled systems that are
highly scalable.

2. What’s wrong with monolithic architecture? Give Advantages and


Disadvantages (1.5pts)

- **Disadvantages**:

- **Complexity**: As the application grows, the complexity of managing and maintaining the
monolithic codebase increases.

- **Scalability**: Scaling a monolithic application can be challenging because all components must
be scaled together, even if only one part of the system experiences high load.

- **Deployment**: Any change, no matter how small, requires the entire application to be
redeployed, which can lead to longer release cycles.

- **Reliability**: A bug in one part of the application can potentially bring down the entire system.
- **Advantages**:

- Simplicity : Easier to develop and deploy initially as all components are within a single codebase.

- Performance : Often more performant within a single process as there is no overhead of inter-
process communication.

- Development : Easier to develop initially with a small team since there are fewer complexities
around managing dependencies and services.

3. What’s microservice architecture and microservice application? What’s


advantages of Microservice? (1.5pts)

- **Microservice Architecture**: This is an architectural style that structures an application as a


collection of small, autonomous services modeled around a business domain. Each microservice is
independently deployable and can be developed, deployed, and scaled independently.

- **Microservice Application**: An application built using the microservice architecture where


different functionalities are encapsulated in independent services that communicate over a network.

- **Advantages**:

- **Scalability**: Individual services can be scaled independently based on demand.

- **Flexibility**: Different services can be written in different programming languages or use


different technologies.

- **Fault Isolation**: A failure in one service does not necessarily impact others, improving the
overall resilience of the application.

- Continuous Delivery : Easier to deploy updates and new features for individual services without
affecting the whole system.

4. Strategies for identifying the functional characteristics of a microservices


architecture (1.5pts)

- Domain-Driven Design (DDD) : Identify the core business domains and subdomains to define the
boundaries of each microservice. Use concepts like bounded contexts to ensure each service has a
clear and well-defined scope.

- Business Capabilities : Break down the application by business capabilities, ensuring each service
corresponds to a specific business function.
- Event Storming : Engage stakeholders in a collaborative workshop to map out the events that drive
the business processes, which helps in identifying the services that need to be created.

- Data Ownership : Assign ownership of different parts of the data to different services, ensuring that
each service is responsible for its own data management.

- Decentralized Governance : Allow teams to choose the best tools and practices for their specific
services, promoting autonomy and innovation.

5. Major differences between System Analysis and System Design (1.5pts)

- System Analysis :

- Focus: Understanding and specifying what the system should do. It involves gathering
requirements, analyzing the needs of users, and documenting the functional requirements.

- Outcome : A detailed requirement specification that serves as a basis for system design.

- System Design :

- Focus : Specifying how the system will fulfill the requirements. It involves defining the system
architecture, components, modules, interfaces, and data for the system to satisfy the specified
requirements.

- Outcome: Detailed design specifications, architecture diagrams, and technical details necessary for
implementation.

6. Principles of Architectural Design Process (1.5pts)

- **Modularity**: Divide the system into distinct modules that can be developed independently but
work together as a whole.

- **Separation of Concerns**: Ensure that different concerns or aspects of the system are managed
separately to reduce complexity and improve maintainability.

- **Abstraction**: Use abstract representations to simplify complex systems, focusing on high-level


interactions rather than low-level details.

- **Encapsulation**: Encapsulate the internal workings of a module, exposing only necessary


interfaces to other modules.

- **Reusability**: Design components and modules to be reusable across different parts of the
system or in different projects.

- **Scalability**: Ensure the architecture can handle increasing loads and can be scaled up easily as
demand grows.
- **Performance**: Optimize the architecture for performance to ensure the system meets required
response times and throughput.

- **Security**: Incorporate security principles to protect the system from threats and ensure data
integrity and privacy.

Exercise Two (2): A Microservice Educational Management System


(10 Marks)

### 1. Identify the domain and subdomains (2pts)

- **Domain**: Educational Management System

- **Subdomains**:

- **Student Management**: Handling student enrollment, records, and profiles.

- **Course Management**: Managing course creation, scheduling, and content.

- **Faculty Management**: Handling faculty profiles, assignments, and schedules.

- **Assessment Management**: Managing exams, assignments, grading, and results.

- **Administration**: Handling overall administration, notifications, and user roles.

### 2. Clearly state the system requirements for the system (1.5pts)

- **Student Enrollment and Management**: The system should allow students to enroll in courses,
view their records, and update their profiles.

- **Course Creation and Management**: Administrators and faculty should be able to create and
manage courses, including schedules and content.

- **Faculty Assignments**: The system should manage faculty profiles, course assignments, and
schedules.

- **Assessment and Grading**: The system should support creating and managing assessments,
grading submissions, and publishing results.

- **Notifications**: The system should send notifications for important events such as enrollment
deadlines, exam schedules, and grade releases.

### 3. Identify five (02) architectural drivers of system (1.5pts)

- **Scalability**: The system must be able to handle increasing numbers of students, courses, and
assessments without performance degradation.
- **Reliability**: The system must be reliable and available to ensure continuous operation and
access to critical educational functions.

### 4. Present microservice service of architecture (3pts)

```plaintext

|---------------------------------------------|

| Educational Management System |

|---------------------------------------------|

| Student Management Service |

| - Student Enrollment |

| - Student Records |

| - Student Profiles |

|---------------------------------------------|

| Course Management Service |

| - Course Creation |

| - Course Scheduling |

| - Course Content |

|---------------------------------------------|

| Faculty Management Service |

| - Faculty Profiles |

| - Course Assignments |

| - Faculty Schedules |

|---------------------------------------------|

| Assessment Management Service |

| - Exam Creation |

| - Assignment Management |

| - Grading |

|---------------------------------------------|

| Notification Service |

| - Event Notifications |
| - Deadline Reminders |

| - Result Announcements |

|---------------------------------------------|

```

### 5. What’s the difference between Architecture and Design? (1pt)

- **Architecture**: Refers to the high-level structure of the system, defining its components and
their interactions. It focuses on how the system's overall structure will achieve the required
functionality and quality attributes.

- **Design**: Refers to the detailed implementation of individual components and modules within
the architectural framework. It includes the specific algorithms, data structures, and interfaces used
to achieve the system's functionality.

### 6. Does every software project need software architecture? (1pt)

Not every small or simple software project may need a formal software architecture. However, for
larger and more complex projects, having a well-defined software architecture is crucial to ensure
the system's scalability, maintainability, reliability, and overall success. Even for small projects, some
level of architectural consideration can help in managing complexity and future growth.

You might also like