5. Software Architecture and Design - software-projects-qubit/Software-Project-1.0 GitHub Wiki

Architectural design

Our architectural design for the app is based on a two tier layered architectural style where tier 0 is the persistence layer and tier 1 is the UI layer In the persistence layer, we have the lamp server which contains MySQL, Apache server and PHP. This layer also provides interface to the UI layer In the UI layer we only have an Android app is our user interface

We choose this design because we only have two layers which means that it will be easy to implement(easy development), also scalability influenced our decision as the app wont scale (we know an average number of students that will use this app). For agility, there won't be any new features that we will need to implement regularly. Performance in our system is not critical and test-ability is crucial our software. The above mentioned reasons lead to use the layered architecture out of all the other architectures.

We didnt include a persistence layer as we realized that there wont be a lot of connections occurring at the same time.

Logical view

Here is where we see all the modules and how they interact with each other. These are subsystems that work with each other to form the entire system. This view shows us the functionality that the system provides to end users. We used a class diagram to show this view.

classview

Component view

We use a component diagram to illustrate our component view: component

Process view

This depicts how the process happens, it is the flow of logic within our software. The system will be represented as a series of communicating processing that will realise the entire system. This view also deals with the dynamic aspect of the system, explains the system processes and how they communicate. To illustrate this view, we used a UML process view diagram. In our process view, we see that our processes runs through 4 layers which are presentation layer, business layer, persistence layer and the database layer. wits-src-process-diagram

Allocation/Deployment View

This is the view used as the view for deployment. It will be the view that the product owner will be interested in seeing, so they know how the system will be deployed. This will roughly translate to our physical system since it will be exactly how it is going to be implemented. It will also be used to assign work and roles to various stakeholders. We used a deployment diagram to illustrate this view. Our system runs on a two tier layer: Persistence layer and UI layer Deployment

Development View

The development view illustrates a system from a programmers perspective and is concerned with the software management. To illustrate this view, we used a package diagram. Our App consists of 9 packages and a total of 34 classes packageview

Scenario: Use case set

Bellow is a use case diagram for our system: UC Diagram (1)

Server: PHP

Class diagram for the php scripts have been included below: software-project-1