Project Resources

This module discusses the resources required for a software development project. This includes the effort, the content created during the project in the form of specifications and code, the requirements the define the expectations of customers and stakeholders, and the time required to produce the software product.


Managing Project Content

Class Presentation

Recommended Readings

Additional Readings

  • Scott Chacon and Ben Straub, Pro Git, published by Apress, from Git-SCM.com.

Content Collaboration

Class Presentation

Recommended Readings

Additional Readings

The readings in this section provide additional information or more in-depth coverage of the material covered in this lecture.

Requirements

Class Presentation

Recommended Readings

Additional Readings

Estimation

Class Presentation

Recommended Readings

Additional Readings

  • DUE DATE: Fri, Mar 5 by 11:59:59pm

Content and Source Code Management

In this assignment you will gain experience with Git and certain aspects of GitHub. You will interact with GitHub and local repositories exclusively using Git command line utilities. You may use your IDE to make the required code change

The scenario for this assignment is that you have been developing some software using a local Git repository, and have decided to launch an open source project around the code.

You will first push your code to a new remote GitHub repository. Then you will start new feature branches to implement your first enhancements to the code, push the branches to the remote repository, and then use the GitHub GUI to create a pull requests for the feature branchs.

Here are the steps to perform:

  1. Use the comand line to clone your assignment-1-khoury-id GitHub repository to a local repository on your computer. Do not use your original files.
  2. Add a connection "assignment-3" to this cloned repository pointing to the remote assignment-3-khoury-id GitHub repository.
  3. Push the cloned repository using this connection to the master branch of the assignment-3 remote repository.
    • Note: add the '-f' option to the command to over-write the existing "README.md" file in the remote assignment-3-khoury-id repo, and omit the '-u' to avoid remote tracking.
    Verify that this was successful using the GitHub GUI.
  4. Clone the remote repository assignment-3-khoury-id to a new local repository. This is where you will be doing your work.
  5. In the GitHub GUI, go to Settings and enable GitHub pages specified for the master branch "docs" folder. Ensure that your JavaDoc can be accessed from a web browser using the specified GitHub Pages URL.
  6. In your local repo, create a new feature branch "enable-audio". In this branch, implement support for audio files in ContentInfo.java.
    • Implement a new public method "boolean isAudio()" that returns true if the source is audio (audio/*)
    • Implement a new public method "double getAudioDuration()" that returns the duration of an audio file in seconds. To do this, use classes in the "javax.sound.sampled" package. Wrap the connection input stream in BufferedInputStream and use it to get an AudioInputStream from the AudioSystem. Get the frame length from the AudioInputStream. Get the AudioFormat from the AudioInputStream and get the frame rate from the AudioFormat. The duration in seconds is the ratio of the frames and the frame rate. If the audio file is not supported, then throw an IOException with the UnsupportedAudioFileException as the cause.
    • In the ContentInfoTest class, use the files located at "https://www.ccis.northeastern.edu/home/pgust/classes/cs5500/2021/Spring/resources/assignment-3/". This includes all the files from assignment 1, plus a new audio file "3.258start.wav", in WAV format with a duration of around 3.258 seconds.

    After ensuring that your audio feature enhancement works correctly and passes your unit tests, regenerate your JavaDoc and verify it is correct. Then add and commit your changes locally, then push then to the remote GitHub repo.

  7. Go to your remote repo in the GitHub GUI and verify that the new "enable-audio" branch is present. Create a new pull request for the branch that includes a request to review and commit the changes. Verify that the expected number of files changed, and that the changes can be automatically merged before submitting the request.
  8. Acting as reviewer, review the changes in the "Files changed" tab. Then in the "Conversations" tab, approve the change by selecting "Merge pull request" and confirm the merge. Finally add a comment "Great job! Feature branch merged with master.
  9. In GitHub, modify the "README.md" file directly on the "master" branch to refer to assignment 3 rather that assignment 1.
  10. Review the repository contents in each of the branches in GitHub by going to the branches screen and selecting the branch name link. This will take you to back to the contents screen showing the contents of that branch.
  11. In your local repo, pull all the updates to the "master" branch to to bring it up to date.
  12. Review the repository contents in each of the branches in GitHub by selecting the branches link on the main display and selecting the branch name link. This will take you back to the main display showing the content of that branch in the content list.

Project Staffing

This is an individual assignment, so you will be working on your own.

Turning in the assignment

Once you perform the steps listed above, your assignment-3-khoury-id repository is the completed assignment, and it will be graded after the due date has passed.

In case of emergency...

If your assignment-3-khoury-id repository becomes hopelessly tangled and you want to start over, some internet posts suggest running the following commands

# gets the initial commit id
git rev-list --max-parents=0 --abbrev-commit HEAD

# hard resets to initial commit id
git reset --hard commit_id

You will also need to delete any branches using

git branch -d BRANCHNAME

Finally, you will need to push the changes to the remote repo

git pushd -f

At that point, you can go back to step 3.

If none of that works for you, post a private note to Piazza and one of the course staff will delete and recreate your assignment-3 GitHub repository for you.

Grading Rubric

This assignment is worth 100 points, allocated as follows

  • 20 pts: The initial version of the assignment 3 repository should have been cloned from the student's assignment 1 repository. This includes the "ContentInfo.java" and "ContentInfoTest.java" source files, the "docs/" JavaDoc directory, and the "README.md" and "GRADED.md" files.
    • Evidence: The commit history for each of these files and directories should include their history from the assignment 1 repository, and the blame listing should show the lines that came from assignment 1.
  • 20 pts: A "enable-audio" branch should have been created with updated "ConentInfo.java" and "ContentInfoTest.java" source files and updated content of the JavaDoc "docs/" directory. The contents of the "README.md" and "GRADED.md" files should remain unchanged from the assignemnt 1 versions.
    • Evidence: Examine the branches to verify that a "enable-audio" branch exists. Examine the history of the source and JavaScript files to ensure these include the new isAudio() and getAudioDuration() methods. Examine the history of the "README.md" and "GRADED.md" files to ensure they have not changed in this branch.
  • 20 pts: The ContentInfo.isAudio() method should return true for any audio ("audio/") content, false for any non-audio content and throw IOException if the content cannot be accessed. The ContentInfo.getAudioDuration() method should return a correct audio duration for any supported audio content, throw IllegalStateException for any non-audio content, and throw IOException if the content cannot be accessed. There should be adequate additional unit tests for these methods in the ContentInfoTest class. All new methods should have adequate JavaDoc and internal comments.
    • Evidence: Switch to the "enable-audio" branch and inspect the new methods, unit tests, and the JavaDoc and internal comments.
  • 20 pts: A pull request transaction should have been created for the "enable-audio" branch with a message asking for a review. The pull request should have been reviewed and the "enable-audio" branch should have been merged with a "Great Job!" message attached by the reviewer.
    • Evidence: Examine the pull requests to verify that a pull request was created and acted on, and that the "enable-audio" branch changes were merged in to the "master" branch.
  • 15 pts: The GitHub Pages feature should have been enabled for the JavaDoc "docs" directory, and the JavaDoc for the classes on the "master" branch should be visible using the GitHub Pages URL.
    • Evidence: Examine the "Settings" to ensure that the GitHub Pages feature was enabled. Use the GitHub Pages URL to inspect the generated JavaDoc for the classes. After the merge, the JavaDoc should include the two new audio methods in the ContentInfo class.
  • 5 pts: The "README.md" file should have been updated in the "master" branch to indicate "assignment 3" rather than "assignment 1"
    • Evidence: Examine the "README.md" file in the "master" branch, and review its change history.
  • DUE DATE: Thu, Mar 11 by 11:59:59pm

Reading a Professional Paper

In a quickly evolving field like Software Engineering, it is important to read papers about current topics in the professional literature, as well as papers where key concepts and methods were first presented. The purpose of this assignment is to give you experience reading professional literature and to provide you with some techniques that will help you get more out of the experience.

One the "Readings" page of this website is an article by Andrea G. Parker entitled, "How to Read a Research Paper". In it, Prof. Parker provides guidelines on how to read a paper, and describes a technique for taking notes by creating as a short, one-page review of the paper.

The assignment

In this assignment, you will apply Prof. Parker's guidelines, and create a one-page review of one of the papers in the "Recommended Readings" for lecture 7:

Following Prof. Parker's suggestions, your one-page paper will include:

  • a one or two sentence summary of the paper.
  • a deeper, more extensive outline of the main points of the paper, including for example assumptions made, arguments presented, data analyzed, and conclusions drawn. 􏰀any limitations or extensions you see for the ideas in the paper.
  • your opinion of the paper; primarily, the quality of the ideas and its potential impact.

Project Staffing

This is an individual assignment, so you will be working on your own.

Submitting the assignment

Submit your review as a one-page PDF file, "assignment-4.pdf". Provide a citation for the article at the top of the page so that you can locate it again later.