Project 2

CS 422 Software Methodologies - A. Hornof - January 19, 2024

Due Dates

Project "Ideation"

The Project Ideation (idea generation) assignment is described in a separate handout.

The 3-Page Proposal

The 3-Page Proposal should include (a) an initial brief SRS Concept of Operations (see the SRS template), and a discussion of the real-world users that you could work with to establish the requirements, (b) an SDS system overview, software architecture, and list of technology intended to be used, and (c) a project timeline. Each of these three items should be on a separate page of the proposal. You are not committing to what is in the Proposal. It can (and should) be further developed. The project should evolve. The 3-page proposal should identify a clear initial idea of what your group would like to do.

All writing for this project should follow "Good Writing" as discussed in the course handouts.

Overview

The initial 3-page SRS/SDS/Project Plan should identify a project that is appropriate for the given resources (time and personnel), and that can be decomposed into multiple modules for parallel development. The project should also be one for which realistic requirements can be established by interacting with real potential users of the system (who are not computer science students).

Your requirements analysis should be valid and sound: Please don't make stuff up.

Build systems that address real human needs. Please do not build systems that rely on your guesses regarding (a) human needs and (b) technology that might help address human needs. Please don't make stuff up. Your Concept of Operations, Use Cases, and all other aspects of your SRS should be based on correct and real facts about the world, human needs, and technology.

Please support any assertions that you make in your SRS. There are relatively few opinions or ideas that you can state as assertions without providing support. Support usually comes in the form of (a) empirical data (typically direct observation or user interviews) or (b) citations from reputable newspapers, peer-reviewed journal and conference papers, and technical documentation. But please don't make stuff up.

The Concept of Operations in the Spring 2022 CS 422 Project 1 handout (PDF) provides an example of how to support the need for a system using peer-reviewed journal articles. (It also uses a reference to popular culture to illustrate a possible use case.)

Try to build a system for someone who is not you.

Please build systems that address real human needs that are not your immediate needs, but are the needs of other people. This might require you to start with one idea for a system, and then develop it so that the system is intended for a different user group, not you or your friends.

For example, rather than building a system for what is in your refrigerator and pantry, build a system that could be used to help people stock, or get food from, a free food pantry, such as discussed in A Fridge for Every Neighborhood, which appeared in the UO Daily Emerald.

I ask you to please try build a system for someone who is not you partly so you can get some practice talking to users who are not you, and to learn how to "elicit" requirements from those users. We will discuss requirements elicitation in class. I am happy to help you with this aspect of the project.

Try to build a system that you cannot already download from the Internet.

A lot of source code is available on the Internet for a lot of projects. Please build something that cannot be downloaded. It is surprisingly easy to generate a new new idea. For example, you can take almost any project idea, and add the phrase "for the disenfranchised" to the end of your project idea, and you probably have an idea for a system that cannot be downloaded from the Internet.

No Machine Learning

The projects may not use machine learning (deep learning). The primary reason for this is so that you can understand and describe the cause-and-effect relationships inside of the systems that you create. Such as, to explain why an input to the system generates an output from the system.

Design for Installation

Requirements and Design can focus on ease-of-installation by designing for continuous monitoring and reporting of the status of (a) individual components and (b) inter-module connections. For example, you could generate requirements that:

  1. minimize black-box dependencies (don't rely on opaque systems),
  2. require components to continuously report component status and failures,
  3. dictate aspects of the installation process,
  4. specify and plan for testing the installation process,
  5. provide extensive realistic sample data, and
  6. make it easy to see the machine working using all of its functionality.

Technical Requirements

This section presents a minimum set of technical requirements. Your projects should generate many more than just these.

  1. The delivered system should be complete. For example, the system should not require me to download your code or your project documents from the Internet.
  2. No server connections may be required for either installing or running the software, other than to connect to a mysql server that is running on a departmental server (such as ix.cs.uoregon.edu). If your system requires such a server, you should provide full instructions for setting up that server. The steps involved, and the instructions should be as simple as this: MySQL - Using mysqlctl
  3. Systems should use standard libraries to the extent possible. For example, if written in Python, the systems should primarily use the Python Standard Library. Please obtain written permission (such as via email) to use any libraries or packages beyond the standard libraries for a language. If and when you request permission, please explain briefly what is the function of library or package, and please provide a compelling justification for using it.
  4. Installing and running the system should require little or no software to be installed (other than approved libraries or packages). To this end, no virtual environments, and no gaming engines such as Unity, should need to be installed.
  5. Instructions must be provided to compile, run, and install all of the code necessary to use the system.
  6. Deviations from these requirements should be requested in writing. Cite the approvals in the final submission, such as "Approved in email from Anthony Hornof to Chi Zhu on 10-27-2022."

Project Handouts

How to Comment Your Code
Evaluation Criteria
How to Present
How to Submit
Initial Group Meetings
Instructor Meetings
Peer Evaluation Form (PDF)
SRS & SDS Templates
Good Writing

Miscellaneous Links

NRL Dual Task SRS
System Documentation
UML Notation (Kieras) (PDF)
UML Notation (Fowler) (PDF)