CS375: Software Engineering - Project Proposal (100 Points)

Assignment Goals

The goals of this assignment are:
  1. To produce a proposal document for a software project

Background Reading and References

Please refer to the following readings and examples offering templates to help get you started:

The Assignment

For your project proposal, you will identify a potential software project based on an existing perceived need. You do not have to fully specify all the details of your project at this stage; however, the goal is to define the goal of your project, the members of your project, and identify a compelling need for that project. As part of this “compelling need,” you will identify multiple stakeholders: people who would use or be impacted by the use of your software project.

Later (after the proposal is accepted), you will speak with members of these stakeholder groups to the extent possible, to identify and document software requirements that will frame the scope of the remainder of your project.

Project Group Members and Roles

For now, you will identify a potential group of at least 3 and up to 4 people, and assign each of them a role or area of expertise in completing the project.

You will rotate a few project roles among the group throughout the semester. Your group should include:

  1. A project lead: responsible for ensuring that everyone remains on-schedule, and adjusting the schedule with the group as-needed
  2. A document lead: responsible for ensuring that the reports are well-organized and written in a single voice (although everyone should write all the reports all the time)
  3. A scrum lead: responsible for leading the project group meetings, preparing the agendas, and keeping the project meeting minutes to be included in the periodic scrum reflection report
  4. Code lead: responsible for the codebase and software repository, and ensuring that code coverage is sufficient and that test cases pass

Include a rotation schedule for these roles. Every 3-5 weeks, these roles should rotate such that every member has served in every role. This schedule should be included in the project proposal.

Required Elements of Your Proposal

Your proposal should contain the following, likely as document sections:

  1. A description of your project
  2. A compelling need for the project
  3. A description of your stakeholder groups
  4. The technical expertise of your project group, as well as each member’s roles and responsibilities
    • A discussion of technical aspects your group may need to learn in order to be successful
  5. The minimum viable project scope: what functionality would you absolutely need to complete to be successful?
  6. Aspirant scope: what additional features do you want to incorporate if time permits?
  7. A rough timeline of the project scope, estimating on an hourly basis (assuming 8 hours per week per group member) the duration of each feature you identified as minimally viable and aspirant.
  8. A summary of the intellectural merit of your project: why is it worth doing, and what is novel about it?
  9. A summary of the broader impacts of your project: who benefits beyond your project group, and how?

Website

A goal of this project is to help you develop a portfolio that you can share with others as you start your career. To aid with this, one member of your group will create a github repository to hold the website for your project, where you will house your reports. This repository must be shared with all members of your group. Post your project proposal as a page to this repository.

Suggestions

To help you identify potential project areas, consider external needs. For example, what might benefit the campus community? Think of your own experience and any challenges you encountered that could be aided by the use of technology. It is perfectly acceptable to use this project as an opportunity to solve a problem from your own experience, but reflect carefully on the community benefit. In this project, you will focus primarily on the needs of others, and assume that it will be other people serving as the primary users of your software.

Submission

In your submission, please include answers to any questions asked on the assignment page in your README file. If you wrote code as part of this assignment, please describe your design, approach, and implementation in your README file as well. Finally, include answers to the following questions:
  • Describe what you did, how you did it, what challenges you encountered, and how you solved them.
  • Please answer any questions found throughout the narrative of this assignment.
  • If collaboration with a buddy was permitted, did you work with a buddy on this assignment? If so, who? If not, do you certify that this submission represents your own original work?
  • Please identify any and all portions of your submission that were not originally written by you (for example, code originally written by your buddy, or anything taken or adapted from a non-classroom resource). It is always OK to use your textbook and instructor notes; however, you are certifying that any portions not designated as coming from an outside person or source are your own original work.
  • Approximately how many hours it took you to finish this assignment (I will not judge you for this at all...I am simply using it to gauge if the assignments are too easy or hard)?
  • Your overall impression of the assignment. Did you love it, hate it, or were you neutral? One word answers are fine, but if you have any suggestions for the future let me know.
  • Using the grading specifications on this page, discuss briefly the grade you would give yourself and why. Discuss each item in the grading specification.
  • Any other concerns that you have. For instance, if you have a bug that you were unable to solve but you made progress, write that here. The more you articulate the problem the more partial credit you will receive (it is fine to leave this blank).

Assignment Rubric

Description Pre-Emerging (< 50%) Beginning (50%) Progressing (85%) Proficient (100%)
Functional Need (40%) No project motivation is given The project proposal does not describe an external need for the project, but motivates the project in some way The project proposal describes an individual functional need that can be satisfied within the scope of the course The project proposal describes a compelling functional need that can be satisfied within the scope of the course
Stakeholder Identification (40%) No stakeholder identification is present A stakeholder is identified but there is no discussion of their potential role in shaping the project requirements The project proposal identifies at least one project stakeholder group and identifies their potential role in shaping the project requirements The project proposal identifies multiple project stakeholders and describes their potential role in shaping the project requirements
Group Identification and Scope (20%) The group is not identified A group of likely adequate size for the scope of the project is proposed but one or more member roles is not specified A group of likely adequate size for the scope of the project is proposed and each member has a specific role A group of adequate size for the scope of the project is proposed and each member has a specific role

Please refer to the Style Guide for code quality examples and guidelines.