Guided Project 1 - Software Development Practices and Tools

Guided Project 1 Introduction

Guided Project 1 Introduction

Target Audience: this guided project is geared toward the beginning Java programmer who has some experience with Java programming from the command line.

Creating a good software system, one that people want to use, requires more than just writing code. Writing software is a process, called software engineering. Software engineering is a sub-area of computer science where practitioners use processes and practices to develop high quality, performant, and usable software that meet a set of customer requirements. Tools support these processes and practices.

The Guided Projects will walk you through the phases of the software lifecycle: requirements, design, implementation, test, and deployment. Additionally, the Guided Projects will introduce you to the software practices and tools that support those practices.

Learning Outcomes

After completing this Guided Project, students will be able to…

  • Implement and test a multi-class software system from a given set of requirements and design.
  • Use software engineering best practices like test-driven development, code coverage, static analysis, version control, continuous integration, and documentation with supporting tooling to implement and test object-oriented systems.

Best Practice: Integrated Development Environments (IDEs)

Integrated Development Environments (IDEs) facilitate software development by integrating multiple software development tools into a single application. In this module you will use the Eclipse IDE and tooling in Eclipse to develop and test software.

WolfScheduler System

You will implement and test PART of the WolfScheduler system. The WolfScheduler system provides a way for a student to determine which course schedule may be best for them in an upcoming semester.

You will develop the WolfScheduler project over the course of the three guided projects. The WolfScheduler requirements describe the fully implemented system. Guided Project 1 will focus on the following requirements:

You will complete functionality related to events and schedule conflicts in future Guided Projects. There are expectations from the Guided Projects that you must follow. Do NOT attempt to implement any functionality before a Guided Project tells you to do so!

As part of the Guided Project, you will be expected to run provided JUnit tests and acceptance tests to ensure that your implementation meets the requirements and design of the system.

Tasks

Task
Time Estimate
Description
15 minutes
Create an Eclipse project and learn about the Eclipse Java Development perspective.
5 minutes
Create the WolfScheduler, which you will use for all three Guided Projects.
30 minutes
Push the WolfScheduler project to GitHub and learn how to use GitHub.
30 minutes
Use Eclipse code generation to create a plain-old-java-object (POJO).
30 minutes
Encapsulate `Course` and remove redundant code.
15 minutes
Run provided JUnit test cases on Course.
10 minutes
Run static analysis tools on the WolfScheduler project and fix any notifications.
90 minutes
Finish implementing Course.
15 minutes
Explore Eclipse tools for auto-completion, code templates, and code formatting.
15 minutes
Explore the Eclipse Quick Fix tool.
10 minutes
Set up `WolfScheduler` for testing file I/O.
15 minutes
Implement the skeleton of `CourseRecordIO` with classes and interfaces from the `java.io` package and the Java Collections Framework.
60 minutes
Implement and test CourseRecordIO.
150 minutes
Implement and test WolfScheduler.
10 minutes
Integrate WolfSchedulerGUI.
30 minutes
Run system tests on the WolfScheduler project.
15 minutes
Generate HTML documentation pages for the WolfScheduler project.
15 minutes
Review the feedback from Jenkins, the continuous integration system that we use for automated grading.
15 minutes
Review the learning objectives and submit the assignment.
Total Estimated Time*:
9 hours 35 minutes
* Times are only estimates. It may take you less time or more time depending on how much debugging effort is required for your specific implementation. Use the relative numbers to help guide you: for example, a task labeled as "5 minutes" should not require as much effort as a task labeled "20 minutes", regardless of how much time it takes to actually complete the task.

Grading Rubric

Your Wolf Scheduler Guided Project 2 will be evaluated on the following items:

Overall Rubric

Phase Grade Item Points Details
  Total Points 0  

Deductions

Grade Item Points Details
Misnamed file or incorrect project structure -5 Incorrect names of files or incorrect project structure. This can include problems when importing the project to Eclipse for acceptance testing, incorrect location of the system test file, incorrect file extension, etc.
Other deductions -5 If the project has to be manually graded due, you will receive a 5 point deduction. Make sure that your project builds on Jenkins!

Javadoc Rubric

Item Strong - 3 points Adequate - 2 points Inadequate - 1 point

Jenkins Server

We are using the Jenkins Continuous Integration system to automatically evaluate your work and provide feedback on your submission. Go to the [Guided Project and Project Jenkins Server by using https://csc216-jenkins.csc.ncsu.edu. NOTE: The Jenkins servers for CSC216 are self signed and are maintained by the CSC216 teaching staff and CSC IT. Please select the option to accept the signed certificate. Usually, there’s a link for Advanced that will display an option to trust the certificate.