IT代写 | ISYS 1117 Software Engineering Fundamentals Assignment

本次澳洲IT代写主要是要求使用面向对象编程技术完成独立的学生咨询系统开发,包含UML设计和需求设计代码开发等.

ISYS 1117 Software Engineering Fundamentals Assignment 2019 Semester 1 Objective
This SEF group assignment is assessed over 10 weeks through progress meetings (10 marks), two milestones (10 marks) and a final face-to-face marking session (30 marks). This assignment requires you to analyse the requirements of various stakeholders and resolve any conflicts with the tutor acting as the client, before synthesising your solution iteratively while applying the software engineering principles taught. In the final submission you will also be required to evaluate your solution in terms of its qualitative attributes usability, reusability, extensibility and maintainability. This assignment assumes you have the necessary object oriented programming skills.
You are also expected to use the tools and techniques introduced in the course. The progress meetings are designed to give early feedback where the tutor plays the role of the product owner as well as the assessor. What is expected of you each week is clearly specified. The lab exercises over the first week are designed to make you familiar with collaboration, version-control, modelling and testing tools that facilitate a continuous integration (CI) approach. The first milestone nurtures an agile development approach placing more emphasis on analysing requirements, working software and test driven development (TDD). The second milestone requires refactoring the design and code, using UML notation, emphasising maintainability and extensibility. In the second milestone and the final face-to- face marking you will be required to justify your UML designs, show the link between design and code as well as demonstrate the final working software. You 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 50% of the overall marks for SEF.
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, 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, student- mentoring 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.

Project 1: Student Advisory System
You are required to develop a stand-alone student advisory system to help CSIT students select the most appropriate course offerings for the current and future semesters allowing them to complete the degree requirements at the earliest. Assume there can be more than one program (degree), and each program will consist of a number of core courses, school electives and free choice electives. Both core courses and school electives can have one or more prerequisites. Free choice electives do not have any prerequisites and the names of these electives need not be captured (just state them as free). Assume also courses may be 12, 24 or 36 credit points and total credit points for course offerings in any one semester cannot exceed 48. Any student failing a course three times should be excluded. Students are mandated to follow the advice though it can help to inform them of the appropriate choices.
Your system should allow various actors to interact with the system.
• School admin to specify the set of core courses, the set of school electives, and their prerequisites for each program (CS, IT, SE). Assume a course can have only one prerequisite and that the prerequisite can be stated as one from a group. For example, students can do Further Programming after completing either Programming Techniques or Programming 1. Note a course that is a core for one program need not be a core for another.
• Program manager to add course offerings for the current semester and the next seven semesters. Note the future course offerings may be subject to change reflecting staff and space constraints. The program manager is also capture any overlap in course offerings to avoid students enrolling into two courses offered at the same time.
• The course coordinator may waive the prerequisite for a specific student and it should be captured in the system.
• Students should be allowed enter all the courses passed, failed or exempted since commencement into the program including school and free electives. Students should be allowed to rank the school electives offered in the current semester in order of preference.
• Students should be able to give the option to view the courses they can enrol as well the best combination of courses (individual program map) allowing them graduate at the earliest. The free electives need not be named.
Out of Scope
• No advice should be provided for excluded students (failed a core three or more times) and should be directed to see the program manager to make special arrangements.
• Currently only a stand-alone system is needed and no concurrent access are permitted.
• There may be many different strategies and heuristic algorithms suited for selecting courses but you are required choose one that allows them to complete the degree at the earliest time considering when these courses are offered in the current and future semester.

Additional Requirements
• All the data entered to be stored (in files, through serialization or database access).
• You should provide a facility for all actors to edit the current data. For example, students should be able to add other course passed, failed or exempted while the program manager may update the courses offered this semester or the overlaps
between them (in case the lecture venues are changed).
• Create some dummy data for 2 different programs, course offerings for the current
and future semesters and the data for 5 students made up of all the results and exemptions granted in the past. Create separate test cases to demonstrate all the main functionalities. The data for the programs should be based on the description of two of the three programs (CS, IT and SE)
• You are allowed to make any reasonable assumption but please state these explicitly in your documentation.
Bonus Features:
• Securing data access to various roles and individuals.
• User friendly Interface
• Demonstrating extensible, maintainable design
Possible Domain Classes
• Program, Course, CourseOffering, Elective, Core Some Suggested Test Cases for Milestone 1 & 2
1. Test that a student cannot enrol in a course that has no offering in the current semester
2. Test that a student cannot enrol in a course without the necessary prerequisite.
3. Test that a student granted exemptions is not required to enrol into them.
4. Test students are not advised to enrol into two current overlapping course offerings.
5. Test the program map suggested has no two identical courses.
6. Test the courses selected for a given semester do not add up to more than 48 credit
points.
7. Test the system selects courses allowing them to graduate at the earliest.
8. Test the system respects student preference for school electives.
9. Test admin, program manager, course coordinator and student functionalities can
be accessed only with valid username and password
10. Test the system is able store and retrieve the data.