This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
eiffel:why [2020/05/08 23:10] jonathan [Design by Contract] |
eiffel:why [2020/05/13 02:11] (current) jonathan [Example of a Top Level BON Class Diagram from an SDD] |
||
---|---|---|---|
Line 106: | Line 106: | ||
The double green arrows represent client-supplier relations (associations) between classes, and the single red arrows represent inheritance. | The double green arrows represent client-supplier relations (associations) between classes, and the single red arrows represent inheritance. | ||
+ | ==== Example of a Top Level BON Class Diagram from an SDD ==== | ||
+ | The "capstone" of the course is a project (usually with a team of 2 students) in two phases (in the second phase, more features are added). Below is one of the BON class diagrams produced by a team (taken from their software design document). This 3rd-year course is usually the first time most students design software with many classes (typically 15-20 classes are needed for a modular design). | ||
+ | |||
+ | |||
+ | |||
+ | {{:eiffel:why:3311-draw.io.png?740|by 3311 students Jinho Hwang and Ato Koomson, with their permission}} | ||
+ | |||
+ | |||
+ | ===== Specifications in industrial use ===== | ||
+ | |||
+ | Ada and Eiffel provide native language support for Design by Contract, but the principle that **specifications** are integral to design carries over to designing in any language. The Unified Modeling Language (UML) is the //de facto// modelling language in software engineering thus supports Design by Contract in the form of OCL (Object Constraint Language). For other methods of specification, see [[https://youtu.be/-4Yp3j_jk8Q|Video: Thinking Above the Code]] and the video below for **Specifications in Industry** at Amazon, Google and Facebook. | ||
+ | |||
+ | <HTML> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/GMQMzk3DZug" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
+ | </HTML> |