- PyLint/JSHint: a static code analyzer for Python and JavaScript, by Wei Tsang
- MessagePack: efficient JSON replacement, by Wei Tsang
- Jenkins: for Continuous Integration, by Team Azure
- AngularJS: Extending HTML with dynamic documents, by Team Polaris
- HubTurbo: Turbo-charged GitHub issues, by Team undefined
- MobiZen: for demo-ing Android apps on Desktop, by Team undefined
- Meteor: open source JS platform for building mobile & Web apps, by Team NoOp
- Hack and HHVM: PHP extension and VM for PHP, by Team Beacon
- Due: Friday, Week 13
- Two reports expected
- Software Developers' Guide
- CS3281/2 Project Report
- A Github release in the master branch, tagged "Project Submission"
- If you have been keeping your documents in the cloud (in NUS's wiki, github, Google doc, etc.), it is perfectly fine to link to the online version of the document in the PDF file. But please organize it and appropriately tell the reader what an URL is linking to. Just dumping a list of bookmarks is not fine.
- The goal of this report is to document the project's motivation/description, software requirements, design, implementation, test cases, instructions on how to use, remaining issues, etc.
- The target reader is a fellow developer who will maintain and continue the development of your project.
- Any information that will be helpful to a developer can go into here.
- You need to submit a PDF file, name
teamname-dev-guide.pdf
, into IVLE's workbin, replacingteamname
with the name of your team.
- The goal of this report is to demonstrate that you have followed and learned good software engineering practices in CS3281/2.
- The target reader is a professor who will evaluate your project.
- You need to submit a PDF file, name
teamname-proj-report.pdf
, into IVLE's workbin, replacingteamname
with the name of your team. - Some repetitions in the project report and dev guide is expected.
- The report should contain at least the following:
- Requirements: What are your project requirements? What has changed in the project requirements, and why?
- Architecture and Design: What is the software architecture of your project? Why do you design it this way? Has the architecture changed over the project, and why? What are the design decisions that you have to make during the project? (Remember the 4+1 view and QOC)
- Coding and Testing: How much of the original requirements are implemented? If there is anything unfinished, justify why. How is testing done in your project? What is an estimation of code coverage for your test cases? How is code review done within your team?
- Project Planning: How are the requirements/tasks of the project prioritized? How do you estimate the time needed to complete a task in an iteration. Has the time estimation improved over time?
- Evaluation: How do you evaluate the usability of your project? What are your findings and how do you address it? How do you evaluate the performance of your project? What are your findings are how do you address it?
- To help you focus on what to write, here are the learning outcomes of CS3281/2.
At the end of the project, students should be able to: (i) apply rigorous and principled software development methodologies and techniques to develop user-friendly, robust, --secure--, and efficient software systems, (ii) apply appropriate mathematics and computer science principles in one or more specialization to analyze and formulate an application problem, and to design, implement, and evaluate the solution of the problems, and (iii) demonstrate strong communication and teamwork skills to work with and contribute to a software team.
- IMPORTANT: please highlight the individuals contributing to the each aspect of the project (not to writing the sections in the report).
- Note: STePS is not graded (except for prizes by the crowd!). It falls on 19 November, Wed evening. Do take note of questions, comments, feedbacks from STePS attendees.
- Final Presentation + Q&A, On 21 November, Friday, @ DR5. One hour for each team. Evaluators: Ooi Wei Tsang, Leow Wee Kheng, Damith Rajapakse.