ISYS 1117/1118 Software Engineering Fundamentals Assignment Draft 2017 Semester 1 Objective
This SEF assignment has two milestones designed to introduce students to various processes including the software engineering lifecycle, UML-design, refactoring and testing. The first milestone nurtures an agile development approach placing more emphasis on working software and test driven development(TDD). Students will become familiar with collaboration, version-control and testing tools that facilitate a continuous integration(CI) approach. The second milestone requires students to refactor the code and document the design using UML notation, thus making the application maintainable and extensible. In the second milestone students will be required to present UML diagrams in addition to demonstrating the final working software. In addition to these milestones, marks will also be awarded for class progress as specified in the Progress Marks section below. Students are expected to work individually (50 hours) and as a team (30 hours) for this assignment in addition to the time spent during contact hours. Please note this assignment carries 40% of the overall marks for SEF.
Progress Marks Wk Suggested Activities (these may vary between teams but students are expected to show progress)
Progress Milestone
3 Select the project and form the team – consider the strengths, interests and experiences of team members
1 mark
4 Identify User stories for Product/ Release Backlog 1 mark
5 Identify main domain classes and add responsibilities such that objects can interact to get the first release done. Distribute classes/responsibilities to members.
1 mark
6 Write Test Cases and start writing code to make them pass (individual)
1 mark
7 Demonstrate working Test cases (individual) and start integrating code and testing.
1 mark 5 marks
(see table)
8 Initial Milestone: Present partially completed product and get feedback from tutor and class.
1 mark
9 Plan second release incorporating feedback. Add classes, extend class responsibilities and distribute work. Develop detailed Group UML Diagrams (class, activity, use-case).
1 mark
10 Develop Individual UML Diagrams (sequence, state, object) Demonstrate individual Test cases
1 mark
11 Combine code and run integrations tests. Resolve conflicts. 1 mark 5 marks
(see table)
12 Second Milestone: Present final product to tutor and class. Refactor design and code before final submission.
1 mark
13 Face to Face Marking of design and code by Class Tutor 20 marks (see table)
Milestone 1 (Total 5 marks) This first demo/presentation will award marks for both group and individual work. Each individual member is expected to undertake at least two major tasks or responsibilities. Some of these responsibilities can be shared. For example, in the chess-like game “show all valid move destinations for a piece” can be a user-story/responsibility that must be shared by the Piece and the Board classes. The Piece derived classes such as Rook and Knight may know valid moves but only the Board classes knows where the vacant and opponent squares are located. In such a situation, those members writing the Rook and Knight classes may override the method getAllValidMoves():Squares[], while the person developing the Board class may write a method to check which of these squares are free to move using IsValidDestination(square). These two methods from different classes may thus be combined to determine all valid destinations. Students can defer non-model (GUI) aspects until the “core-logic” is fully tested (by using a simple textual interface).
Activity Marks Group Part Presenting the Initial Release Backlog and demonstrating a partially completed product 2 marks (4 mins) Individual Part 1. Individual member is expected explain his or her role/obligation towards carrying out the main user-stories/responsibilities, and any challenges faced. 2. Individual member is expected to demonstrate how these obligations are discharged, by running some test cases. If code implementing these tests is not complete, present the test cases designed. If little or no progress has been made briefly explain the reasons. 3 marks (4 x 1.5 mins)
Milestone 2 (Total 5 marks) The second demo/presentation will award marks for both group and individual work though more marks is awarded for group work. Activity Marks Group Part Presenting the Final Release Backlog and demonstrating the final product 2 marks (3 mins) Use a class diagram to present the overall design; use two sequencediagrams to present the core functionality. Explain the design rationale highlighting usability, maintainability, extensibility etc. 2 marks (3 mins) Individual Part Individual members explaining their role/ contribution and any challenges 1 marks (4 x 1 min)
Face to Face Tutor Marking (Total 20 marks) This milestone will also award marks for both group and individual work though the emphasis is mostly on individual contribution to design and coding. The group effort will be
measured through overall class and use-case diagrams, which should explain the overall requirements and design decisions. Each individual member is expected to demonstrate their individual contribution by detailing their part of the use-case and class-diagrams and by coming up with two other UML diagrams (a sequence diagram and one of state/activity/object diagrams). Tutors will check your diagrams are aligned with your code. You must include a readme file identifying each group members percentage contribution. Group members that contribute either more or less will have their group mark adjusted accordingly.
Activity Marks
Group Part Total 6 marks Overall Class Diagram (group) The class diagram must show all the methods, attributes, associations and multiplicities. Name the associations wherever possible 3 marks Overall Use Case Diagram (group) This diagram should show all the relationships including extends/includes. 3 marks Individual Part Total 14 marks Show detailed methods/attributes/associations relating to individual contribution in the class diagram 2 marks Show detailed explanation relating to individual contribution in use case diagrams – present one use case textual description for a significant use case. 2 marks Sequence Diagram (individual) 2 marks One of state/activity/object diagram 2 marks Code explanation relating to individual contribution. The code is expected to reflect the design. Code quality and explanation (code must be refactored) 6 marks
Submission Details: 26th May 2017 4.30 pm. No late submission allowed. All source code and diagrams must be printed and bound together and be submitted to the general office (14.08) by 4.30 pm on the last day of the semester (26th May 2017). Face to face marking sessions will commence on 29th May.
Bonus Features should not to be attempted until the completion of Standard Features
(Up to 5 marks)
Notes: Bonus marks are applicable only to those individuals contributing to these features – who may be asked to explain the design rationale. If multiple individuals complete these features, then each will get a percentage of the 5 marks. Any additional bonus tasks must be approved by your tutor. Total mark for Assignment cannot exceed 40/40 (including progress and bonus marks)
FAQ 1. Can I use other OO languages (e.g. Groovy and Ruby) and technologies (e.g. Angular –JS and Node-JS) for implementation? You must seek permission with your tutor. While we are happy to encourage you to learn new technologies, there may be no additional support from the teaching team. Moreover, the UML diagrams and code required for the second milestone assumes an OO design/implementation is followed. 2. Do I need to write the test code in JUnit? Yes, unless you are using another OO language such as Groovy, Ruby or Android which have their own API. JUnit is a standard API that comes as part of Eclipse. JUnit Information available on: http://junit.org/faq.html. JUnit will also be covered in the lecture/tutes. 3. Can I use one of the free Cloud based platforms to host my system? We are happy for you to explore this option but we cannot provide any additional support. 4. Will there be a client for my software? Yes, your tutor will play that role, who will also assess both demos/presentations and final design/code. In addition there will be a discussion board for assignments. One of the team members can also take the role of product owner. 5. What additional help can I get? We will arrange additional student consultation times if necessary. The lecturer will announce specific times on the blackboard. 6. Do I need to show exceptions in class diagram? No they will clutter the diagrams. 7. What additional Java features (not taught in introductory programming courses) will be needed or useful? You may want to use Swing, JavaFX, JCF, Abstract classes, interfaces, exceptions etc., which can be found in any Introductory Java Programming books (such as that by Daniel Liang). Those who are developing distributed or web-based applications may consider using sockets, threads, servlets and Java server Faces/ Java server pages which can also be found in most introductory programming books (such as the book by Daniel Liang). 8. Why are we encouraged to use a MVC-based-architecture? It allows you to focus on the model initially (data structures and algorithms) without having to worry about the view aspects. Loose coupling in MVC also makes the product more maintainable. 9. What else can I do to make my product more extensible and maintainable? Consider using common design principles and patterns. 10. Why does this course require programming? Students find it difficult to know whether their UML design is good or even correct, without implementing the design. Moreover, implementing the design and measuring the tangible outcomes promotes an iterative approach resulting in improved designs. Implementing your design and testing whether the product meets the original requirements allows you to go through the whole software engineering lifecycle, thus preparing you better for your final year projects and your working career in the software industry. Note, studentmentoring support is provided for SEF programming related issues from week 3. 11. Why insist on teamwork? Teamwork and communication are the two main attributes employers are looking for in IT/SE graduates – and this project provides a great opportunity. Please be honest and open about your strengths and weaknesses, and seek help from other team members, teaching staff and mentors as early as possible.
Projects: Summary, Rationale and Common Aspects
Students with differing backgrounds and programming experience currently take SEF. SEF is a core course for different levels (UG, PG) and programs (CS, SE, IT). To cater for such diversity, students are allowed to choose one of the projects from the given list, which are designed to facilitate an agile or test driven approach for the first milestone, and a more rigorous design and implementation for the second milestone using UML notation and design/code refactoring. We have tried hard to come up with interesting and varied projects to match your interests. Your team should consider the strengths, background and interests of your members when selecting the project. You may also want to do some reading and testing before finalizing your assignment selection in week 3 (similar to the inception phase in RUP or the feasibility studies in the waterfall process). The first milestone is designed to enable students to develop some working-software or a prototype as soon as possible and get some feedback during the class presentation in week 8. The second milestone will focus more on the design aspects including extensibility and maintainability of the software.
In all of these assignments you are required to show weekly progress during your labs and make use of tools used in the industry such as Trello (Collaboration), JUnit (Testing), GitHub (Version Control) and Lucid Chart (UML Design). Guided lab exercises will help you familiarize with these tools. All students are expected to have some Java Programming experience through previous or current course offerings. The book Introduction to Java by Daniel Liang will cover all the Java knowledge required for this course. In the initial part, students with limited programming skills may encounter some steep learning curve; but our experience shows project based experience in SEF help improve student grades in other programming courses.
All assignments include some suggestions for initial test cases in addition to core requirements; please feel free to replace these test cases with others and come up with additional requirements that will enhance the functionality of the system. In the initial weeks each team is expected to spend some time coming up with specific classes and methods, which can collaborate to meet all the requirements. The features for bonus marks are to be attempted only after completing all the required tasks.
Assignment Description
Course Management System
Presents a familiar domain dealing with student enrolment and courses. GUI is optional.
Develop a course management system for a small community college that started offering a degree in Information Technology (since last year). System should allow various personnel to interact with the system.
Budding Share Market Investor Ideal for those who have some background in finance and interest in distributed computing.
Write a stock market game to introduce budding investors to learn the risks and opportunities share market-trading presents. Users should be given $1,000,000 (bogus money) initially and be allowed to buy and sell the shares at current price from the ASX.
Simple Strategic Game Pacman like game combined with strategic collaborative monsters should make for an interesting and enjoyable game. Requires some knowledge of GUI and events. Some start up code may be provided/discussed in the lectures.
Develop a stand-alone Monster-Chase-Player-Game using Java. The main objective of the player is to stay alive by outrunning and escaping two cruel AI monsters.
Supermarket Support System Presents students with a familiar domain model involving domain classes Product, Sale, Customer etc. GUI is optional.
A new self-checkout system is introduced in a supermarket, which only allows payments for sales to be made through the company debit card.
Traffic Light Simulator
This project will be an ideal one for those interested in flexible design patterns and graphical simulation. Requires some knowledge of GUI, patterns and use of events.
Design and implement a system, which will allow staff of traffic engineering department to simulate traffic signal timing for up to 10 intersections.
Chess like Game
This strategic game based project is much simpler than the traditional chess but allows students to develop their OO design and programming skills. The second milestone requires the use of Swing/Java FX classes.
Develop a new strategic game similar to Chess, being made up of pieces such as rooks, bishops and knights, but with some variations from a normal game.
Vacation House Exchange Club
This project is suitable for those interested in using a web-based framework or a client-server architecture (RMI). Common frameworks include Groovy on Grails, Play, Rails, Stripes, JEE or Spring framework; however there will be no technical help in these frameworks that may involve some steep learning curves. You may also consider using multiple technologies. Suitable for independent learners or those with some prior working experience.
Design and implement a House Exchange club which allows members to use houses of other members when they go on vacation on a weekly basis (Friday to Friday).
Monster Game
This fun multiplayer project is suitable for those interested in working with distributed applications. It will require the use of sockets, threads and synchronization or RMI. This is probably one of the most technically challenging assignments. If selecting this project you need very good programming and debugging and design skills.
Write a simple multiplayer game where a monster (controlled by the server) chases and eats up the player pieces moving in the predefined grid
Task and Staff Scheduler This project will be great for those considering a project management career; it will give you a head start with scheduling and allocating staff resources to activities, a common problem in project management. This projects requires some use of GUI and events.
A project manager has approached you to develop a customised project management software over the summer vacation. The task also has interesting interactions between different project, activity and employee classes and will allow you to develop some heuristic algorithms.
Specific details and requirement for each project will be made available in week 2.
During week 1 you should consider which project you would be interested in doing, and looking to form groups of 4.
Note: Each group member must be from the same tutelab session.