软件工程代写 | 2813ICT Software Engineering Fundamentals Assignment
The purpose of this assignment is to demonstrate your ability to initiate a software project with
proper documentation of the business goal of the project. You also need to do requirement
analysis and specification, so this document can be used as an input for software design.
Furthermore, you need to demonstrate your ability to apply several software best practices into a
software-development project. All those practices are introduced in the lectures (but you may
need to carry some research about them).
In this assignment, you work in different roles.
Firstly, you will work as a project manager. You need to prepare a project plan that includes an
overview of the system, work-breakdown structure, activity definition and estimation and a Gantt
chart for presenting scheduling & time estimation.
Secondly, you need to work as a requirement analyst to analyse and model the requirements of
the system by using different modelling techniques.
Thirdly, you would work as a developer to describe the test plan and its test-cases for the
Finally, you will choose some software metrics and justify their applicability to the project at hand
and to specific outcomes of the software. Also, you will prepare some documents for assisting a
You may work in a team of two students, or you can do the assignment by yourself. If you work
as a team, each student must be involved in completing or refining the solution to each task. The
workload should be evenly distributed, and by default, each student receives the same marks. If
there is a concern of work contribution, please contact the course convenor for mark adjustment.
You should use the report template provided as a starting point, and make sure you present a
professional looking document. A report in PDF format must be submitted at Learning@GU, one
report per team with the following contribution history of the team members.
Your project should use the following case study as its core problem. You are to develop software
for embedded systems and automation. In particular, you are designing the embedded software
for a garage-door system that includes several hardware devices (a remote control, a roller door,
a PLC-Programmable Logic Controller, several sensors, and actuators). We assume the job of
your organization is to deliver the software that drives these devices (although software
implementation is not required for this assignment).
The system operates as follows. Initially the door is closed. Users can start opening the door by
pressing the open button on their remote control. Users can stop the opening by pressing the
open button again, and the motor stops. Pressing the open button when the door has stopped
resumes opening the door. Otherwise, the door opens completely and triggers the open sensor,
and as a result, the motor stops.
Pressing the close button will close the door if it is (partially or completely) open. Closing can be
interrupted by pressing the close button again, and the motor stops. Otherwise, the door closes
completely and triggers a closed sensor, and the motor stops. At any time, if someone triggers an
emergency stop button located on the wall, the door will lock. To resume we turn a private key in
a lock on the wall.
Thus, the garage door can be in four states:
1. A super state for moving (with three sub-states, closing, waiting or opening).
2. A closed state where it triggers a sensor for closing.
3. A fully-opened state where it triggers a second sensor for fully opened.
4. An emergency state, when it becomes locked.
You are to model the behaviour of the door controller. Some documents have been provided from
an earlier model of this embedded system. Unfortunately, these documents are not complete,
and your tasks is to study them to construct the consistent set of artifacts and models that specify
the requirements. The documents appear in the following figures. Figure 1 describes how a
sensor detects whether the door is fully opened: When the door is fully opened, the sensor
receives a signal DoorPressesOpenDoorSensor.