The hardest single part of building a software system is deciding precisely what to build. — F.P. Brooks, The Mythical Man Month, 1975
  1. Requirements Analysis — Focus on the “Overview”–“Stakeholder interviews” & “Requirements analysis issues”.

    1. Compare and contrast the purpose of the analysis and design phases?
    2. Who are the stakeholders of a project? Please sign up as a stakeholder for some other project before Friday’s lab (see the “Project Team Stakeholders” list in our Moodle course; cf. homework #3).
    3. How are requirements identified and recorded?
    4. What is the difference between functional and non-functional requirements? (You’ll need to search for this one on the wiki page.)
    5. What are the key issues related to requirements and requirements elicitation?
    6. To what does FURPS refer?
  2. Requirements Modeling

    1. Unified Modeling Language — Focus on the introduction and the “Diagrams” section.

      1. What is UML?
      2. Compare and contrast UML’s two diagram categories.
      3. Familiarize yourselves with the following diagram types.
        • Use case
        • Class
        • Sequence
        • Deployment
        We will use these in this course, starting this week with use-case models and continuing with the other diagrams in later units.
    2. Use cases(and use case diagrams) — Focus on the introduction & “Fowler style”–“Examples”.

      1. What is the purpose of use case analysis.
      2. What are the elements of Fowler’s use cases?
      3. What do the actors, use cases and association links represent in a UML use case diagram?
    3. User stories — Focus on the introduction, “Format”–“Usage” & “Comparing with use cases”.

      1. What is a user story?
      2. What is the “Five Ws” format for a user story.
      3. Compare and contrast user stories and use cases.
  3. Re-read Postman’s article: “Five Things We Need to Know About Technological Change”, focusing on the second of his ideas.

    1. Briefly name Postman’s five ideas.
    2. Describe his second idea and explain whether or not you agree with him.
  4. Technology Stack — Review the following basic technologies.

    1. NodeJs — Be clear on what NodeJS is and try to describe its relationship with JavaScript, TypeScript, and React Native. N.b., the documentation isn’t particularly clear on this point.

    2. React Native Introduction — Work through these sections of “The Basics” introduction using the on-line Snack Player examples.

      1. “Core Components and Native Components” — Be able to:
        • Explain the nature and purpose of the View component.
        • Compare and contrast Core vs. Native components (we’ll generally be using the former).
      2. “React Fundamentals” — Be able to:
        • Compare and contrast React Native vs. React.
        • Explain these constructs:
          • JSX (cf. HTML)
          • Custom Components
          • Props
          • State
          • Hooks
        • You can find more information on React, see Learn React > Quick Start, particularly the “Thinking in React” section.
      3. “Handling Text Input” — Explain the use of the TextInput component.
      4. “Using a ScrollView” — Explain the use of the ScrollView component.
      5. “Using List Views” — Explain the use of the various List View components.