Third assignment for the startup14 course
TO BE FINALIZED BY THE END OF 3 APRIL.
Table of Contents
|
Grading scheme
As described in the syllabus: "The final grade is computed as follows: 25% interim presentation, 25% final presentation, 50% deliverables (such as models, code, mockup designs, or documentation). Students work in small teams. Students need to actively participate in team presentations to successfully complete the course. Students are supposed to declare their specific contributions to the deliverables."
This general idea will be applied as follows:
- The lecturer assigns 0-20 points to each team:
- 0-5 points for presentations of 2nd assignment.
- 0-5 points for presentations for 3rd assignment.
- 0-10 points for actual report for 3rd assignment.
- 1 extra point for those who had submitted a solution to 1st assignment.
- 0-2 extra points for those who had presented 1st assignment.
- Grades:
- 23: 1.0
- 22: 1.0
- 21: 1.0
- 20: 1.0
- 19: 1.3
- 18: 1.7
- 17: 2.0
- 16: 2.3
- 15: 2.7
- 14: 3.0
- 13: 3.3
- 12: 3.7
- 11: 4.0
- 10: 5.0
Constraints
- Each time must work on a different project; variations on the same option may be Ok.
- You must claim your option between 3-8 April by Email or Facebook.
- Your claim must be confirmed by lecturer.
- You must present first ideas during the scrum on 10 April.
- You should deliver your results through git. (Otherwise, 1 point is subtracted.)
- You must transparently list sources that you used.
- You have to present your findings on 17 April for approx. 10min.
- You can revise your deliverables until 20 April.
General assumptions
- The lecture has not covered these topics in detail.
- You will be required to read up on the topics of the projects.
- You are welcome to ask for help on Facebook (or possibly through Email).
- If your option is about "programming", your deliverable is well-documented code.
- If your option is about "modeling", your deliverable is a well-documented model.
- Otherwise, your deliverable is a report (an "article").
- Overall: let's learn from each other during the presentations on 17 April.
Project options
Behavioral modeling with UML
Analyze the Polls app (including available documentation) and identify opportunities for behavioral UML models such as state diagrams, activity diagrams, and use-case diagrams. Focus on behavior of the actual system, but you may also cover the process (workflow, activities) related to the usage of the system possibly by different kinds of users. You will need to consult a UML tutorial such as this one: http://www.sparxsystems.com/downloads/whitepapers/UML_Tutorial_Part_2_Introduction.pdf (Make sure to focus on behavior as opposed to structure.) Your deliverable is thus a behavioral model that complements the trivial structural model from in the lecture. Feel free to use any UML modeling or drawing tool you like, but make sure to deliver your model in PDF. Make sure to add enough textual explanation, discussion, or motivation, as you see fit. (Variations on this option may picks apps other than the Polls app.)
Transposing OOA to technology modeling
Remember our discussion of how to derive technology models from existing resources? One idea was to go through a typical use case of the technology (say, as available in a repo) and then to tag the artifacts, identify additional relevant entities (such as languages or concepts) and then to figure out relationships based on your technological understanding and consultation of technical documentation. Another approach was to go after primary documentation (wikipedia, homepage, white papers) for the technology and to derive entities and relationships from such material. Something similar goes by the name noun/verb analysis in object-oriented analysis (OOA). Other methods in OOA come to mind as well: CRC. Anyway, please study methods of object/class/method identification in OOA and try to derive from that a somewhat detailed proposal as to how entity/relationship identification could work in technology modeling. Focus on the scenario of analyzing primary documentation. In your essay, your describe the emerging method and you apply to a specific technology and its primary documentation.
Open source technology modeling
There is various resources listing "popular open source projects"; try Google/Bing. One such list is this: http://www.cyberciti.biz/open-source/30-cool-best-open-source-softwares-of-2013/ Pick a popular and "nontrivial" open source project from such a list and look more deeply into its documentation and source code to understand the technologies involved in the project. Present your findings as a technology model. Think of aspects like this: parts of the project, used languages, used technologies, relevant concepts, use of version control systems, and build management systems. Make an effort to describe a systematic methodology as to how you were analyzing the project so that your findings are somewhat reproducible. (Variations on this option may pick different projects.)
Client programming on REST API
You should not pick this option, if you have no experience with programming. Develop a client API on top of the existing Polls App API https://github.com/rlaemmel/mysite/blob/master/polls/api.py as demonstrated by https://github.com/rlaemmel/startup14/tree/master/rest_bot so that you provide a client-side GUI (e.g., in Python, Java, or HTML5/Javascript) whose actions are mapped to the API, specifically as running at http://rlaemmel.pythonanywhere.com/ (or using your own deployment). Make an effort to make it easy for the lecturer to build and run your client.
Web app programming
You should not pick this option, if you have no experience with (web app) programming. Develop a web app for technology modeling. The app is pre-configured by entity types and relationship types and it supports modeling by declaring entities and relationships. The app has an "export" option to render the model in JSON or XML.
Smartphone app programming
You should not pick this option, if you have no experience with (smartphone app) programming. Develop a native smartphone app for technology modeling. The app is pre-configured by entity types and relationship types and it supports modeling by declaring entities and relationships. The app has a "share by mail" option to send the model in JSON or XML to someone.
Security aspects in a web framework
Consider the architecture of the Polls app as it was discussed in the lecture. In particular, consider the REST API https://github.com/rlaemmel/mysite/blob/master/polls/api.py as demonstrated by https://github.com/rlaemmel/startup14/tree/master/rest_bot and take this as a starting point to discuss security of such web apps. More specifically, write an essay that addresses these questions. a) What could go wrong with the Polls app (with its API usage)? Think deep and broad. b) What overall ideas (concepts) exist to tackle such problems (e.g., authentication)? c) What specific technology or programming options exist for Django. Please feel free to design more relevant questions yourself; anything that helps understand security-related aspects at a conceptual and technical level within the illustrative context of the Polls app. (Explain these options at a superficial technical but informed conceptual level; given that you are not a programmer and you are explaining your findings to non-programmers.
Offline mode and push notifications in a webapp
Your boss believes that the Polls app should be extended or migrated to work as a web app (possibly smartphone app) in offline mode (i.e., allow for useful functionality when occasionally offline) and to make good use of a push notification service (for the good of the polls functionality). Regardless of what you think of your boss' expectation, you are tasked to explain at a conceptual and superficial technical level how exactly the Polls app could be transformed accordingly. Here are some possible questions you may want to address: a) What is offline mode overall? b) What are push notifications overall? c) How could these concepts be usefully (?) used within the Polls app? d) What technologies and services could be used for the Polls app? e) Does it make sense to change the architecture (the underlying technology pool) of the Polls app rather radically to get a true offline-enabled webapp with interesting push notifications?
Some possibly useful links; please find more:
- http://dev.opera.com/articles/view/taking-your-web-apps-offline-web-storage-appcache-websql/
- https://developer.mozilla.org/en-US/Apps/Build/Offline
- http://en.wikipedia.org/wiki/Push_technology
- http://en.wikipedia.org/wiki/Apple_Push_Notification_Service
Agile software development
Write an essay on agile software development, use appropriate resources (e.g., http://en.wikipedia.org/wiki/Agile_software_development) Rather than giving a general description of agile software development, try to apply it to Polls app. That is, pretend that the app was developed in this manner. What could have been the iterations? How could the agile principles been applied to the app development (http://en.wikipedia.org/wiki/Agile_software_development#Agile_principles). Think of the different involved roles: you as the entrepreneur or manager, one customer or several customers, developers, testers, and others. So a working title for your essay could be: Agile development of the Polls app (as it could have happened).
A regional startup atlas
You should only pick this option, if you have a promising vision as to how you can gather relevant data. Identify 3-5 regional startups (underway, in business, or already out of business) and discuss their IT side of things. For instance, try to answer some of the following questions: a) What sort of software does the startup use? b) What sort of IT skills do they have among their employees or do they source out? c) Do they develop startup-specific software? d) Do they use or develop open-source software? e) What sort of technologies do they use? f) Do they face specific IT-related challenges (such as scalability, mobility, security). Overall, try to be highly systematic in discussing the IT realities in those startup. Describe your methodology and findings in an essay. Your findings must be, to some extent, reproducible.