How do you define software architecture?

Every software system has an architecture, but not every software architecture is defined. While there is structure to most software systems, sometimes that structure has been explicitly thought about and sometimes it isn't. This is what can make a difference to whether a system works and how it's received by the stakeholders. We have a lot of content on the site about defining software architectures. Here is some of it.



Where do you start?

Where do you start? One of the hardest things about software development is being asked to come up with a design when all you're given is a set of requirements and a blank sheet of paper. Many software teams will dive straight into the code and while this can initially be very productive, the slippery slope of constant refactoring is awaiting those teams that haven't quite found a design that works. Often, a little forethought is all that's needed to get the development process heading in the right direction. So where do you start? Watch the video...

Start with the big picture

All views of the architecture One of the hardest things about the software architecture role is being asked to come up with a software architecture when all you're given is a set of requirements and a blank piece of paper. It's certainly one of the most fun parts of the role, but it can be a daunting prospect trying to figure out where to start and what to do. Many software teams dive straight into the code and this can initially be very productive but many teams soon start to venture down the slippery slope of constant refactoring while they try to find a design that works. Often, a little forethought is all that's needed to get the architecture definition process heading in the right direction. Read more...

Software architecture is a platform for conversation

Architectures don't live in isolation If you're writing software as a part of your day-to-day job, then it's likely that your software isn't going to live in isolation. We tend to feel safe in our little project teams, particularly when everybody knows each other and team spirits are high. We've even built up development processes around helping us communicate better, prioritise better and ultimately deliver better software. However, most software projects are still developed in isolation by teams that are locked away from their users and their operational environments. Read more...

You don't need a UML tool

Whiteboard vs UML tool? When tasked with the job of coming up with an architecture and design for a new software system, one of the first questions people ask is about which tool they should use. Such discussions usually focus around the Unified Modeling Language (UML) and whether their organisation has any licenses for some of the more well-known UML tools. Read more...



Defining architecture

Dealing with non-functional requirements

Operational aspects

For more content about defining software architectures, please take a look at our How do you define software architecture? category. See the How do you share software architecture? and How do you deliver software architecture? categories for content related to the outputs of architecture definition.