Software Engineering
Learning Objectives

The reading, quizzes, lectures, exams, and labs for this course are all designed around a set of learning objectives:

These learning objectives can be sub-divided into a few basic categories:

Lect/Lab Subject Concept Issue Representation Skill
1 Course Introduction Scope of s/w engr
criticality of methodology
challenges of building S/W
challenges of legacy S/W
why projects fail
2 Basic Project Skills change control
version control
distributed version control
standard build environment
gate keeping
code freeze
feature freeze
reproducability
centralized vs distributed change control
change control trade-offs
goals of build automation
hierarchical workspaces
work partitioning
work scheduling
time management
post mortems
base releases and branches
conflict management
git
3 S/W Process Models s/w specification
s/w planning
s/w construction
s/w deployment
work products
phases, activities, tasks
value of check-lists
choosing the right model
Big Requirements Up-Front
managing concurrency
safe phase overlap
planned iteration
waterfall model
incremental model
spiral model
4 Requirements stake holder
types of requirements
requirements vs specifications
clarity
consistency
testability
traceability
criticality of requirements
costs of early mistakes
requirements stability
requirements difficulties
scope creep
surveys vs interviews
requirement specification
reqts elicitation
reqts validation
reqts prioritization
5 Users, Roles & Use Cases user roles
scenario
use case (vs specification)
UML
understanding users/needs
User Story Cards
UML use case diagram
UML activity diagram
UML state diagrams
user characterization
scenario development
task analysis
6 Quality & Quality Assurance software configuration management
dimensions of quality
Q/A roles & activities
process assurance
testing vs Q/A
costs of defects
defect amplification
efficacy of Q/A techniques
when to do Q/A
defect removal techniques
7 System Models & Modeling system views
descriptive vs analytical models
queuing models
markov models
discrete event simulation
reasons to model
reasons to prototype
agile modeling principles
model life span
choice of model type
choice of model representation
component diagram
deployment diagram
mathematical models
U/I prototypes
mechanism prototypes
proof of concept
8 Principles of Architecture hierarchies of design
architecture (vs design)
modularity
information hiding
cohesion
complexity/simplicity
elegance
testability
extensibility
portability
elements of good design
appropriate abstraction
criticality of interfaces
interface stability
mechanism/policy separation
managing complexity
9 Evolving an Architecture nature of design process
intuitive objects
anticipating change
anti-architectural forces
why design is difficult
architectural diagrams
designing for change
solving hard problems
domain based objects
top-down design
bottom-up design
evaluating an architecture
10 Formal Reviews walk-throughts
relative costs of approaches
problems & solutions
vs. pair programming
reviews
review roles
review prep
review activities
review reports
11 User Interface Design Content Architecture
U/I principles
U/I challenges
examples: game usability
web UIs vs GUIs
principles of CLI design
usability testing
12 Component and Class Designs component
specifications
classes
class associations
class dependencies
packages
benefits of OO-design
object abstraction
reasons to define classes
Liskov Substitution Principle
Dependency Inversion Principle
Release/Reuse Equivalency Principle
Common Closure Principle
refactoring (vs up-front design)
class diagrams
package diagrams
object diagrams
OO-design
classes in non-OO-lanaguages
13 Routine and Algorithm Designs macros & in-lines
reasons to define routines
routine design principles
appropriate macro use
routine names
routine length
defining parameters
functions vs procedures
pseudo-code
UML swim-lane diagrams
UML state diagrams
UML sequence diagrams
Table Driven code
developing routine design
program into your language
14 Design Patterns concurrency patterns
arch: pipe/filter, layered, repositories, client/server
class: singleton, bridge, adaptor, proxy, object pool
algo: iterator, observer, strategy, visitor
15 Testability & Test Cases test cases and suites
black-box testing
white-box testing
code coverage
static complexity
testability
limitations of testing
characteristics of a good test
black-box vs white-box
100% code coverage?
testing and risk
test case specifications
test plan
choosing test cases
specification-based testing
equivalence partitioning
boundary value analysis
orthogonal array testing
16 Robustness correctness and robustness
reliability & availability
durability
defect, fault, error, failure
defensive programming
causes of defects
causes of failures
error detection principles
throwing exceptions
MTBF
FIT rates
fault handling reqts
assertions and audits
fire-walls/barricades
defensive instrumentation
failure mode enumeration
error prioritization
error detection
error containment
error testing
17 Bugs & Debugging stack trace
bug tracking system
priority & severity
regression testing
minimal failure cases
good bug reports
hypothesis confirmation
psychological issues
core dump
stack-trace
execution trace
bug report life cycle
exceptions
triage
scientific debugging method
diagnostic instrumentation
correct bug fixing
root cause analysis
18 Integration and Testing Strategy incremental integration
continuous integration
test harness
train-model integration
unit testing
architecture & integration
development & integration
testing & integration
choosing integration strategy
daily builds & smoke-tests
system vs unit testing
Test Driven Development
19 System Testing and Performance system testing
alpha testing
beta testing
principles of performance
Pareto Principle
release phases
unit vs system testing
testing and bug discovery
release criteria
performance principles
automated testing
scenario-based testing
load/stress testing
20 Maintainability elements of maintainability
elements of readability
elements of coding style
statement layout
code layout as documentation
style tools
comment types
when/how to comment
coding standards
module layout
indentation styles
commenting styles
external documentation
javadoc
doxygen
pydoc
21 Agile Process agile philosophy
Agile Aliance Principles
product owner
Sprint velocity
SCRUM sprints
failings of formal process
Agile vs planned process?
how much process
product backlog
22 Productivity & Collaboration collective code ownership
contributors to productivity
range of individual productivity
challenges of pair programming
eXtreme Programming
Pair Programming
23 Task Estimation & Risk Assessment work estimates
confidence bands
COnstructive COst Model
types of risk
estimation principles
proj size vs productivity
proj size and activities
estimate confidence
risk assessment
risk management plan
agile estimation
size estimation
24 Project Scheduling & Tracking SCRUM velocity
SMART milestones
quantifying progress
causes of slippage
SCRUM points
PERT charts
Gantt charts
PNR effort/time curve
status reporting
project scheduling
earned value analysis
status collection

Last updated: 11/10/2020