1 COMP603/ENSE600: Program Design & Construction / Software Construction – Assessment 2021 Semester 2 Contents Introduction ………………………………………………………………………………………………………………………………………… 2 Important dates ……………………………………………………………………………………………………………………………………. 2 Requirements………………………………………………………………………………………………………………………………………. 3 Project Code Submission …………………………………………………………………………………………………………………….. 4 Important Notes ………………………………………………………………………………………………………………………………….. 4 Marking Guideline – Assessment 1 ………………………………………………………………………………………………………. 5 Marking Guideline – Assessment 2 ………………………………………………………………………………………………………. 8 2 Introduction This semester you will design and develop a software product, comprised of TWO projects. Both projects must be of the same topic. You can work individually or in a group of 2 students. We strongly recommend you work on the project individually. A team of two students are expected to do correspondingly larger projects. For team project, every team member will have a significant contribution in terms of coding. You may want to select a project from the list below or come up with your own. Student Information Management System Course Selection System – a program for AUT students to select papers A Virtual Academic Advisor – a chatbot for providing advice for AUT students to study planning Knowledge Repository – a system for knowledge management A Simple Q/A system – a system for lecturers to input Q/A, allowing AUT students to search A Simple ERP system – Enterprise Resource Planning system Service Desk System – a system for customer support Software Project Registration system – a system for students to register their PDC/SC project Ticket Booking System (for train, games, shows, etc.) Hotel Booking System Online Shopping System Inventory Management System Conference Management System Foreign Language (Vocabulary) Learning Software Card Game Virtual Pet Game Puzzles (Sudoku, Crosswords, Mazes, …) RPG game Chess Games Board Games Deal or No Deal Who Wants to Be a Millionaire Important dates You need to register your project by the end of Week 2 by submitting your project name and group member name (if any) through this FORM (click this link). The off-campus students who cannot open this link, please email TA for assistance. Project 1 source code submission: Week 7, Friday 27/08/2021, 11:59 pm Project 2 source code submission: Week 12, Friday 15/10/2021, 11:59 pm 3 Requirements Object-Oriented (OO) Programming concept must be applied to the project. Important concepts, i.e., encapsulation, abstraction, inheritance and polymorphism, must be reflected. There are two assessments. The first and second take 40% and 60%, respectively. Each assessment is comprised of lab exercises and software development project. Refer to table below: where “complete” means you will need attempt to complete the task and upload to the blackboard. In Software Development Project 1, you will need to develop a Command-line User Interface (CUI) version of the product. You will need to apply OOP concepts (abstraction, encapsulation, inheritance, polymorphism), try to follow SOLID design principles, create multiple classes with relationships, use text files to store input and output data from the program. In Software Development Project 2, you will upgrade the software to / newly develop a Graphical User Interface (GUI) version of the product. Meanwhile, you will include a database component to the product, implement Design Patterns, use Git for version control, eliminate code smells, and include necessary Unit Tests. The source code of the CUI and GUI versions of your products will be submitted in Week 7 and Week 12, respectively. Refer to the important dates for the due date of both project assignments. The program needs to be bug-free and has robust error handling. You need to develop the projects by using NetBeans 8.2/12, JDK 8. You need to use Apache Derby DB (also called JavaDB: http://db.apache.org/derby/) as the database management system (for Project 2 only). You need to develop unit tests (using Junit Framework) for testing some important functionalities of the program (for Project 2 only). The program should be easy to build and run without any configuration (especially, for Project 2, the DB should be set up automatically without any manual configurations). You need to have an open mind about the functionality of your software project, and try your best to make your program robust, interesting, and easy to use. You will be expected to develop your own Java code for the projects. You may use the Java standard library and other external libraries. You are encouraged to learn more beyond the lectures and apply what you have learnt to the projects. However, the project requirements stated in this document should be satisfied. IF you work in a group, you also need to include a one-page contribution for each project. If any team member gives less than 40% contribution/no contribution in terms of coding, the student will be given penalty/failed the paper. Please refer to the Marking Guideline for more details. 4 Project Code Submission The project must be submitted via Blackboard. You need to submit a compressed ZIP file which contains: o The project folder which contains all the source codes and related files, e.g., image files, text files, unit tests, etc. o IF you work in a group, you also need to include a one-page contribution for each project. If any team member gives less/no contribution, the student will be given penalty/failed the paper. o In Project 2, you need to include the database folder which contains all the database files in the compressed file. You can set the DB directory inside your project folder. o In Project 2, you need to include .git (hidden folder), having all the historical commits and branches. Submission Guideline o Find your group ID. You can find the group information under “Assessment and Project”. If you find any issue with the project registration, please contact your TA. o When you submit your project, please compress the whole project as a .zip (not .rar, .7z or any other types), and rename the zipped file with your group ID and the student ID of members. o For example, if the group ID is 9, and the student ID is 1234567, then the name of the submitted file should be “P09_1234567.zip”. If you have a partner in your group whose student ID is 7654321, then the name should be “P09_1234567_7654321.zip “. o Please submit a complete NetBeans project (Ant or Maven). Any improper submission (e.g., not a NetBeans project, several Java files or compiled classes, lack of essential files, improper name of the submitted file) may affect the assessment of your project. Important Notes To pass the course, the student needs to obtain at least a minimum pass (40%) in each assessment (includes software development project and lab exercise). And obtain at least 50% overall. Plagiarism and self-plagiarism will result in zero marks in the assignment and be reported to the faculty. We detect Plagiarism by using commercial software https://codequiry.com/. Plagiarism means: o Download open-source projects from online source, e.g., GitHub, and modify the codes o Re-use past students’ assignments with modifications o Re-use the assignment of other papers, e.g., ADA, DSA, etc. o Purchase assignments from any sources However, you can: o Re-use the sample codes and lab solutions given to you. o Download a utility class/algorithm for your project. o Download any existing models (e.g., machine learning model, language model) Late submission penalty will be applied (5% penalty per day up to a maximum of 5 days. Late assessments after 5 days will not be accepted). You have the responsibility to keep and back up different versions of your programs. You may also consider using cloud tools, e.g., one drive, drop box, Google drive, for backup. Losing of data (code) will not be considered as a valid reason for special consideration. Marking Guideline – Assessment 1 Weight Requirements Excellent (80%-100%) Good (60% – 80%) Satisfactory (40%-60%) Unsatisfactory (0%-40%) 15% Complete / show efforts in attempting to complete at least 3 lab exercises out of 6 Complete three labs Complete two labs Complete one lab No lab completion 15% User Interface (CUI) The program can handle users’ inputs from the CUI properly. The interface is easy for users to interact with Users can figure out how to use the system and interact with it easily. CUI can give user-friendly messages when a false input is given. The output layout is clean and nice. Users can quit at any step without being given an error message. Users still can interact with the CUI but find it not very convenient. Not enough info is given when a user provides any false input. Users are not able to exit the system or restart the system at any time. The output layout is fine but not nicely presented. The system is hard to interact with, and the users need to figure out how to use it. Exceptions are thrown when starting the program. The program cannot run. No CUI is populated for users to interact. 20% File I/O and Collections The program input and output data from/to text files successfully File I/O must contribute to the functionalities of the project. Use classes/methods taught in this paper are used to manage File I/O Appropriate Collections are utilized in the program. There is a central File I/O component, managing file reading and writing. There are more than three functions involving File reading and more than three functions involving File writing. The File I/O classes delivered in the lectures are utilized. Two kinds of collections (List, Map, Set) are properly applied to the programs. File I/O is used in the program. Both file reading and writing are applied, but there are very limited interactions with files. The classes delivered in lectures are used. Some of the collections (List, Map, Set) are applied to the programs, but some appear not appropriate. There is File I/O, but the classes delivered in the lectures are missing. There are a few interactions with files, but either File reading or File writing is missing. File I/O functions are scattered everywhere in the program. Only one kind of Java Collections is used and appears inappropriate. No file I/O component. No collections are used. 20% Software functionality and usability The program is easy to compile and run without any manual The program can be opened by NetBeans12 IDE, compiled, running without any issue. The program can run without any run time error by giving the expected inputs. The program can be opened by NetBeans12 IDE, compiled, running without any issue. The features of the system are not complex enough, missing The program cannot be opened by using NetBeans12 IDE. The program cannot be compiled or running. The features of the system are very simple, having less than three functional points. configurations (e.g., setup input/output files, import .jar files, etc.) The program works as expected without any errors The functionality of the program is easy to learn and follow Complexity and robustness of the functionality. The functionality of the program is complex enough, having most of the common features of the project implemented (dependent on the size of the team). The implemented features are robust. Any input can be handled perfectly without throwing exceptions. Meanwhile, messages can be prompted to the end-users for the correct input. some common features of the project (dependent on the size of the team) The system works well with the valid inputs but gives no hints when a user inputs invalid values. The system throws exceptions even given valid inputs. 30% Software design & implementation The program can be compiled successfully The purpose of the code is easy to understand by reading it OOP concepts (abstract, encapsulation, inheritance and polymorphism) are well applied. Follow the SOLID design principles. The comments in the code are useful and appropriate The program demonstrates codes modularity and reusability The code executes without runtime errors The error handling is thorough and robust The class structure reflects The project can be compiled without any errors. There are more than 9 reasonable classes (10+) with reasonable methods. The relationships among the classes are well presented. All the OOP concepts are applied, including abstraction, encapsulation, inheritance, and polymorphism. SOLID design principles are applied where appropriate. Comments of methods are given, and the codes are easy to read. The program is very robust and can handle all kinds of inputs without throwing an exception. The project can be compiled without any errors. There are 7- 9 reasonable classes with reasonable methods. The relationships among the classes are well presented. Some OOP concepts are applied, including abstraction, encapsulation, inheritance, and polymorphism. Comments of methods are given, and the codes are easy to read. The program is relatively robust but throws 1-2 exceptions. The project can be compiled without any errors. There are 4- 6 reasonable classes with reasonable methods. The relationships among the classes are missing. Some OOP concepts are applied, including abstraction, encapsulation, inheritance, and polymorphism. Comments of methods are missing, and the codes are not easy to read. The program is not very robust and throws more than 2 exceptions. The project cannot be compiled. There are more than 1-3 reasonable classes with reasonable methods. The relationships among the classes are missing. OOP concepts are not well applied. Comments of methods are missing, and the codes are not easy to read. The program is not robust at all, and it throws many exceptions. good design -0% to -100% Others Late Submission Plagiarism Detection Contribution (if you work in a group, please explain the contributions of EACH of the team members) Late submission penalty: 5% penalty per day up to a maximum of 5 days. Late assessments after 5 days will not be accepted Late submission with SCA: no penalty if the assignment is submitted within the SCA period. Plagiarism: If the assignment is classified as Plagiarism, all the items (except for labs) will be given 0. Contribution/Team issue: Less than 40% contribution will gain 60% of the total project marks. No contribution will get 0. Marking Guideline – Assessment 2 Weight Requirements Excellent (80%-100%) Good (60% – 80%) Satisfactory (40%-60%) Unsatisfactory (0%-40%) 10% Complete / show efforts in attempting to complete at least 2 lab exercises out of 4 Complete 2 labs Complete one lab No lab completion 20% User Interface (GUI) Clear and well-designed graphical user interface following common standards The interface is easy for users to interact with Users can figure out how to use the system and interact with it easily. GUI can give user- friendly messages when a false input is given. The GUI components are organized nicely. Users can quit at any step without being given an error message. Users also can go back to the menu or restart the system/game at any time. Users still can interact with the GUI but find it not very convenient. Not enough info is given when a user provides any false input. Users are not able to go back to the menu or restart the system at any time. The output layout is fine but not nicely presented. The system is hard to interact with, and the users need to figure out how to use it. The GUI components are not well organized, and users may have to re-size the frame before using it. Exceptions are thrown when starting the program. The program cannot run. No GUI is populated for users to interact. 20% Database The program contains a database element Database interactions and operations (input and output) using JDBC/Hibernate are part of the code. JDBC/Hibernate must contribute to the functionalities of the project. The project contains a database element, managing data reading and writing. There are more than three database interactions involving reading and more than three interactions involving writing. Derby Embedded mode is utilized, and the program can connect to the database without starting the database service. File I/O is used in the program. Both file reading and writing are applied, but there are very limited interactions with files. The classes delivered in lectures are used. Derby Embedded mode is utilized, and the program can connect to the database without starting the database service. There is a database component, but the same database connection data is scattered in a few classes. There are a few interactions with the database, but either reading or writing is missing. Derby Network mode is utilized, and the program cannot connect to the database without starting the database service. No database component. The program has a database component, but it doesn’t contribute to the interaction with the database. Other databases are utilized in the program, e.g., MySQL, Oracle, MSSQL, MongoDB etc. 20% Software Functionality and Usability The program is easy to compile and run without any manual configurations (e.g., setup DB, import .jar, etc.) The users interact with the program without any errors (e.g., the program can handle invalid data input by giving clear error messages and instructions) The complexity of the functionality The program can be opened by NetBeans12 IDE, compiled, running without any issue. The program can run without any run time error by giving the expected inputs. No manual configuration is required, including starting the database service, adding jars, etc. The functionality of the program is complex enough, having most of the common features of the project implemented (dependent on the size of the team). The implemented features are robust. Any input can be handled perfectly without throwing exceptions. Meanwhile, messages can be prompted to the end-users for the correct input. The program can be opened by NetBeans12 IDE, compiled, running without any issue. No manual configuration is required, including starting the database service, adding jars, etc. The features of the system are not complex enough, missing some common features of the project (dependent on the size of the team) The system works well with the valid inputs but gives no hints when a user inputs an invalid value. The program cannot be opened by using NetBeans12 IDE. The program cannot be compiled or running. Manual configuration is required, including starting the database service. The features of the system are very simple, having less than three functional points. The system throws exceptions even given valid inputs. 30% Software Design & Implementation The program can be compiled successfully The purpose of the code is easy to understand by reading it The comments in the code are useful and appropriate The code executes without runtime errors The version control is applied The error handling is thorough and robust The class structure reflects good design The project can be compiled without any errors. There are more than 11 reasonable classes (12+) with reasonable methods. The relationships among the classes are well presented. All the OOP concepts are applied, including abstraction, encapsulation, inheritance, and polymorphism. The program is well-structured, having a clear separation of UI and model. Design patterns are applied where appropriate. Comments of methods are given, and the codes are easy to read. The project can be compiled without any errors. There are 8- 11 reasonable classes with reasonable methods. The relationships among the classes are well presented. Some of the OOP concepts are applied. The program is relatively well- structured but without a clear separation of UI and model. Design patterns are applied where appropriate. Comments of methods are given, and the codes are easy to read. There are obvious code smells. Version control is applied but The project can be compiled without any errors. There are 5-7 reasonable classes with reasonable methods. The relationships among the classes are well presented. Some of the OOP concepts are applied. The program is not well- structured, and UI and model are mixed together. Design patterns are not applied. Comments of methods are missing, and the codes are hard to read. There are obvious code smells. Version The project cannot be compiled. There are more than 1-4 reasonable classes with reasonable methods. The relationships among the classes are missing. OOP concepts are not well applied. The program is not well- structured, and design patterns are missing. The program may contain only a few JFrameForms Design patterns are implemented correctly where appropriate A good coding style is used, following appropriate coding standards The code design follows OO design good practice There are no obvious code smells There is no obvious code smell. Version control is applied, showing multiple commits and branches merging. The program is very robust and can handle all kinds of inputs without throwing an exception. doesn’t show a lot of commits or branches merging. The program is relatively robust but still throws 1-2 exceptions. control is applied but doesn’t show a lot of commits or branches merging. The program is not very robust and throws more than 2 exceptions. without any other Java beans and models. Comments of methods are missing, and the codes are not easy to read. The program is not robust at all, and it throws many exceptions. -0% to -100% Others Late Submission Plagiarism Detection Contribution (if you work in a group, please explain the contributions of EACH of the team members) Late submission penalty: 5% penalty per day up to a maximum of 5 days. Late assessments after 5 days will not be accepted Late submission with SCA: no penalty if the assignment is submitted within the SCA period. Plagiarism: If the assignment is classified as Plagiarism, all the items (except for labs) will be given 0. Contribution/Team issue: Less than 40% contribution will gain 60% of the total project marks. No contribution will get 0.