Ask HN: Are there any openly available software architecture documents?
I'm about to leave my job for another and i'm tasked with documenting the existing architecture and flow of the app.
I'd also have to document why certain decisions were taken. I'm looking for any openly available similar documents for guidance mostly around how to structure the document.
52 comments
[ 3.4 ms ] story [ 122 ms ] threadhttps://aws.amazon.com/whitepapers/?whitepapers-main.sort-by...
[2] and [3] list a few example documents for Software Architectures, you can google further and find some more.
I think reading through a few sample documents and based on the expectations at your current job, you can derive the necessary doc.
[1] https://www.amazon.com/Documenting-Software-Architectures-Be...
[2] https://projects.cecs.pdx.edu/attachments/download/3146/Soft...
[3] https://www.voa.va.gov/DocumentView.aspx?DocumentID=188
https://c4model.com/
https://arc42.org/documentation/
PRINCE 2 documents also come with a 'decision log', if you want something in a formal template.
[1] https://github.com/milo-minderbinder/AWS-PlantUML [2] https://real-world-plantuml.com/
I feel like resorting to simple hand drawn diagrams, is in a way declaring failure on being able to describe complex software requirements and structure/ behavior in a systematic graphical manner.
I'm doing this now for a couple of things I've inherited because my predecessors either never documented it or it's been lost to time. High-level flow, tricky and/or problematic bits with operational & recovery info, then the mundane as I have time. That means the mundane or some of the less-tricky tricky bits will be "vague" for a while.
Then work on refining, editing, deleting, modifying.
Separate the creation from the editing/communication.
Stuff that can be formalized in a systematic manner is usually stuff you can figure out on your own in a text editor or IDE.
It is an opportunity to learn and apply it forward to your new job.
It contains architecture overviews of many open source projects.
For documenting decisions on architecture this should be done as you go really but better late than never :). Using adr ( architecture decision records ) text / md files would be my approach. They will typically be kept alongside the code and source controlled
https://github.com/VCTLabs/MIL-STD-498/raw/master/MIL-STD-49...
The US Military came up with their own standard for systems and software development (MIL-STD-498), which as evolved into IEEE and ISO standards. The nice thing about the US Military's standards is that they came with Data Item Descriptions (DIDs) that specify exactly what goes in each document.
For decisions a table with some explainatory comments why you have decided to use this one thing and which alternatives you have considered and why those did not make it, helps. You can look up ADRs. (Decision Records)
Meta information could be: Status, stakeholders, decision-makers, and rollout description. It also often has links to meeting protocols and tickets.
As someone who only really gets exposure to web tech, it was fascinating how other types of software is architected, too.
Perhaps Effective C++ comes in second, but that's just b/c C++ is a nightmare.
https://github.com/joelparkerhenderson/architecture_decision...
There are multiple variants. Simple or detailed.
You don't put every little decision in of course, but most projects have at least 1-2 areas where even the people involved with the decision have a hard time recollecting all the context for the decision.
The downside, at least for OP, is that they're usually something you capture at the time the decision is made - not when you're leaving a project.
But for general structure, using your end-user's user experience path (from start to end) as a guide and avoiding buzzwords as much as you can usually help. Think of Stripe's documentation, you want something as easily digestible as that.
- Software Design Patterns: https://en.wikipedia.org/wiki/Software_design_pattern
- Azure Application Architecture Guide: https://docs.microsoft.com/en-us/azure/architecture/guide/
- Azure Cloud Design Patterns: https://docs.microsoft.com/en-us/azure/architecture/patterns...
- Azure Architecture Framework: https://docs.microsoft.com/en-us/azure/architecture/framewor...
- Azure Cloud Adoption Framework: https://docs.microsoft.com/en-us/azure/cloud-adoption-framew...
- Cloud Computing Patterns: https://www.cloudcomputingpatterns.org/
- Microservice Architecture Patterns: https://microservices.io/patterns/index.html
- Amazon's Builders Library: https://aws.amazon.com/builders-library/
Also, for a 10,000 foot overview of popular open-source tools, see https://aosabook.org
import: Diagram
ok: Community
see: https://www.drupal.org/project/project_module?f%5B2%5D=im_vi...