Topics to be covered in final exam -------------------------------------------- * indicates especially important; there will be a question that covers this PRINCIPLES FOR GOOD: Estimating Know good estimating practices Risk management Know good risk management practices Project management Understand the software lifecycle Understand the issues a project manager confronts Requirements engineering Know good requirements engineering practices *Design (esp. information hiding) You should understand information hiding well Testing Know good testing practices Code reviews Know good code review practices NOTATION/FORMALISMS: UML, Statecharts You should be able to read and write the UML diagrams we covered in class (major features) DSMs Read and write *Design patterns You should know the most important design patterns: - their structure, applicability, and consequences - visitor, observer, template method, factory, singleton, proxy **Hoare logic Be able to produce a loop invariant and variant function Be able to propagate assertions using weakest precondition rules **Temporal logic and model checking theory Read and write temporal logic properties Be able to simulate the model checking algorithm we covered in class UNDERSTANDING OF: Software architecture The purpose and benefits of architecture C&C vs. module views The styles we discussed in class *Analysis tools and techniques Answer basic questions about the analyses we covered in class Be able to discuss tradeoffs between them Aspect-oriented programming Basic understanding of the goals and mechanisms of AOP Process improvement (CMMI) Understand the goals of CMMI Understand the spectrum of maturity along the levels