|
|
Lecture Schedule
(tentative,
read Important Notes below)
W |
Lec |
Topics |
Lab |
Project Development |
Supplementary Notes |
0 |
Lec 0
Prj 0 |
Registration
Week: Course
Overview
Project Constraints (Pseudo Requirements) |
|
|
|
1
05/10 |
Lec
1 |
Intro to SaaS
and Agile Development
What is Software
Engineering?, Software as a Service, Service Oriented Architecture, Cloud
Computing, Beautiful vs. Legacy Code, Software
Quality Assurance: Testing, Productivity: Conciseness,
Synthesis, Reuse, and Tools. |
|
|
|
2
12/10 |
Lec
2 |
Software
Development Processes: Plan and Document Processes vs Agile
Processes
Requirements Execution and Project
Results, How to Improve Project Results: Adding Process,
Plan and Document Processes, How to Evaluate Organizations’
Software Development Processes, Agile Processes, How to
Combine Plan and Document and Agile Processes |
|
- Introduction
to Lab
- Course Project and Senior Design Project
- Forming project teams
- Finding a real customer and a real problem
- Start to prepare a project proposal
|
|
3
19/10 |
Lec 3 |
Project Management
Project Management Concepts, Project Organization
Concepts, Project Communication Concepts, It Takes a Team:
Size and Scrum, Pair Programming, Agile Design and Code
Reviews? Version Control for the 2-Pizza Team: Merge
Conflicts, Effective Branching, Fixing Bugs: The 5 R’s |
|
- Choosing a
project management methodology
- Scrum and Microsoft Solutions Framework Model
- Project proposal submissions
|
|
4
26/10 |
Lec
4 |
Requirements Engineering:
Fundamentals
Requirements Engineering Defined, Requirements
Development and Management, Business Analyst, Principles of
Requirements Engineering, Classifying Requirements, Playing
by the Rules, Shared Understanding, Requirements
Prioritization, Requirements Challenges |
|
- Understanding: functional
requirements
- Non-functional requirements
- Constraints-pseudo requirements
- MoSCoW classification for requirements
- Decision to choose a programming environment for the
course project |
|
5
02/10 |
Lec
5 |
Requirements Elicitation
and Analysis
Requirements Elicitation and Analysis Concepts,
Requirement Elicitation using Scenarios, Functional
Modeling: Requirement Elicitation using Use Cases,
Requirement Elicitation using User Stories, Model-Based
Requirements Specification, Documenting Requirements,
Validating Requirements Requirements Engineering Processes |
|
- How to write
a meaningful functional req.
- System-context diagrams
- Use Case modeling and User Stories
- Entity-Relationship models
- Class models
- Dynamic models (Sequence and Activity) - User Interfaces
(Mockups) |
|
6
09/11 |
Lec 6 |
Requirements: BDD and User Stories
Introduction to
Behavior-Driven Design and User Stories, SMART User Stories,
Points, Velocity, and Pivotal Tracker, Agile Cost
Estimation,
Introducing Cucumber and Capybara, Running
Cucumber and Capybara, Lo-Fi UI Sketches and Storyboards, Enhancing Rotten Potatoes Again, Explicit vs. Implicit and
Imperative vs. Declarative Scenarios, Plan-And-Document
Perspective |
|
- How to write User Stories in
Agile Development
- Cucumber and Capybara
- Enhancing Rotten Potatoes Example
Iter 0-1: Meet
w/customer, User stories on Tracker |
|
7
16/11 |
|
Midterm Exam |
|
|
|
8
23/11 |
Lec 7.1
Lec 7.2
Lec 7.3
|
System
Design: An Overview of Design Patterns
Patterns and Frameworks,
Introduction to GoF Design Patterns, A Behavioral Pattern:
Observer, An Architectural Pattern: Model View Controller (MVC)
System Design: Subsystem
Decomposition
System Design Concepts, Decomposing the System, Software
Architectural Styles, Layered Architectural Style,
Client/Server, Peer-to-Peer, Three-tier and Four-tier
Architectures, Repository, Pipes and Filters, Model View
Controller, Presentation-Control-Mediator-Entity-Foundation
(PCMEF)
System Design: Design
Issues and Documentation
System Design: Overview Concurrency Hardware/Software
Mapping Persistent Data Management Global Resource Handling
and Access Control Software Control Boundary Conditions
Documenting System Design: SDD |
|
Iter 0-2: Lo-fi
mockup & storyboard & Initial stories on Tracker
|
|
9
30/11
|
Lec 8
Exp |
The Architecture of SaaS
Applications
The Web as a
Client-Server System: TCP/IP Intro, Representation: HTML and
CSS, 3-Tier (Shared-Nothing) Architecture and Scaling,
Model-View-Controller Architecture, Active Record for
Models, Controllers, Routes, and RESTfulness, Templete Views |
Lec
RR1
Lec
RR2
Lec
RR3
Lec
RR4
|
SaaS
Framework: Intro to Ruby
SaaS
Framework: Intro to Rails
SaaS
Framework: Advanced RailsSaaS Client
Framework: JavaScript
Iter 1 (deploy + new stories) |
|
10
07/12
|
Lec 9 |
Design
Patterns for SaaS Classes
Patterns, Antipatterns, and
SOLID Class Architecture, Just Enough UML, Single
Responsibility Principle, Open/Closed Principle, Liskov
Substitution Principle, Dependency Injection Principle,
Demeter Principle, The
Plan-And-Document Perspective on Design Patterns |
|
Iteration 1
Demonstration and Evaluation
|
|
11
14/12
|
Lec 10 |
Testing: Test-Driven
Development
Intro to Rspec and Unit Tests, FIRST, TDD,
and Red-Green-Refactor, Seams and Doubles, Expectations,
Mocks, Stubs, Setup |
|
Iter
2 (deploy + new stories) |
|
12
21/12
|
|
Testing: Test-Driven
Development
Fixtures and Factories, TDD for the Model
and Stubbing the Internet, Coverage, Unit vs. Integration
Tests, Other Testing Concepts; Testing vs. Debugging,
Plan-And-Document Perspective on Software Testing |
|
Iteration 2
Demonstration and Evaluation
|
|
13
28/12 |
Lec 11 |
Maintenance: Legacy,
Refactoring, and Agile
Method-Level
Refactoring, The Plan-And-Document
Perspective, Reflections, Fallacies, Pitfalls, What Makes Code
“Legacy” and How Can Agile Help? Exploring a Legacy
Codebase, Establishing Ground Truth With Characterization
Tests, Metrics, Code Smells, and SOFA |
|
Iter
3 (deploy + new stories) |
|
14
04/01
|
Lec 12
|
Performance,
Releases, Reliability, and Security
From Development to
Deployment, Quantifying Availability and Responsiveness,
Continuous Integration and Continuous Deployment, Upgrades
and Feature Flags, Monitoring, Caching: Improving
Rendering Time and Database Performance, Avoiding Abusive
Queries, Security: Defending Customer Data in Your App,
Fallacies and Pitfalls and Concluding Remarks |
|
Iteration 3
Final Demonstration and Evaluation
|
|
Important Notes
|
This is
the
syllabus (Course Information Form) given to students at
the beginning of the semester. |
|
The lecture schedules
given in the syllabus are tentative and updated
here weekly. Look at
this table once a week. |
|
Almost
all the slides used during the semester will be available here.
|
|
You can download the previous year’s
lecture slides before the class from
this address. |
|
You can download the new lecture slides
presented in the class after the lecture from this page. |
|
I may skip several slides during the lecture (The
slides given would be generally too much!). They are included in the
course material for completeness and to provide a good reference for your
future professional engineering life. |
|
To
follow the lecture and understand the materials presented in class
better, get the lecture slides and take the print-outs of them, and
please bring them
to class. |
|
Purposes for bringing slides to class: 1) To allow better concentration in lecture by reducing
note-taking pressure and to provide a study-aid before and after lecture. |
|
2) You can
take your notes on these slides and be active
during the lecture. You digest material much better when you actively
take notes from step-to-step demonstrations given by your
instructor than by just sitting and watching slides. |
|
Disclaimers: (a) I
may not follow these
slides exactly in class (b) I may also use
the whiteboard and give some extra notes which will not be posted here
as needed in class (c) Students are responsible for what I say
and teach in class. (d) Reading these slides is
not a substitute for attending lecture. |
|