Announcements § Assignment 03 is due today (October 15) § Midterm Exam is Tuesday (October 20). During the lecture time. No exceptions. Final Exam will be Tuesday December 1st
Agenda § Sample Exam is available. Test your system ASAP § Read the Online Proctored Exam Guidelines to know what to do in case of a problem during the exam § Midterm Exam available October 20 only during lecture time from 6:00 pm to 7:15 pm. § No lecture that day. Go directly to your exam § It is a CLOSED BOOK exam. Do not use any material § Scratch paper is allowed. Empty White Paper. Show it on camera when you show your environment!
Topics 1. Program Development by Stepwise Refinement, N. Wirth. 1971 2. On the Criteria To Be Used in Decomposing Systems into Modules, D.L. Parnas. 1972 3. A Laboratory For Teaching Object-Oriented Thinking, K. Beck. 1989 4. Programming in the Large vs Programming in the Small, F. DeRemer et al. 1975 5. Design Patterns: Abstraction and Reuse of Object-Oriented Design, E. Gamma et al. 1993 6. An Introduction to Software Architecture. D. Garlan et al. 1994 7. Components, Frameworks, Patterns. R. Johnson. 1997
1. Stepwise Refinement • Niklaus Wirth. § Modularity § Function § Function-driven development § Decomposition § What criteria to use in dividing the system into modules? § Task § Steps § Quality attributes § Software Design is …
2. Decomposing Systems into Modules § Module § What criteria to use in dividing the system into modules? § Information Hiding § Data Structure § What is the difference of Function vs Module? § What is the difference of Task vs Responsibility? § Software Design is …
3. Programming in the large § High-cohesion and loose-coupling § Software Design is … § Programming versus Structuring § Development: Many small programs(modules) written by different people. § Architecture: Structuring a large collection of modules to form a "system" § Composition § Decomposition § Accessibility (public, private) § Hierarchy
4. Teaching Object-Oriented Thinking § Designs as an abstract level as having processes, data flows, and data stores, regardless of implementation language or operating environment. § Procedure, Function Method, Module, Unit, System § Class, Object § Task, Responsibility, Collaborator § Encapsulation / Accessibility § Hierarchical Relationships § Composition / Decomposition § Levels § Linking
4. Teaching Object-Oriented Thinking Association Directed Association Reflexive Association Multiplicity Aggregation Composition Generalization Realization
5. Design Patterns § Solutions to software design problems you find again and again in real-world application development. § Reusable designs and interactions between objects. § Behavior, Creation, Structure
6. Software Architecture § Architecture vs Design § Component: a software package, a web service, a web resource, or a module that encapsulates a set of related functions (or data) § Interface § Instruction, Statement, Function, Method, Structure, Class, Module, Packages, § Architectural Patterns
7. Frameworks § What is a Framework? § Library vs Framework § Components + Design + Domain Specific Solution § Inversion of Control: the framework determines the flow of control § Examples (source code)