Software Engineering Fundamentals Assignment
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
ISYS 1117 Software Engineering Fundamentals Assignment
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.