=====BON/UML===== * For more on UML and BON see [[https://wiki.eecs.yorku.ca/project/eiffel/_media/bon:uml.pdf|UML/BON]] (logon) * [[https://www.eiffel.org/doc/eiffelstudio/Diagram%20tool|Using the EiffelStudio/BON diagram tool]] (can also be used for UML) * [[https://youtu.be/wQs6n3e2mpo?t=216|Short instruction Video using the IDE]] to generate a BON class diagram. * [[http://www.bon-method.com/index_normal.htm|BON]] - Business Object Notation. The BON method for analysis and design of object-oriented software is a means of extending the higher-level concepts of the Eiffel programming language into the realm of analysis and design aided by a graphical notation akin to but different from UML. * For drawing BON diagrams see [[:eiffel:faq:bon:|using draw.io for BON diagrams]] BON provides a textual and graphical notation for modelling the static and dynamic structure of OO software: * BON has strong support for providing precise specifications of re-usable, industrial strength components via Design by Contract (preconditions, postconditions and class invariants), which includes subcontracting via the inheritance relationship. See example below. * It supports a seamless method for turning software construction from specification to implementation into a single continuous process. * It supports reversibility which is the ability to go back from implementation to specification. Here is an example of a contracted class CITIZEN using the BON notation: {{:bon:bon_diagram.png?800|}} ===BON Predicate Logic=== In BON diagrams, use mathematical notation to express contracts. See the BON textbook for more examples. {{:bon:bon-predicate-logic2..png?600|}} {{:bon:bon-predicate-logic1.png?600|}} ===Useful links=== BON is described in depth in the book //Seamless Object-Oriented Software Architecture//, Prentice Hall, 1994, by Kim Waldén and Jean-Marc Nerson. The textbook is now out of print but available from the BON website as a [[https://wiki.eecs.yorku.ca/project/eiffel/_media/bon:bon-book.pdf|pdf]]. ===Older Drawing Tools=== The graphical shapes of BON can be drawn using Microsoft Office Visio. We use draw.io instead. * Using the [[https://wiki.eecs.yorku.ca/project/eiffel/_media/bon:bon-stencil.zip|BON Visio Stencil]] (**Visio 2013 and later**), we can draw BON class and dynamic diagrams. A [[https://wiki.eecs.yorku.ca/project/eiffel/_media/bon:bon-visio.pdf|BON/Visio manual]] is available describing how to use Visio for the BON diagrams. * This is the [[https://wiki.eecs.yorku.ca/project/eiffel/_media/bon:bon-visio-stencil-original.zip|]] for **Visio2010**.