Software Modelling and Specification


1         The problem to be solved

, you are required to work as a software engineer to develop a subsystem of a given modern computer application. A requirements definition document of the whole application is given in the document

Your goal is to develop a subsystem of the application for the user type Owners of Controlled Areas. The subsystem is a mobile cloud application for users who use the system as the owner of a controlled area as well as operational staff of the controlled area. In other words, the subsystem must satisfy the functional and non-functional requirements of both types of users of Owners of Controlled Area and Operation Staff of Controlled Area.

You are required to perform a series of software engineering tasks and to produce a set of software engineering documents in order to demonstrate:

  • your understanding the principles of software engineering methodologies and
  • your capability of selecting and applying appropriate software engineering techniques, and
  • your skills of using advanced software engineering tools.



Task 1: Project Planning

In this task, you will work as a project manager to produce a Project Plan for the development of the subsystem. You should approach this task through the following steps and produce a document of project plan that contains the results of each step as follows.

  • Task decomposition : It should be a decomposition of the whole software engineering work required to develop the subsystem into a hierarchical structure of work packages, tasks, subtasks and activities. It should be presented in the form of task decomposition tree.
  • Workflow : It should define the logical dependence between the activities in the task decomposition to determine the order that activities should be performed. The milestones/deliverables of each activity should also be specified.
  • Resource allocation : It should allocate the resources to each activity in the hierarchical structure of task decomposition in terms of how much efforts to spend on it in terms of the number of Man-Weeks.
  • Model of process : You should construct a PERT chart to model the workflow and resource allocation using the results of the above step.
  • Schedule : It should be a schedule of the project for when an activity should be performed and when it should be finished, and what are the milestones to be completed and/or deliverables to be produced. It should be in presented in the form of a Gantt Chart.

Task 2: Software Modelling and Specification

In this task, you will work as a system analysist in the project to produce a UML model of the software subsystem to be developed based on the requirements definition document; see file on Moodle. The UML model should contain the following types of models.

  • Use Case Model : One Use Case Diagram to cover all the uses of the subsystem to be developed.
  • Activity Model : One Activity Diagram for one of the use cases of the subsystem to specify the interactions between a user and the system in that use case.
  • Structural Model : One Class Diagram to define the conceptual structure of the subsystem by defining the types of objects (i.e. the classes) in the subsystem and their relationship.
  • Behaviour Model : One Sequence Diagram to define the internal process of the interactions among the objects in the subsystem when the subsystem is used in the use case as specified in the activity diagram.

Task 3: Software Architectural Design

In this task, you will work as a software architect to produce of an Architectural Design of the system in the microservices architectural style. This document should contain the following elements:

  • Structure of the architecture of the subsystem : You are required to use the Software Architectural Visual Notation (SAVN) to present your design.
  • Textual documentation of the components : For each service component, you should document the services provided by the component, and the services that it requires from other service components. For each data storage components, you should document what type of data storage it is and what are the data stored.
  • Textual documentation of the connectors: For each connector, you should document what are the messages and their parameters passed through the connector between the components.

Task 4: Test Plan

In this task, you will work as a software test engineer to produce a Software Test Plan for testing the subsystem. Your test plan should consist of three parts:

  • Unit test plan : Select one class in your class diagram to produce a detailed unit test plan. It should include a set of test cases that adequately covers all the methods of the class.
  • Component test plan : Select one microservice in your architectural design to develop a component test plan to test the service in the form of service requests to the services and the expected responses from the service and the expected state changes inside the service if any. It should include a set of test cases that adequately cover all possible service request and responses.
  • System test plan : System test plan should be based on the activity diagram to test the subsystem on the use case. The test plan should contain test cases that cover all different scenarios of the use case (i.e. to cover all paths in the activity diagram).