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