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
- Lecture 5 presentation
- Lecture 5 Zoom recording (Passcode: U6#WSM.!)
Recommended Readings
- "Version control" from Wikipedia.
- "The Evolution of Version Control Systems" 18 July 2017, from Brew.com.
- "Git" from Wikipedia.
- "GitHub" from Wikipedia.
- Tutorials: Beginner from Atlassian.
- Tutorials: Getting Started from Atlassian.
Additional Readings
- Scott Chacon and Ben Straub, Pro Git, published by Apress, from Git-SCM.com.
Content Collaboration
Class Presentation
- Lecture 6 presentation
- Lecture 6 Zoom recording (Passcode: Vhbr3nz+)
Recommended Readings
- Git Documentation Complete git documentation including reference, Pro Git e-book, videos, and external links from Git.com.
- Tutorials: Collaborating from Atlassian.
- Tutorials: Advanced Tips from Atlassian.
Additional Readings
The readings in this section provide additional information or more in-depth coverage of the material covered in this lecture.- Linus Torvalds, "Tech Talk: Linus Torvalds on Git " (YouTube video: 1:10:14) from Google.
- Tim Pettersen (Atlassian), "Tracking Huge Files with Git LFS " (YouTube video: 41:57) from the Linux Foundation.
Requirements
Class Presentation
- Lecture 7 presentation
- Lecture 7 Zoom recording (Passcode: 7!r+oK!z)
Recommended Readings
- Roger S. Pressman, Bruce Maxim,
Software Engineering: A Practitioner's Approach,
8th Edition. McGraw-Hill Education, 2014.
- Chapter 8: Understanding Requirements
- "Requirements engineering", from Wikipedia.
- "Requirements engineering", from TutorialsPoint.
- "Software requirements engineering", from TutorialRide.
- "Requirements analysis", from Wikipedia.
- Kent McDonald, "What is the difference between customers, users, and stakeholders?", 7 Jan 2018, KBP Media.
- Tyler Logtenberg, "BRD, PRD, TRD… The case of the confusing requirements", 7 Jul 2017, Medium.com.
- Paul Ralph and Rahul Mohanani, "Is Requirements Engineering Inherently Counterproductive?", 2015 IEEE/ACM 5th International Workshop on the Twin Peaks of Requirements and Architecture, 17 May 2015.
Additional Readings
- Roger S. Pressman, Bruce Maxim,
Software Engineering: A Practitioner's Approach,
8th Edition. McGraw-Hill Education, 2014.
- Chapter 9: Requirements Modeling: Scenario-Based Methods
- Chapter 10: Requirements Modeling: Class-Based Methods
- Chapter 11: Requirements Modeling: Behavioral patterns and Web/Mobile Apps
- Paul Ralph, "The illusion of requirements in software development", Requirements Engineering issue 18, 2013.
- Paul Ralph and Rahul Mohanani, "Is Requirements Engineering Inherently Counterproductive?", 2015 IEEE/ACM 5th International Workshop on the Twin Peaks of Requirements and Architecture, 17 May 2015.
- Israr Ghani, et. al., "A short review of requirements gathering in agile software development", Journal of Software Engineering & Intelligent Systems, vol. 2, issue 3, 2016-2017.
Estimation
Class Presentation
- Lecture 8 presentation
- Lecture 8 Zoom recording (Passcode: %LWsUa0+)
Recommended Readings
- Roger S. Pressman, Bruce Maxim,
Software Engineering: A Practitioner's Approach,
8th Edition. McGraw-Hill Education, 2014.
- Chapter 33: Estimation for Software Projects
- "Software development effort estimation", from Wikipedia.
- "Why Software Estimation Is More Important Now Than Ever", from InfoQ.
- Michele Sliger, "Agile Estimation Techniques", from Project Management Institute, 2012.
- "Function Point Language Table", from Quality Software Management, Inc.
Additional Readings
- Roger S. Pressman, Bruce Maxim,
Software Engineering: A Practitioner's Approach,
8th Edition. McGraw-Hill Education, 2014.
- Chapter 32: Process and Project Metrics
- Steve McConnell, Software Estimation: Demystifying the Black Art, Microsoft Press, 2006. Available through the NEU Scholar OneSearch portal (NEU login required).
- Adam Trendowicz and Ross Jeffery, Software Project Effort Estimation: Foundations and Best Practice Guidelines for Success, Springer International Publishing Switzerland 2014. Appendix A: Measuring Softwre Size.
- "Story points and estimation", from Atlassian.
- "The 5 Laws of Software Estimates", from Ardalis.
- "Backlog Grooming", from ProductPlan.
- "Planning Poker", from Wikipedia.
- Kjetil Moløkken-Østvold and Nils Christian Haugen, "Combining Estimates with Planning Poker—An Empirical Study", 8th Australian Software Engineering Conference. IEEE, 10-13 April 2007.
- 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:
- 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.
- Add a connection "assignment-3" to this cloned repository pointing to the remote assignment-3-khoury-id GitHub repository.
-
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.
- Clone the remote repository assignment-3-khoury-id to a new local repository. This is where you will be doing your work.
- 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.
-
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.
- 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.
- 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.
- In GitHub, modify the "README.md" file directly on the "master" branch to refer to assignment 3 rather that assignment 1.
- 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.
- In your local repo, pull all the updates to the "master" branch to to bring it up to date.
- 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
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
Finally, you will need to push the changes to the remote repo
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:
- Paul Ralph and Rahul Mohanani, "Is Requirements Engineering Inherently Counterproductive?", 2015 IEEE/ACM 5th International Workshop on the Twin Peaks of Requirements and Architecture, 17 May 2015.
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.