course_outline
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
course_outline [2015/03/25 23:00] – jonathan | course_outline [2017/05/02 16:17] (current) – jonathan | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Calendar Description ===== | ===== Calendar Description ===== | ||
- | A study of design methods and their use in the correct implementation, | + | A study of design methods and their use in the correct implementation, |
==== Learning Outcomes ==== | ==== Learning Outcomes ==== | ||
Line 9: | Line 9: | ||
Software designers are experts at developing software products that are correct, robust, efficient and maintainable. Correctness is the ability of software products to perform according to specification. Robustness is the ability of a software system to react appropriately to abnormal conditions. Software is maintainable if it is well-designed according to the principles of abstraction, | Software designers are experts at developing software products that are correct, robust, efficient and maintainable. Correctness is the ability of software products to perform according to specification. Robustness is the ability of a software system to react appropriately to abnormal conditions. Software is maintainable if it is well-designed according to the principles of abstraction, | ||
- | 1. Describe software specifications via Design by Contract, including the use of preconditions, | + | 1. **Specification**: |
- | 2. Implement specifications with designs that are correct, efficient and maintainable. | + | 2. **Construction**: |
- | 2. Develop systematic approaches to organizing, writing, testing and debugging software. | + | 3. **Testing**: |
- | 3. Develop insight into the process of moving from an ambiguous problem statement to a well-designed solution | + | 4. **Analysis**: |
- | 4. Design software using appropriate abstractions, | + | 5. **Architecture**: |
- | 5. Develop facility in the use of an IDE for editing, organizing, writing, debugging, testing and documenting code including the use of BON/UML diagrams for documenting designs. Also the ability to deploy the software in an executable form. | + | 6. **Tools**: |
- | + | ||
- | 6. Develop the ability to write precise and concise software documentation that also describes the design decisions and why they were made. | + | |
+ | 7. **Documentation**: | ||
==== Topics ==== | ==== Topics ==== | ||
Line 33: | Line 32: | ||
* Debugging, Unit Testing and Test Driven Development | * Debugging, Unit Testing and Test Driven Development | ||
* Abstract Data Types, Modularity and Information Hiding | * Abstract Data Types, Modularity and Information Hiding | ||
- | * Design Patterns | + | * Design Patterns |
* Documenting Design Decisions and demonstrating that code satisfies the design | * Documenting Design Decisions and demonstrating that code satisfies the design | ||
- | ===== Detailed Topics ===== | + | ===== Detailed Topics |
The suggested textbooks should help you do self-paced learning, a requirement for this course. The lectures, Labs, assignments and Project will exercise your understanding that you should develop by reading and working on your own. | The suggested textbooks should help you do self-paced learning, a requirement for this course. The lectures, Labs, assignments and Project will exercise your understanding that you should develop by reading and working on your own. | ||
Line 62: | Line 61: | ||
* What is a Class? It's static structure | * What is a Class? It's static structure | ||
* What is an Object? It's dynamic structure | * What is an Object? It's dynamic structure | ||
- | * Representing system architecture via BON (and UML) class diagrams. | + | * Representing system architecture via BON and UML class diagrams. |
* Relationships between classes: Client-Supplier (associations) and Inheritance | * Relationships between classes: Client-Supplier (associations) and Inheritance | ||
- | * Uniform Acces Principle | + | * Uniform Acces Principle and information hiding |
- | * Using Eiffel for DbC | + | * Design by Contract in depth |
* Using the EiffelStudio Debugger for Testing, and ECF files for clusters and libraries | * Using the EiffelStudio Debugger for Testing, and ECF files for clusters and libraries | ||
* Using the EiffelStudio BON diagraming tool | * Using the EiffelStudio BON diagraming tool | ||
Line 74: | Line 73: | ||
* Void Violation Cases and Void Safety | * Void Violation Cases and Void Safety | ||
* What is Design? Architecture and Specifications | * What is Design? Architecture and Specifications | ||
- | * The BON diagram | + | * BON and UML diagram |
* Information Hiding | * Information Hiding | ||
* Abstraction and abstract (deferred) classes | * Abstraction and abstract (deferred) classes | ||
Line 121: | Line 120: | ||
* Event Based Programming and Publish-subscribe (EVENT_TYPE abstraction using agents) | * Event Based Programming and Publish-subscribe (EVENT_TYPE abstraction using agents) | ||
- | === Slides 12 === | + | === SDD -- Software Design Document |
SDD -- Software Design Document | SDD -- Software Design Document | ||
*See [[https:// | *See [[https:// | ||
- | * Koopman and Toyota Unintended acceleration (see ) | + | * Koopman and Toyota Unintended acceleration (see video and slides [[https:// |
+ | |||
+ | === Slides 12 === | ||
+ | |||
+ | Design Pattern: Decorator and Open-Closed Design Principle. Static Class Digram and Dynamic Sequence Diagram. See Code sample. | ||
+ | |||
+ | === Slides 13 === | ||
+ | |||
+ | Design Pattern: Composite. See code sample. UML inheritance (generalization) and client-supplier (associations, | ||
+ | |||
+ | |||
+ | === Slides 14 === | ||
+ | |||
+ | Design Pattern: Visitor. See code sample. Static and Dynamic sequence diagram. | ||
+ | |||
+ | === Slides 15 === | ||
+ | Design by Contract and Exceptions. An exception is a violation of the contracts not a normal sequencing mechanism. The problem with using exceptions in place of preconditions in Java, C# etc. (a) An exception is the negation of the precondition, | ||
+ | |||
+ | === Slides 16 === | ||
+ | Correctness: | ||
+ | [[https:// | ||
+ | lampsort/ | ||
+ | The Eiffel method treats the whole | ||
+ | process of software development as a continuum; unifying | ||
+ | the concepts behind activities such as requirements, | ||
+ | specification, | ||
+ | maintenance and evolution; and working to resolve the | ||
+ | remaining differences, | ||
+ | Formal specification languages look remarkably like | ||
+ | programming languages; to be usable for significant | ||
+ | applications they must meet the same challenges: defining a | ||
+ | coherent type system, supporting abstraction, | ||
+ | good syntax (clear to human readers and parsable by tools), | ||
+ | specifying the semantics, offering modular structures, | ||
+ | allowing evolution while ensuring compatibility. | ||
+ | The same kinds of ideas, such as an objectoriented | ||
+ | structure, help on both sides. Eiffel as a | ||
+ | language is the notation that attempts to support | ||
+ | this seamless, continuous process, providing tools | ||
+ | to express both **abstract specifications** and **detailed | ||
+ | implementations**. |
course_outline.1427324410.txt.gz · Last modified: 2015/03/25 23:00 by jonathan