Iteration 2: Design - edogdu/software-engineering-course GitHub Wiki

In this iteration you are refining your initial requirements and starting to code as well.

Your team's submission should include the following.

Start with your requirements document (copy it over). Update it based on the feedback received from your requirements document, and include the explicit new refinements listed below as well.

Your document needs to include all of the following components.

  1. Project/Product Title

  2. Team Info: Include team's name, team members' names.

  3. Vision Statement: Summarize your project in a few sentences.

  4. Feature List: Improved list the features from the previous iteration. Identify key features of your project, the features or use-cases you plan on targeting first for implementation, and the "if time permits" features as extended features.

  5. UML Use Case Diagram: Improved use case model from the previous iterations.

  6. Key use-cases: Improved list of key use cases from the previous iteration.

  7. Sequence Diagrams: Key use-cases explained as sequence diagrams (a few of them) to identify key components of the system.

  8. Architecture: Give your full technology stack as well as any other APIs/frameworks you plan on incorporating.

  • Include an architecture overview diagram (UML subsystem diagram) and its explanation, so we can see you have a basic understanding of the components and how they will interact.
  • Include a picture of how your stack will appear in deployment if it is not standard.
  • Discuss which architectural design pattern(s) you are following in your design (if any, among MVC, layered, client-server, repository, pipe-filter, etc.).
  • List all proposed frameworks and libraries you plan to use including web server, database, helper libraries such as JSON helper libraries, Google maps, Facebook API, etc.
  1. UML Class diagram(s):
  • The goal here is to make an initial crack at what the data structures and actions/methods will be for your application.
  • You don't need the fanciest class diagrams but we do expect appropriate use of associations, including the multiplicity (0..n, 2, *, etc) and whole-part (diamond) annotations; use the proper arrow for inheritance; and, include fields not otherwise shown in the diagram as well as methods (no getters/setters, just meaty stuff) in the class box. Check this reference design lecture notes. Give examples and list the features of UML you need to use.
  • The diagram(s) should be reasonably complete in that associations and actions (aka methods) alluded to in the use-cases/storyboards should be shown in the diagram.
  • Keep the diagrams from becoming so big and the edges so tangled that it is not readable. An unreadable diagram is a useless diagram. For instance, don't include obvious stuff like getter/setter methods.
  • Consider diagramming each package/component separately so there are many small diagrams instead of one large diagram.
  1. Initial code:
  • For this iteration the goals are to get everyone with a good development environment, getting familiar with the development stack you are using, and writing initial code.
  • If you want to write some prototyping code to test some library or framework you are using, put it in a special spot in your Github repository, for example in a prototyping/ directory.
  • You are required to have at least something there, including a hundred (or more) lines of original code. Please add a sentence or two to the wiki under this heading describing your initial implementation.
  • All members of the group need to be able to have the dev stack stood up on their own development platform.
  • Everyone will also need to make at least one commit to the GitHub repo for the group. If it is just a line in the readme so be it, but you need to have checked out the repo on your own computer and made the change there, don't just use the GitHub interface to edit.
  1. Project Timeline:
  • Make sure you have project backlog created in the Projects tab of your GitHub projects repo. Assign tasks to your team members.
  • Make a project timeline using GitHub Project Roadmap to show your project's planning of activities, dependencies, and task assignments. Add a snapshot of it here. Make sure that all task deadlines finish by the end of the semester before project presentation.
  • Include the current snapshot of your project timeline here and also provide a link to your project timeline (GitHub Project Roadmap)

Submission

  1. In the Wiki pages of the repo, create a page named “Iteration 2 - Design”. Submit all requirements (above) in this page.
  2. Wiki text should be formatted using markdown. See: Adam's Markdown Cheatsheet for a few tips. Or https://github.com/tchapi/markdown-cheatsheet/blob/master/README.md.
  3. You will need to make a well-organized and readable wiki.
  4. Use draw.io to draw UML Use Case Model and UML Class Diagrams, as well as Architecture.
  5. Print the wiki page as PDF and upload to BB.

Reading

(Adapted from http://pl.cs.jhu.edu/oose/index.shtml)