© Computing Science and Mathematics University of Stirling Page 1 of 11 University of Stirling Computing Science and Mathematics CSCU9P6 — Software Engineering II Group project Spring 2020 For the purpose of this project each of you is required to operate as a member of a team. The task of the team is to implement a working system in Java satisfying the object oriented design described later in this document on page 7. Lists of team members and monitoring officers, this description and project materials are on Canvas and the Courses file server K:\CSCU9P6 The organization of the work is largely up to each team. However, for each team we will appoint a project monitoring officer, and the team must meet with this officer at one project meeting each of two separate weeks. The monitoring officer will attend for up to half an hour (the group meeting might well continue for longer), and we appreciate that once the implementation gets properly under way, shorter meetings may be appropriate with the agreement of the monitoring officer. Attendance at these meetings is compulsory, and non-attendance may result in No Mark being awarded for the course. You should give your monitoring officer a brief, informal, progress report at the start of each meeting. Their normal role will be to observe silently, in the background — they are not there to solve design problems for you. If you wish to ask your monitoring officer for clarification of the problem, then they may need to consult “higher authorities” for the expansion of details in the requirements — a response will be provided as soon as possible, and, if appropriate, will be disseminated publicly for the attention of all teams. Sommerville’s and Pressman’s texts on software engineering provide guidance on organizing teamwork. We recommend that each team appoints one of its members as project manager, but this is up to you, and that you plan your work schedule using a Gantt chart. We also recommend that, wherever possible, you think about and define very clearly the interfaces of each Java class (the public operations offered) and work as individuals on separate classes (or groups of classes). Each group has been allocated a communal, shared folder on a Computing Science file server. If your group number is nn ( 01, 02, etc) then your shared folder is in \\wsv\Groups\P6\nn. Each member of the group has full access to all files created there; you might like to create a subfolder per group member as a place to keep work but which is also accessible to other members of the group if necessary (e.g. in case of illness). Each group has also been allocated a Subversion repository on our server: svn://svn.cs.stir.ac.uk/p6-nn where we recommend that you manage your central versions of your project files. Each member of the group can checkout a copy of the project into their own file space, or into personal sub-directories of the shared directory, regularly committing any changes that they make, and synchronizing to fetch updates committed by other members of the group. Note: The best way for Eclipse/Together to access a project in the shared folder, is to Map a Network Drive letter to the shared folder . Remember: You should never have the same project folder open with Together or Eclipse on more than one computer simultaneously, and there should be no need for this! [But several copies separately checked out from Subversion by different programmers is fine!] © Computing Science and Mathematics University of Stirling Page 2 of 11 I recommend that you use the Together project only for reference to the documentation, and that for development you use the Java already extracted from the Together project, and work in Eclipse (or an equivalent IDE) for the Java development, with the the most up to date project files held in the Subversion repository. Please note that the versions of Together and Eclipse in the labs are not compatible with each other, and you should not open one’s projects with the other! While you are working, it will be important to synchronize your work with the repository on a regular basis, and in particular at the start and end of each session of work. The Library has a collection of bookable meeting rooms — see http://stir.ac.uk/1wz Further, you can now book free teaching rooms through the ResourceBooker at https://resourcebooker.stir.ac.uk/ : log in with your Portal username and password, choose Book a Teaching Room, and then look at Cottrell Central. Also, remember the University’s "Empty space = study space" policy: "If you find a teaching room or computing lab lying empty, you are welcome to make use of it." Assessment arrangements Each group will make a joint software development submission, and a single agreed statement of individual contributions. Each student will submit an individual report. Group software development submission Each group will produce the following assessable output: 1. The final Java files, emailed as one Zip file to
[email protected] named Group-nn-Java.zip 2. You are not required to make any substantial alterations to the design/architecture of the system. However, if you do, then you should submit a brief but clear description of the alterations and the rationale for them, with relevant parts of the new class diagram. 3. Hard-copy documentation of the JUnit testing that you would carry out to demonstrate the correctness of an implementation of the GateInfoDatabase class — for simplicity assume that the classes that it depends on are themselves all correct and so may be used in the testing. The documentation must include the full code of the JUnit tests, and a description of the rationale for the test cases chosen (well written comments in the JUnit test code would be fine). You should also provide print-outs of the results of applying the unit testing. Of course, you should not restrict your own testing to just these cases! In the demonstration later on, all use cases will be exercised. 4. A demonstration by the group of the working system. Each group should hand in to the labelled box outside 4B89, or directly to Dr Jones, one hard-copy of items 2 and 3 described above, on or before 17.00 on 27 March 2020. The cover of the document should clearly identify the number of the group, but should not give the names of the members. The demonstrations will be arranged in due course. Statement of individual contributions This section is subject to change, pending the outcome of the Doodle poll. When assessing group projects, care is taken to ensure that the marks awarded fairly reflect individual contribution and effort. The marks awarded for this assignment will take into account © Computing Science and Mathematics University of Stirling Page 3 of 11 the individual reports, the individual contributions and effort as well as the group results. The individual contributions will be used to give each student an adjusted mark based on the group software development submission mark. The group must submit one printed copy of the table provided attached to this document (page 4), completed to show the relative contribution of each team member: Please distribute 100 points between the group members according to what the group agrees their contribution to have been. Please double check that the sum of the row is 100. Note that each member of the group must sign the form to indicate that it has been discussed and agreed. The group must attach to the form a brief statement listing the contributions of each member. For this purpose the group will need to keep a record of who does what. The statement of individual contributions should be posted into the assignment box by the same deadline as the group submission, 17.00 on 27 March 2020. Individual report In addition, each individual group member must submit a short report (maximum two sides of A4) discussing the management of the project: • Describing how their group organized its collaborative work, with reference to the project management topics studied in CSCU9P5, • assessing how effectively the group worked towards achieving its goals, • and discussing, with hindsight, whether and how the collaborative work organization could have been different to give a better outcome or, if you think that no improvement was possible, then why the particular organization was so effective. Note: This short reflective report will be assessed on the quality of the analysis, discussion, and writing, rather than than on whether an “approved” and effective organization was adopted. The individual report must be submitted via Turnitin on Canvas by the same deadline as the group submission, 17.00 on 27 March 20209. The report should have a title page giving the module code, the title of the assignment “Group project individual report", your group number and student number, but not your name. Pay attention to the layout and clarity of your work. Independent work as regards the individual report Work which is submitted for assessment must be your own work. All students should note that the University has a formal policy on plagiarism which can be found at http://stir.ac.uk/1x0 © Computing Science and Mathematics University of Stirling Page 4 of 11 Late submission The standard University procedures dealing with non-submission and with late submission apply. Assessed coursework submitted late will be accepted up to seven days after the submission date (or expiry of any agreed extension) but the mark will be lowered by three marks per day or part thereof. After seven days the piece of work will be deemed a non-submission, and will result in the award of No Mark. This rule may be relaxed for students who can show good cause for failure to submit. Good cause may include illness (for which a medical certificate or other evidence will be required). Assignment assessment Although this is a group project, you will be given an individual mark for this assignment based upon the following 3 factors: 1. The Group Submission 2. The Individual Contributions Form 3. The Individual Report This assignment is worth 35% of the overall mark for CSCU9P6. The Group Submission mark adjusted according to the Individual Contributions will account for 80% of your mark. The Individual Report provides the remaining 20% of your mark. © Computing Science and Mathematics University of Stirling Page 5 of 11 Group number: CSCU9P6 Group project Spring 2020 Individual Contributions Please quantify the contribution that each member of your team has given to the group work. Write the names of the members of the group in the first row below. Then, distribute 100 points between them, according to what the group agrees the contribution of each member was to the development of the project. For instance, in a four person group, if all the members have contributed equally, then each member will receive 25. Ensure that 1. the group number is include in the box above, 2. the names and contributions of your group members are given in the table below, 3. each member signs the form where indicated, 4. a brief statement of the contributions of each member is attached. Contribution Member 1 Member 2 Member 3 Member 4 Member 5 Name Distribute 100 points Signatures 1. 2. 3. 4. 5. © Computing Science and Mathematics University of Stirling Page 6 of 11 (This page deliberately left blank) © Computing Science and Mathematics University of Stirling Page 7 of 11 SAAMS project specification Introduction In this assignment you will be implementing an information system for the management of aircraft during their arrival, unloading, loading and departure from Stirling Airport: the Stirling Airport Aircraft Management System, SAAMS. Note that SAAMS is a support system for the people associated with the airport and aircraft: it provides information for the staff, passengers and non-travelling public about the status of aircraft, and regulates the progress of the aircraft through the various stages of its visit. SAAMS does not directly control the aircraft, nor any physical systems — though it does have a minimal interface with each visiting aircraft’s on-board computer for the automatic transfer of flight details. SAAMS’ principal interfaces with the real world are through screens, most of which are touch sensitive or are equipped with a mouse and keyboard: airport staff view information, receive instructions, and enter status updates and other information via the screens. All “real actions” are carried out by “real people”; in particular, all actions “required of an aircraft”, such as taxiing to a certain passenger gate to unload passengers, are notified to the aircraft’s crew by airport staff via radio. Fortunately, Stirling Airport has a perfect, but simple existence: there is no freight nor baggage to worry about, aircraft never break down seriously (and never while taxiing/landing/taking off), there is no in-flight catering, there are no “transit” passengers, passengers “check in” only at the departure gate (like a bus), all aircraft arrive with a pre-planned and immutable onward flight plan, the airport never closes, and SAAMS never crashes and is not started and stopped (and so does not have to preserve its state between runs) — and there are probably all manner of other gross simplifications, but never mind. The system is to be implemented on a computer system with the various interface devices distributed around the airport, and connected via special purpose networking. Of course, this is just an exercise, so the devices will be “only a simulation” and all the interface devices will appear as separate windows on a single PC screen — but this is actually very close to a real implementation where the separate windows actually appear on separate PCs (or maybe simpler devices) distributed around the airport. You will be provided with a Together design model at an intermediate/late stage in the design process: use cases, a class diagram, a large state diagram encoding the “life line” of each aircraft as it visits the airport (that is, the states that instances of the ManagementRecord class held by SAAMS pass through), a small state diagram encoding the lifecycle of each passenger gate, and some sequence diagrams. • The Together model can be found in K:\CSCU9P6\GroupProject\SAAMS. You should copy this folder to your group working folder. Remove the Read-only attributes. To make use of this model, you should launch Together, switch to the Modelling perspective and use File menu / Import. In the Import dialogue box choose “Existing projects into workspace” and then Next. Click Browse to Select root directory, and browse to locate your copied SAAMS folder. Then click Finish. This folder also contains the outline Java code generated by Together, plus a skeleton Main class in Main.java. It is probably best if individuals take private copies for initial exploration of the project contents. • More information/suggestions are given in the SAAMSREADME.txt file — read it. © Computing Science and Mathematics University of Stirling Page 8 of 11 • Remember to survey the Descriptions in the Properties Pane when you click on use cases, classes, methods, attributes... A lot of information/design decisions are described there. A good way to view the Descriptions is to select the Description line in the Properties pane and then click on the "..." that appears in the selected line — a separate window with the description will pop up. • You need to decide on an architectural framework for the application. MVC was in the designer’s mind, so that is recommended — look carefully at the stereotype annotations on the classes (e.g.<
> on the class diagram). [Caveat: It is sometimes more trouble than it’s worth splitting boundary classes into separate controller and view classes — this is the case when part of the “view” is used for the input of a “control” action, such as when the user can choose from a list of displayed items. However, the MVC scheme can still be followed. You will see that the boundary classes have the stereotype <> to hint at this!] • You will need to check on, and refine, the implementations that Together has implemented for the associations. • You may need to introduce new classes — but not necessarily. You may decide to split some classes up/merge classes. However, probably no significant changes to the class structure will be required, and none are expected. • Other refinements of the object model will certainly be necessary: in particular new attributes and methods. • Whatever changes you make, make sure that they are rational revisions of the structure that you have been given, and not arbitrary replacements of large chunks of design. • Various resources are available to help with the low level design and implementation: o On-line documentation of the Java class libraries, eg at URL https://docs.oracle.com/javase/8/docs/api/ o The MVC example (from practicals) in K:\CSCU9P6\Practicals o A demonstration of how a Java Swing JList of selectable items could be used to implement an interactive graphical user interface in K:\CSCU9P6\Using-JList-example (“select an item from a displayed list, then click a button to take an action”) • The actual user interfaces do not need to be beautiful, nor too clever — just lists, buttons and text fields/areas, will be fine. • You should not use threads or concurrency. The “life line” of visiting aircraft The key to understanding what SAAMS is all about is an understanding of how an individual aircraft’s visit to Stirling Airport is managed. Of course, SAAMS must be able to handle a number of aircraft at once, and not just one! Here is the story of an aircraft A’s visit, to be read in conjunction with the ManagementRecord (abbrev. MR) state diagram and Gate state diagram: © Computing Science and Mathematics University of Stirling Page 9 of 11 1. A enters Stirling Airport’s local airspace, is noticed by the radar/transceiver system, has its flight descriptor downloaded from the on-board computer into SAAMS automatically (a free MR is configured), and is assigned either the state “in transit” (if it doesn’t want to land at Stirling), or “wanting to land”. A then appears on the Local Air Traffic Controller’s (LATC’s) screen, with its status shown, and also on the Ground Operations Controller’s (GOC’s) screen if it wants to land. [Note: In this exercise the radar and flight descriptor download (and, later on, upload) will have to be a screen interface through which we can enter events and data, although in the real system they would be automatic devices, albeit with equivalent interfaces to SAAMS.] 2. If A is simply in transit, then at some later point the radar notifies that it has lost contact with A, and A’s MR is cleared, that is becomes free again (in a future extension perhaps it could be archived, but that is not required here). 3. The GOC starts the permission to land sequence by verifying the availability of space on the ground (from other information displayed on the GOC screen, a glance out the window, etc). Once this is done A’s status is changed to “ground clearance granted”. This is seen by the LATC on the LATC screen, and when the LATC decides that the air-space is clear and that A is clear to approach and land, the LATC radios this to the pilot and changes A’s status to “landing”, and later to “landed” when A is safely on the ground (a binocular check out of the window?). A may disappear from the LATC screen at this point (because it is no longer in or needing airspace), but remains on the GOC screen until it has finally departed again. 4. A must wait on the tarmac for notification by the GOC (by radio) of which gate to taxi to. The gate must have been “free”, and becomes “reserved” for A by the GOC. A enters “taxiing” status, and should appear on a console display at the gate. [Note: NONE of these decisions is taken by SAAMS — it simply provides information to the human operators, who make decisions and enter changes.] 5. When A arrives at the gate, the gate staff press a button to indicate that it has “docked”, and A’s status changes to “unloading” (and the gate becomes “occupied”). When all the passengers have disembarked, gate staff press a button to indicate that unloading is complete, and A’s status changes to “clean and maintain” (for cleaning and a routine maintenance check — no bird damage to the engines, tyres OK, etc). 6. At this point, A will appear on the Cleaning Supervisor’s screen, and the Maintenance Inspector’s screen, requesting them to send teams. When the cleaning and maintenance checks are finished, the Cleaning Supervisor and the Maintenance Inspector update A’s status via their screens. Cleaning is always successful, but the maintenance check may reveal faults. If so, the aircraft must await repairs and is then re-cleaned (in case the repairs made a mess) and re-checked (just to be sure). A variety of states capture this process, the principal ones being “awaiting repair” (whose successor is “clean and maintain” again) and “ready for refuelling” (which is only sensible once A has a clean bill of health). While A is “awaiting repair”, its MR will contain a (short) text description of the problem — this is entered by the Maintenance Supervisor when indicating that the maintenance check failed. 7. When A enters enters the “ready for refuelling” state it appears on the Refuelling Supervisor’s screen requesting a fuel tanker to be sent to the gate. The fuel tanker operator informs the Refuelling Supervisor when refuelling is complete and the Refuelling Supervisor updates A’s status. A enters the state “ready for passenger boarding”, which is displayed on the gate console. © Computing Science and Mathematics University of Stirling Page 10 of 11 8. A then accepts passengers on board while it is not full: each passenger enters details (at least name), which are recorded in A’s MR. When boarding is complete, or the gate staff decide that no more passengers are presenting themselves, the gate staff “close the flight” by pressing a button on the gate console. The passenger list is uploaded from A’s MR to A’s on-board computer by the radar/transceiver system, and A becomes “ready to depart”. 9. Since A is now “ready to depart” it now appears once again on the LATC screen requesting a departure air slot. When the LATC is able to allocate a slot (determined from national air traffic control information, not dealt with by SAAMS), the LATC updates A’s status to “waiting to taxi”, and A’s presence on the GOC screen indicates that it is requesting permission to taxi across the tarmac. 10. When there is space on the tarmac for taxiing, the GOC grants taxiing permission, A’s status is updated to “waiting for permission to take off” (during which it taxis to the runway). Take-off permission is granted by the LATC once the local airspace is clear, and A’s status changes to “departing through local airspace”. The radar eventually detects that A has left the local airspace and A’s MR is cleared, that is becomes free again (in a future extension perhaps it could be archived, but that is not required here). About the interfaces The “life line” description above gives a lot of information about the information displayed on, and about the interactions via, each interface screen. SAAMS has the following seven “real” interfaces: • The LATC screen shows all aircraft “in transit” through local airspace, “wanting to land”, “ground clearance granted”, “landing”, “ready to depart”, “waiting to taxi”, “waiting for permission to take off”, and “departing through local airspace”. The LATC can only alter the status of aircraft with “ground clearance granted”, “landing”, “ready to depart” and “waiting for permission to take off” — these aircraft should be selectable on the screen, with the means to action the relevant changes of status. In the other states, the aircraft are visible on the screen for information and for continuity while the LATC has any concern about them, and it should not be possible for the LATC to change their status. A suitable display will be one or more textual lists (see the ListInterface demo), with buttons for actions. Dynamic switching of views is not necessary — and probably not appropriate for a high pressure activity like ATC. The LATC screen should also have an area where the flight details (flight code, origin, destination, number of passengers, etc) can be displayed on request (select an aircraft, and click a button). (Again, see the List interface demo.) • The GOC screen is similar in principle to the LATC screen (details can be deduced from the “life line”). In addition the GOC will need to see the status of each passenger gate in the airport. • The Cleaning Supervisor’s, Maintenance Inspector’s, and Refuelling Supervisor’s screens are all rather similar: they show aircraft currently needing the appropriate attention (with gate location), and allow indication of completion of the relevant activity. The maintenance screen is fractionally more complex as aircraft may also be “awaiting repair”, and a textual description of the required repair must be entered as an aircraft enters this state. • The gate consoles have a simple display for information about the approaching or docked aircraft and any relevant flight details (flight code, destination, number of passengers, etc), with control buttons for various status changes (see the “life line”). © Computing Science and Mathematics University of Stirling Page 11 of 11 • There may be many information screens in public areas of the airport. They accept no input (although they may be scrollable text), and simply display brief status information about (some of) the aircraft currently managed by SAAMS (e.g. they might not show aircraft while being cleaned or repaired, and they might not distinguish between all states: for example “wanting to land”, “ground clearance granted”, and “landing” could be abstracted into “landing”). In the demonstrated system it will be sufficient to provide one LATC screen, one GOC screen, one Cleaning Supervisor’s screen, one Maintenance Inspector’s screen, one Refuelling Supervisor’s screen, three gate consoles, and two public information screens (although it should be easy, in principle, to have more of any of these if required). In addition to these “real” interfaces, there is one simulated device required: the radar/transceiver. This can be implemented as a screen with: 1. The means to provide flight descriptor information for an arriving aircraft, with a button to click for the state transition “enters local airspace and downloads flight descriptor” (step 1. of the lifeline), which causes the data to be sent to the aircraft management database, 2. the means to display an uploaded passenger list, and 3. a list of selectable aircraft currently either “in transit” or “departing through localairspace” with another button for the state transition “leaves local airspace” (in practice the radar would track all relevant aircraft automatically and report their departure via a “virtual click”!). Good luck! Simon Jones 18/02/2020