𝗧𝗵𝗶𝘀 𝗿𝗲𝗳𝗲𝗿𝗲𝗻𝗰𝗲 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗶𝘀 𝗻𝗼 𝗴𝗼𝗼𝗱! It’s missing the list of technology to use and how to knit them together.
𝗔 𝗿𝗲𝗳𝗲𝗿𝗲𝗻𝗰𝗲 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗶𝘀 𝗻𝗼𝘁 𝗮 𝗿𝗲𝗰𝗶𝗽𝗲 𝗰𝗮𝗿𝗱 or step by step building instructions.
A reference architecture (RA) offers a shared language, provides a base of proven leading practices, and acts as a tool for sharing knowledge and lessons learned across an organization or domain.
But where are my directions for building? Well, that’s up to the team!
𝗪𝗵𝘆 𝗯𝗼𝘁𝗵𝗲𝗿 𝘄𝗶𝘁𝗵 𝗮𝗻 𝗥𝗔?
𝗧𝗼 𝗵𝗲𝗹𝗽 𝗦𝘁𝗮𝗻𝗱𝗮𝗿𝗱𝗶𝘇𝗮𝘁𝗶𝗼𝗻! Having a common language and shared understanding minimizes misunderstandings and reduces the risk of misalignment. 𝗧𝗼 𝗽𝗿𝗼𝘃𝗶𝗱𝗲 𝗚𝘂𝗶𝗱𝗮𝗻𝗰𝗲! Offering proven design solutions to common tech challenges means avoiding reinventing the wheel! 𝗣𝗼𝗹𝗶𝗰𝘆, 𝗽𝗼𝗹𝗶𝗰𝘆, 𝗽𝗼𝗹𝗶𝗰𝘆! RAs can enforce and codify enterprise policy OR can be used to continuously improve outdated or hardware-centric policies applied to software. 𝗧𝗼 𝗔𝗰𝗰𝗲𝗹𝗲𝗿𝗮𝘁𝗲 𝗗𝗲𝘀𝗶𝗴𝗻 𝗗𝗲𝗰𝗶𝘀𝗶𝗼𝗻𝘀! If someone has solved a complex problem and that’s codified in an RA, teams have an efficient jumpstart. 𝗧𝗼 𝗱𝗿𝗶𝘃𝗲 𝗤𝘂𝗮𝗹𝗶𝘁𝘆 𝗔𝘀𝘀𝘂𝗿𝗮𝗻𝗰𝗲!! RAs should provide leading practices for the particular domain including calling out quality attributes like performance and security. Even some suggested architectural tactics may be included. Why not promote high quality from design forward?
An RA must define “what” should be built in the sense that it describes the structure of the software and its key elements. The RA must justify “why” it should be built this way. If an RA is missing the rationale behind the decisions, benefits, and alignment to quality attributes, it might not be an RA!
There are many industry formats for RAs… The ol’ TOGAF and its kissing cousin the DoDAF, Zachman Framework, or ISO/IEC/IEEE 42010. You can also roll-your-own as long as you are clear on intent and contents. Remember to include the relevant architectural patterns and call out any known constraints.
RAs need to be living assets; architectural models are a game changer. Imagine if your solution inherits from an RA and you extend and enhance with the details of your specific implementation? YUMMY!
#ReferenceArchitecture #ArchitecturalViews #SoftwareDesign #SomethingToNoodleOn #SoftwareArchitecture
Pix by Ayo Ogunseinde on Unsplash