Software development teams need to understand how they are going to build an application before they can start coding. That’s where architecture and design come into an application lifecycle management process.
It’s only by having well-defined processes around modeling, design patterns and frameworks that teams can build applications effectively and efficiently.
Analyzing those systems and processes is a key part of our application lifecycle management assessment here at Kingsmen Software.
In this article, we’ll cover:
- Why we assess architecture and design.
- What good architecture and design processes should look like.
- The specific disciplines we analyze as part of our technical due diligence report.
Why Do Organizations Need Mature Architecture and Design?
Software architecture defines the underlying elements that are required in an application. Software design focuses on how that software will eventually be built.
Just as home builders need thoughtful blueprints and an architect’s signoff, developers need these inputs before they can ever start writing lines of code.
While users won’t necessarily recognize poor software architecture, developers certainly will, says software developer Martin Fowler. That’s because poor architecture contributes to issues that impede a developer’s ability to understand the software. He calls these elements “cruft.”
“Software that contains a lot of cruft is much harder to modify, leading to features that arrive more slowly and with more defects,” Fowler writes. As a result, poorly architected software is almost always slow and more expensive. Why? Because new software features can get delivered much more quickly when there is less cruft in the way.
Poor architecture can also limit the scalability of software, Kerry Halladay writes for Built In. Halladay likens this to designing a skyscraper. That building’s architects need to think about everything the occupants will need — e.g. heating, air conditioning, parking, bathrooms, meeting rooms, as well as provision for utilities and the internet. It’s harder to add these features once the skyscraper has been built.
The same applies to software. Architects need to consider things like reliability, security and speed before development starts. Not doing so will severely hamstring the end product.
5 Ways to Assess Architecture and Design
Our application lifecycle management assessment sees us analyze the processes, people and tools an organization uses to manage architecture and design in the following areas.
Modeling Methodology and Tooling
Developers need strong architectural modeling principles in order to build great software.
“These principles describe the common set of underlying beliefs about system design,” explains technical architect Ben Morris. “They can help to create a common sense of purpose and lay down some basic guidelines for decision making.”
As a result, they make it easier for teams to make decisions at every stage of the development process.
Tools are a core part of the modeling process, Kerry Doyle at TechTarget writes. “Through graphical code rendering, visualization gives developers a common blueprint to build from: a clearly defined breakdown of modules and documentation of software functionality.
“Too often, code and documentation are managed through multiple, varied tooling sets. Without a single tool for both code and documentation management, software teams risk wasting time and resources trying to coordinate aspects of the project.”
Design Pattern Principles
Design patterns provide structure to the design and development process.
Software development coach Khalil Stemmler outlines three categories of design patterns:
- Creational patterns, which govern how objects are created.
- Structural patterns, which “simplify how we define relationships between components.”
- Behavioral patterns, which facilitate how objects communicate.
We expect teams to have design patterns in place, as well as principles and best practices for deploying those patterns. Not only that, but developers need to actually know what the patterns are and where to find them, says Bill Clerici, CEO and partner at Kingsmen Software. Otherwise, they’re no good to anyone.
Architecture Planning and Routines
Development teams need a set of agreed-upon plans and routines to make sure every element of their software architecture gets looked at regularly.
This is especially important at an enterprise level when dealing with large-scale architectural initiatives, software architecture consultant Mark Richards tells TechTarget.
Frameworks and Solution Structure Management
A good development team won’t create new architectural systems from scratch. Instead, they’ll build frameworks and other structures that they can use to shorten the development cycle.
A well-established architecture can be used again and again, says Ahad Khan, a partner at Cognizant. In doing so, companies save money and time while improving the quality of the software — after all, that code has already been tested.
Emergent Technology Discovery and Integration
The final thing we assess is the extent to which development teams analyze and adopt emergent topics. It’s important to understand what new developments are happening in your industry and whether they can benefit your processes.
“Architecting modern software applications is a fundamentally explorative activity,” write Pierre Pureur, Kurt Bittner and Thomas Betts, three authors who all have deep backgrounds in software architecture and enterprise systems design.
Development teams, they write, need to employ continuous exploration to discover new ways to solve architectural problems and satisfy requirements rather than relying on past experiences.
Assess Architecture & Design With Kingsmen Software
Once we have completed our assessment using the criteria above, we score a company’s use of processes, people and tools on a range from good to bad. Our findings are then translated into a heatmap so investors can see immediately which areas need improvement.
Find out more about how we assess a software company’s architecture and design practices, as well as our entire technical due diligence process, by speaking to one of our experts.
Images by: ThisisEngineering RAEng