Over the years, I have acummulated several acronyms, which I believe capture essence of various disciplines done right. Here are some picks from my list…
SOLID
One cannot ignore SOLID principles, if you are serious about object oriented design. While this might seem obsolete, it is now relevant more than ever. One word of advice, take SOLID as a whole, do not choose one principle over another. They are not meant to be applied in isolation.
So what SOLID stands for?
- Single Responsibility Principle
- Open / Closed Principle (Open for Extension / Closed for changing implementation)
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion
GRASP
Is a collection of patterns used in OOD. While I find rather artifical, I am still using it to remind myself of the different aspects of OOD I should take into account.
GRASP stands for General Responsibility Assignment Software Patterns, which is somewhat lame. What it really stands for are the following patterns or notions:
- Controller
- Creator
- Indirection
- Information Expert
- High Cohesion
- Low Coupling
- Polymorphism
- Protected Variations
- Pure Fabrication
One day, I will write about what those really mean to me.
STRIDE
Is a recent addition, to my collection, but I quite like it. It is the threat model invented at Microsoft as part of their Secure Development Lifecycle framework.
STRIDE stands for different threats developers should take into account when capturing potential threats:
- Spoofing Identity
- Tampering with Data
- Repudiation
- Information Disclosure
- Denial of Service
- Elevation of Privileges
DIE
Simply put: Duplication Is Evil.