Software is a must-have.
The competition pressures the actors to reinvent themselves continuously. It’s not enough to be good at one point in time; successful actors must be able to adapt constantly in an evolving ecosystem with low predictability.
Organizations require both economies of scale and economies of speed to survive in our context. Software has become the only way to iterate and scale fast enough business processes, from customer experience to internal operations.
Such interdependency on software implies that business speed and adaptation capabilities now depend on the level of software mastery of organizations. It is not possible anymore to consider software as a nice-to-have priority.
Quality Engineering constrains the software lifecycle to Quality at Speed with the five domains of MAMOS: Methods, Architecture, Management, Organization, Skills. Find the full content in the ebook On Defining Quality Engineering: Thrive your business with Quality at Speed software.
This article shares how Architecture-including software-contributes to Quality and Speed.
Follow the QE Unit for more exclusive Quality Engineering from the community.
How Architecture contributes to Quality
Digital businesses require translating business ideas into concrete products that can fulfill the evolving needs of its users. One main challenge is to answer the multiple requirements and combine technologies to create valuable software components.
Architecture contributes to Quality by enabling this translation with urbanization, allowing separation of concerns, composition, and interoperability. The proper identification of business modules supports the elasticity afterward.
Separation of concerns
We can be anything, but not everything. Too many things concentrated in a single place lead to too much complexity we cannot handle. The same problem happens with software requiring to separate the concerns of different layers.
The principle of separation of concerns isolates specific complexity in abstraction layers. This division maximizes the fit to the purpose of technology solutions with a flexible decoupling. As a result, each layer can do best what it is supposed to.
The best example is urbanization. The horizontal layers of business processes, functions, applications, data, and infrastructure focus on each layer, where each can then be split into modules to answer specific business needs.
The symptoms of software architecture lacking separation of concerns vary: it becomes complex to perform even simple changes due to cascading, unknown impacts, and operations suffer from the inability to scale and recurring instabilities.
Platform
The digital ecosystem requires an increase in the value proposition proposed by each actor. At the same time this increases their focus, it reinforces the need for collaboration between the actors to answer the needs of their users.
Architecture makes the composition of services more important than the individual implementation by creating platforms ecosystems, connecting users and partners through technology. A platform adds services maximizing business opportunities.
Architecturing a platform is achieved with a proper identification of business services to expose to users and partners through technology and separation of concerns. And platforms can accelerate with open standards for interfaces and data formats,
Interoperability
A number of companies are still suffering from multi-year vendor lock-in and the lack of systems interoperability. They waste investments in maintenance while missing business opportunities taken by competitors iterating with Quality at Speed.
Interoperability is achieved with open and effective standards widely adopted within the ecosystem. The acceleration of business collaboration through software enables companies to capture the required economies of speed and economies of scale.
A concrete example is the large deployment of APIs built with REST/JSON, with Async API data format descriptors, now also used for event-driven formats. Platforms with speed and scale like Stripe are built upon such open standards.
Elasticity
It is hard to predict the usage and success of digital experiences. The number of users can vary depending on a number of factors interacting on social media worldwide. And companies must answer to peaks of demands to keep growing their user base.
Technologies working both on small and large volumes remove the limitations of upfront investment and big refactoring. Organizations are able to select mature and elastic technologies are able to scale up or down fast, meeting the demand.
One example of elasticity is to horizontally scale microservices on Cloud infrastructures without limitation on the data-store and with a pay-as-you-model. It is not possible to have such reactivity with on-premise servers requiring manual actions.
Security
The expansion of digital businesses collaborating together creates more flows of important information. The data being valuable business assets, they are sources of interest for more parties, including illegal ones. Security is not an option anymore.
Digital platforms meeting the security requirements ensure their business continuity even with highly interdependent systems, as well as their data integrity. Such organizations remain valuable in a context of cyber-resilience and customer privacy.
Similar to testing, security focuses on risk reduction and increase of confidence. Its coverage should be done progressively along the software value chain, from static code analysis to more dynamic techniques in the different environments.
Observability
More components collaborating in a distributed way increase the need to understand what is happening to first react, and then improve digital businesses. This challenge is the one of Observability, an ever complex task with more technology.
Systems ensuring the observability requirement provide organizations with a competitive advantage in understanding, testing and assessing the value of software increments. The shared understanding also favors team’s collaboration.
Observability have fundamental objects such as logs, traces and metrics, that when produced by multiple systems in a coherent way gives traceability of what happened. Event-driven architecture is also a powerful way to include the requirement by design.
How Architecture contributes to Speed
It is not enough to build valuable components. Digital businesses must rapidly assemble technology to deliver software increments before the competition. And it must succeed on a continuous basis from the short to the long-term, without fatigue.
The various practices of Architecture provide the necessary capabilities to accelerate at different time horizons. Let’s see how business speed can be ensured with software providing automation, composition, self-service, and experimentation.
Automation
A successful user experience provides what the users want in pull, even anticipating its needs in push. The streamline of customer facing internal operations can only be delivered with automation powered by software.
Imagine methodologies executed a 1000 times faster with perfect repeatability. That is the power of automation. Organizations powered by software are able to execute their activities with a low-cost of execution, acting faster than their competitors.
Let’s take the example of provisioning a Virtual Machine in the cloud: it takes 5 seconds when we were used to provision servers in 3 months. And we are now talking about provisioning in seconds with serverless or functions capabilities.
From an end-user perspective, data science leveraging algorithms and data processing to create personalized recommendation engines working 24/7 is another example of automation. A human can improve the algorithm, but he cannot perform it.
Modularity & Composition
Building software is easy at the start, there are only a few lines of code. Things get complex with a growing codebase. If software is not modular enough, a business becomes unable to improve its business on time, failing to meet the user’s demand.
Architecture isolates complexity in different modules that are made available through standard and open interfaces. These layers of abstraction enable to compose technologies fast, limiting cascading impacts or side-effects slowing down businesses.
For example, an architecture can separate the front-end and the back-end layers with decoupling layers of user-experience APIs in the middle. The added-value is that adding new channels is done fast with minimal effort, with minimal impacts.
The same modularity can be applied at a functional level. An e-commerce company that designed a unified payment interface has the flexibility to add other gateways to accelerate its international expansion. Others are limited to the connected vendor.
Self-service
A digital business must expose its services in 24/7 for its users and partners. This requirement constrains companies to both streamline their operations with automation and open their ecosystem. These two elements are fundamental to self-service.
At the same time users can access digital services anywhere and anytime, internal actors can collaborate faster and with autonomy. The acceleration of multiple tasks creates organizations able to deliver Quality at Speed software.
We have been used to self-service through social media and web platforms. The same functions are now available in banks, public institutions. In the context of IT, the cloud portals of AWS, Google or Amazon are equally examples of self-service portals.
Experimentation
Delivering a successful digital experience is the result of successive software increments, learning what works or not. The speed at which a company can find users before the competition depends on its rate of experimentation.
Companies leveraging technologies with minimal commitment and upfront investment can iterate in short cycles. Instead of passing months to finally learn that users wanted something else, they can achieve the same result in a day, truly accelerating.
Technology has been helping various industries through rapid prototyping and simulations. Mock-ups, progressive deployment, and feature-flags are all examples of technology accelerating the experimentation capability of an organization.
Architecture accelerates business with Quality at Speed software
Software is at the center of digital businesses requiring fast cycles of experimentation and implementation. Its mastery requires equilibrating the choices to meet the requirements of Quality and Speed, for today and tomorrow.
Choices taken in architecture are fundamental to keep iterating over-time as accelerating the rate of software delivery increases the amount of technical debt generated at each iteration. That’s where Quality Engineering helps.
Quality Engineering is the continuous force constraining the software lifecycle to Quality at Speed. Architecture choices are made to rapidly implement software with minimal effort, commitment and rework afterwards.
Find the full content in the ebook On Defining Quality Engineering: Thrive your business with Quality at Speed software.