This Reference Architecture is No Good --> What is an RA?

Posted by Tracy Bannon on Sunday, July 30, 2023

๐—ง๐—ต๐—ถ๐˜€ ๐—ฟ๐—ฒ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐—ฐ๐—ฒ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ ๐—ถ๐˜€ ๐—ป๐—ผ ๐—ด๐—ผ๐—ผ๐—ฑ! Itโ€™s missing the list of technology to use and how to knit them together. I heard this recently and became very aware that I needed to do a bit more mentoring on software architecture and in particular, reference architectures. Hereโ€™s the 411: A software reference architecture is a common abstraction or standardization of design that can be reused. Abstraction is the key and it serves as a guide for designing and building software systems in a particular domain.

๐—” ๐—ฟ๐—ฒ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐—ฐ๐—ฒ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ ๐—ถ๐˜€ ๐—ป๐—ผ๐˜ ๐—ฎ ๐—ฟ๐—ฒ๐—ฐ๐—ถ๐—ฝ๐—ฒ ๐—ฐ๐—ฎ๐—ฟ๐—ฑ 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