Guide
Formal Specifications - ✔️✔️models code using mathematical concepts; specifies
behavior of methods (preconditions and postconditions) and objects (mathematical
modeling)
Verification - ✔️✔️the process of using formal specifications to deduce the correctness
of code; does NOT execute the code; can show both absence and presence of bugs
Waterfall Development - ✔️✔️Requirements -> Design -> Implementation ->
Verification -> Maintenance
BDUF = Big Design Up Front
Iterative/Incremental Development - ✔️✔️initial planning -> planning requirements ->
analysis and design -> implementation -> deployment OR testing -> evaluation ->
repeat until deployment
Spiral Development - ✔️✔️1) Determine Objectives
2) Identify the resolve and risks
3) Development and test
4) Plan the next iteration
Mediator Pattern - ✔️✔️Used to reduce communication complexity between multiple
objects or classes; behavioral
Iterator Pattern - ✔️✔️Used to get a way to access the elements of a collection object
in sequential manner without any need to know its underlying representation; behavioral
Observer Pattern - ✔️✔️Used when there is a one-to-many relationship between
objects such as if one object is modified, its dependent objects are to be notified
automatically; behavioral
Strategy Pattern - ✔️✔️A class behavior or its algorithm can be changed at run time;
behavioral
Template Method Pattern - ✔️✔️An abstract class exposes defined way(s)/template(s)
to execute its methods; behavioral
Singleton Pattern - ✔️✔️Access only one object which can be accessed directly
without the need to instantiate the object of the class; creational
, Factory Method Pattern - ✔️✔️Create objects without exposing the creation logic to the
caller and refer to newly created object using a common interface; creational
Decorator Pattern - ✔️✔️Allows a user to add new functionality to an existing object
without altering its structure; structural
Flyweight Pattern - ✔️✔️Reduce the number of objects created and to decrease
memory footprint and increase performance; structural
Proxy Pattern - ✔️✔️A class that represents functionality of another class; structural
Visitor Pattern - ✔️✔️Use a visitor class which changes the executing algorithm of an
element class; behavioral
Structure Principle - ✔️✔️1) organize the user interface purposefully
2) make it meaningful and useful based on clear, consistent models that are apparent
and recognizable to users
3) put related things together; separate unrelated things
4) differentiate dissimilar things; make similar things resemble one another
Simplicity Principle - ✔️✔️1) make simple, common tasks simple to do
2) communicate clearly and simply in user's own language
3) provide good shortcuts that are meaningfully related to longer procedures
Visibility Principle - ✔️✔️1) keep all needed options and materials for a given task
visible
2) do not distract user with extraneous and redundant information
3) do not confuse user with too many alternatives for performing same task
Feedback Principle - ✔️✔️1) inform actions or interpretations
2) inform changes of state or condition
3) inform errors or exceptions
4) keep mode of communication - relevant, clear, concise, and in language familiar to
user
Tolerance Principle - ✔️✔️1) reduce cost of mistakes and misuse by allowing "undo"
and "redo"
2) prevent errors by tolerating varied inputs and sequences and by interpreting
reasonable actions
Reuse Principle - ✔️✔️1) reuse internal and external components and behaviors;
maintaining consistency with purpose
2) reduce the need for users to rethink and remember