Final Project: Build an iOS App or Other Program

Table Of Contents

Ideally, this will be a group project, and the first step is to come up with an idea. It may take some time to solidify and refine your idea, so please start thinking early! And be creative! There are a number of milestones to ensure you stay on track.

If you intended to continue with iOS and write an app, I strongly encourage you to work through the optional Lab 7 and Lab 8 – they will give you experience using additional MVC features and UI components.

General Requirements

  1. Work in groups of 1-4, although I strongly encourage you to work in groups of two or three. If you would like to do an individual project or work in a group of 4, please chat with me ahead of the first deadline.
  2. Non-trivial behavior. Scope is ~3 weeks of time.
  3. Appropriate specification, design, programming, documentation, style, testing, etc. as developed over the course of the semester.
  4. A short presentation of your work.

Phase 0: Groups

Form your project group and propose an initial idea for a topic. A sentence or two is sufficient.

Also let me know what languages and tools you will likely use. (Swift and iOS frameworks, Java on the command line, etc.)

Deliverables

Send me an email with the above items.


Phase 1: Vision Statement and Requirements

Develop the requirements your project should meet, and sketch your program’s architecture. You may find it useful to consult both the slides from the lecture on Requirements and the Campus Paths Appendix in which I sketch out requirements for that app using the techniques and style you will use.

Deliverables

A Project Write-Up including at least the following sections.

  • Group Name and Members
  • Vision Statement: Summarize your project in one paragraph.
  • Feature List: The major functionality of your project. Possible extensions or tentative ideas can be marked as such.
  • UI Sketches: Sketches of the key UI elements to help express your vision, including the primary view controllers your app will include. There are nice storyboarding/mockup tools available for free, or simply make sketches by hand and scan them or photograph them.

    If you are building a system without an app interface, your UI sketches can be the formats for your command-line menus or options, your input and output data, etc.

  • Key Use Cases: You don’t need to write a long list of use-cases; instead write use-cases only for complex multi-step processes that are not obvious from the UI sketches. For example, “login” in most applications is a self-explanatory process so you do not need to make a use-case for it.
  • Domain Analysis: Describe the underlying domain of your application. Define key terms, concepts, and actors in such a way that a non-expert can understand the goals and features of your app.
  • Architecture: Describe the major components and data structures for your data model, as well as the top-level controllers and views of your UI. Feel free to use diagrams.

Since you are likely to collaborate on writing this and include sketches or diagrams, I suggest either:

  • using a Markdown document stored in a git repository, or
  • using a shared GoogleDoc.

In either case, you can simply invite me to view the contents before the deadline. (Using git will be required starting in Phase 2.)

No code is required for this submission.

Be thorough in your requirements. Some incompleteness pitfalls to watch out for include:

  • Your overview is vague, and it lacks concrete features or requirements to demonstrate that you put some real time into thinking about your design.
  • Features apparent from the vision statement and UI sketches are missing from the feature list, or key features do not appear in any UI sketch.
  • An important sequence of actions is not made clear in either UI sketches or a use-case.

Phase 2: Design, Specification, Testing Plan, Initial Implementation

  1. Refine your Phase 1 Document to reflect any changes to your requirements and architecture. The architecture in particular should be extended to include a more detailed description or diagram of your data model. You should also include one new section:

    • Testing Plan: Describe how you will test your model and UI.
       
  2. Begin specification and implementation tasks. You need not finish these items, but you should consider and make progress on the following:

    • Model:
      • Specify your core data structures and abstractions.
      • Sketch out preliminary implementations, and document your implementation choices.
      • Write initial specification/implementation unit tests.
    • UI (if not writing an iOS app, adjust these as appropriate to how the user will interact with your program):
      • Ensure your model’s public API is sufficient to write the UI.
      • Design and start implementing your controllers and views.
      • Lay out major pieces of UI in storyboard.
      • Write initial use case test scripts for major UI interactions.

Deliverables

  1. Your updated Project Write-Up.
  2. Your git repository containing all project files for the above.

    The project should have a README.md. You don’t need to repeat items from your Write-Up, but please include at least the following section:

    • Overview: A short paragraph or list describing the current status of your design/implementation/testing. That is: What works? What doesn’t work? What’s next? This will help me evaluate the work done and make constructive suggestions, and it will help you keep your group organized and stay on task for the next part.

Phase 3: “Alpha” version and Presentation

You should have most core functionality completed and thoroughly tested, although there may still be some missing or incomplete features. All code should be specified, clean, and documented properly. Having good tests is a major focus of this iteration. I am going to explicitly look for decent coverage with tests in this phase and going forward.

At this point you will give a short presentation to me on what you’ve done. Sign up for a time slot in Glow on or before the Phase 3 deadline. More details can be found on the Giving a Presentation page.

While not required, you are free to sign up for additional times slot in Glow to meet with me to discuss your progress at any time.

Deliverables

  1. Your updated Project Write-Up, README.md. Both should be updated to reflect any changes to the scope of the project or to the implementation or testing plans.
  2. Your git repository containing all of your work.
  3. Your presentation.

Phase 4: Final Demo, Completed Project, and Write-Up

You will demonstrate your app to me and wrap up all work, and all work on the project should be complete.

You must sign up for a time slot in Glow before or on the Phase 4 due date.

Deliverables

  1. A demonstration.
  2. Your updated Project Write-Up, README.md. Both should be updated to reflect any changes to the scope of the project or to the implementation or testing plans.
  3. Your final push to Gitlab.