Table of Content

Topics

(Chpaters 1, 2, and 3; Lecture Notes) concept and overview of software engineering

(Sections 4.1 - 4.4 and Chapter 5; Lecture Notes) Overview of Software Process Models

(Chapter 2 and Sections 11.1 and 11.5; Lecture Notes) Introductions to VCS, Android Development

(Chapter 6; Lecture Notes) Requirement engineering and analysis; Behavior-driven design; User stories

(Lecture Notes) User-interface requirements; UI sketch; storyboards; project productivity tracking; velocity; tools

(Chapter 10; Lecture Notes) quality assurance; quality control; verification; validation testing; unit-test;

(Chapter 10; Lecture Notes) Android UI testing; acceptance tests for user stories; Espresso

(Chapter 10, Section 9.3.4; Lecture Notes) unit test; JUnit; Test-driven development (TDD); TDD workflow; refactoring

(Sections 7.1 and 7.2; Lecture notes) architecture design and methodologies;

(Sections 7.3 and 7.4 and Appendix C; Lecture notes) detailed design; object-oriented design; UML

(Chapters 7, 8, and 9, Section 14.1; Lecture notes) SOA

(Chapter 7.3.4; Robillard’s Modules 1 and 2; Lecture notes) Polymorphism; interface and polymorphism; Interface Separation Principle

(Chapters 8 and 9; Robillard’s Module 6; Lecture notes) Observer Design Pattern and Inversion of Control

(Chapters 8 and 9; Robillard’s Module 2; Lecture notes) Strategy, Iterator, and Singleton Design Patterns

(Chapters 8 and 9; Robillard’s Module 6; Lecture notes) SOLID

(Chapters 9 and 10; Lecture notes) implementation (beautiful code; DRY; Clarity via Conciseness; Idioms;

(Chapters 9 and 10; Lecture notes) concepts of bugs, defects, faults, errors, failures; debugging techniques; scientific debugging

(Chapters 9 and 10; Lecture notes) code reviews