Thesis II Document
Your Thesis II document should contain the information outlined below. While you should feel free to layout the sections differently, think carefully about how your document will be read; don't assume anyone who reads this knows what you project is. The writing style should be technical Links to an external site. and your audience is software engineers familiar with computer science, but not necessarily the specific technologies your project depends on (e.g., they know what a database is, but don't assume they know MongoDB specifically). Your document should be longer rather than short, in part because of bulleted lists and figures, but also because you should elaborate on all of the points you make.
- Abstract
- a brief (1–2 paragraph) synopsis of your project; should be on its own page
- Introduction and background
- Describe your your project's purpose and put it in context. Explain how it fits with existing software: how is it similar and different. If it extends existing software, describe the existing software here.
- Client requirements, features, and assumptions
- List the client requirements and/or features of the system. Include references to the UI and system components that address each requirement. State any assumptions you're making (e.g., will the end product only work in certain environment, on certain platforms; what kind of users does it target; etc.).
- User interface design
- Using professional-looking wiref rames, show what the UI will look like and how it will work. Include details about what is shown when and how the UI will update based on user interactions.
- System architecture and component design
- Describe the application as a set of subcomponents or subsystems. Show how they connect and where they sit (mobile device, cloud, computer, etc.). Then describe each component in greater detail, including options for technologies to implement those components and a justification for why you chose a specific one. You must demonstrate not only good design, but critical thinking with regards to making design choices.
- Data design
- Describe what data the application will need and how it will be stored, if at all. Separately, specify the technologies that will be/have been used, what the alternatives are, and justify your choice. Again, you must demonstrate good design as well as critical thinking with regards to the choices you've made.
- System analysis and testing
- Describe how you ensured the designs and implementation support the client requirements and features. Describe any testing (automatic, manual, or user testing) you performed and what impact the results had on your design (e.g., did you change your design or implementation based on feedback during user testing?).
- Conclusions
- Describe the status of your product—which features did you implement, by how much, and what remains. Describe future work (not just completing unimplemented user requirements, but extensions of your project). Comment on the limitations of your product; these will likely reflect the testing you (didn't) perform and the assumptions you made. E.g., if you made something for Android, a limitation of your work is that it's not usable by folks with only iOS devices.
Anyone reading your document should be able to answer the following questions:
- what did you spend two semesters doing?
- who are the users of your application and what do they require of your application?
- does your application work with respect to the user requirements? how do you know?
- what are the limitations of your project?
- what were some of the challenges you faced that required assessing multiple solutions, how did you assess those solutions, and how did you ultimately settle on one solution
Here's a sample Links to an external site. (in progress).