COM 401 Software Engineering

Home
Up

 


     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.
 

 

bullet

Project Proposal Page

bullet

Senior Design Project I Report Template (READ)

bullet

READ Samples

bullet

READ Samples 2

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

bullet

Scrum in Under 10 Minutes

bullet

Certified Scrum Training

bullet

Scrum at Microsoft

bullet

Microsoft Solutions Framework (Wikipedia)

bullet

MSF home page

bullet

MS Templates and Tools for Scrum

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
 

bullet

Agile Software Development

bullet

Getting Started Pivotal Tracker, story-based project planning tool

bullet

Intro to Pivotal Tracker

bullet

The Pivotal Experience: Extreme Programming, Test Driven Development

bullet

Software Estimation in Depth - Steve McConnell

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)

bullet

UML Lecture Notes (160 pages)

bullet

Requirements Analysis (Additional Notes)

bullet

IEEE IEEE Std 830-1998 - Software Requirements Specifications (SRS)

bullet

Steve Jobs' brainstorming meetings with the NeXT team (1985), Lessons-1, Lessons-2

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

bullet

Cucumber Part 1 and Part 2

bullet

BDD with Rails



 

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















 

bullet

Observer and MVC Examples

bullet

PCMEF Examples (EMS)
 

bullet

System Design Implementation Document

bullet

SDD Samples












 

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)

bullet

Ruby for beginners: tryruby.org   codecademy.com

bullet

Getting Started with Rails

bullet

Rubby on Rails Tutorial, by M. Hartl, also teaches tools such as Git, GitHub, RSpec, and explains how to deploy programs to Heroku.

bullet

HTML, CSS, etc.: W3 Schools   codecademy.com   codeavengers

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



 
bullet

Cucumber/RSpec Cycle Part 1 / Part 2

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

bullet

This is the syllabus (Course Information Form) given to students at the beginning of the semester.

bullet

The lecture schedules given in the syllabus are tentative and updated here weekly. Look at this table once a week.

bullet

Almost all the slides used during the semester will be available here.

bullet

You can download the previous year’s lecture slides before the class from this address.

bullet

You can download the new lecture slides presented in the class after the lecture from this page.

bullet

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.

bullet

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.

bullet

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.

bullet

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.

bullet

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.

 

Home | COM 401 Software Engineering | Policies and Regulations