Outcomes
The high-level learning outcome of the team project (tP):
Can contribute production quality SE work to a small/medium software project
Accordingly, the tP is structured to resemble an early stage of a small software project in which you will,
- conceptualize and implement a product, and,
- have it ready to be continued by future developers
The focus of the tP is to learn the following aspects:
coding(taken for granted, not focused on specifically)- working in a team
- process/workflow
- documentation
- scheduling and tracking project progress, meeting delivery deadline
- quality assurance
Direction
The final product is to be targeted at users who can type fast, and prefer typing over mouse/voice commands. Therefore, typed user commands are the primary mode of input.
You are strongly discouraged from developing a GUI application as it can increase the workload unnecessarily.
Target User & Value Proposition
You are expected to:
- Define a very specific target user profile.
We require you to narrow down the target user profile as opposed to trying to make it as general as possible. Here is an example of progressively narrowing down target user: anybody → teachers → university teachers → tech-savvy university teachers → instructors of course CS____.
Be careful not to contradict given project constraints when defining the user profile e.g. the target user should still prefer typing to mouse actions.
- Define a clear value proposition that matches the target user profile i.e., what problem does the product solve? how does it make the user's life easier?
You should also define the scope clearly i.e., boundary beyond which the app will not help e.g., the app will manage contact details of a small number of JC-level students (which means the there is no support for managing large number of students or primary/adult students, and will only manage contact details -- not other details such as grades). - Aim to optimize the product to the chosen target users Although you should not decide specific features yet, keep in mind that eventually you should optimize the product for the chosen target user i.e., add/tweak features that are especially/only applicable for target users (to make the app especially attractive to them).
Example 1: If the product targets CS2113 instructors, there can be features that are applicable to them only, such as the ability to see a link to a student's project on GitHub
Example 2: If your app manages contacts, you can optimize its features based on,
- the profession of the target user e.g. doctors, salesmen, teachers, etc.
- the nature/scale of contacts e.g. huge number of contacts (for HR admins, user group admins), mostly incomplete contacts, highly volatile contact details, contacts become inactive after a specific period (e.g. contract employees)
- what users do with the contacts e.g. organize group events, share info, do business, do analytics
Your project will be graded based on how well the features match the target user profile and how well the features fit-together.