Is software architecture really unique?

Is software architecture really unique?

Introduction

The most astonishing revelation for me after visiting the aviation gallery in the Science Museum of London last month, was the number of commonalities between designing aircrafts and creating software. Both have evolved at high speed in the last decades thanks to innovation and the implementation of reusable patterns. These surprising parallels also exist in other industries. Let’s explore these intersections and unveil how one industry can inspire breakthroughs in another.

Software delivery is like a well-orchestrated symphony

The overlap between an intricate software project management and the production lines of a car factory also unveil surprising commonalities. To assemble a car, various stations along an assembly line must work harmoniously together, and each station is responsible for executing a specific task.?

In 1953 a system called Kanban emerged in the Toyota car factories introduced to visualise the production lines, when a car component visits a station of the assembly line, the system displays the station the car component is at.?

The Kanban system used in the car factories was adopted to manage the stages of the software development life-cycle. At the start of the day members of the delivery team will pick a task (the car component) from the active list, the task transitions to the different stages (assembly line station) until it finishes the life-cycle, the group of completed tasks makes the working software.

Building designers and software architects challenges have something in common

When a building architect makes the plans for a new building, she designs the plan based on the sponsor requirements, for instance the number of storeys and lifts. The architect also designs the connections to the electric grid, gas, and sewage network. To fulfil the requirements of the sponsor, the architect produces the design and planning of the building structure to ensure the space is functional, efficient, and sustainable.

In a similar fashion, a software architect designs systems that can process data flowing through the system. Data is consumed from an input system, processed, and then dispatched to another system (people getting in and out), this process requires connections with a variety of external systems (electric grid, gas swage network).?

Just like in building architecture, software development should also respond to requirements set by the project sponsor. These needs come in two distinct flavours: functional and non-functional. The first ensures that the system meets the expected features, for example a software should process payment data received from a mobile phone application. The second defines the qualities and attributes of the system, such as storing data securely.

Build software as fast as a bullet train

Software architects often turn to a powerful ally to expedite their work and solve complex challenges: design patterns. These remarkable gems offer well-documented and reusable solutions that effortlessly guide architects and developers in overcoming obstacles, so rather than wasting unnecessary effort reinventing the algorithm, patterns provide the solution for challenges solved by other practitioners.?

Imagine a software architect designing an airline website that has to support hundreds of customers querying at regular intervals for the best flights from London to Tokyo on a particular date, rather than calculating and processing every request, the architect can refer to the caching design patterns to reduce processing time and return the data almost instantly.

The aerospace industry also benefits from reusing designs. The industry is flying to halve the CO2 emissions by 2050. Aircraft manufacturers are using design patterns based on light materials and optimisations of the aircraft structure to reduce the mass of the aircraft and therefore the energy consumption during lift and thrust. Boeing slashed 20% of weight of its jet airliner 787, resulting in fuel efficiency improvements.?

What makes software unique?

We have just explored how software delivery techniques, patterns and practices permeate through other technical disciplines. But what sets software apart from other sectors in an exciting way? One of the most captivating aspects of software lies in its remarkable ease to reshape design and code to respond to dynamic business demands. Imagine this: an airline website running in the cloud can in a matter of milliseconds scale up to cope with spikes of customer requests before the holiday season. This adaptability proves more challenging to attain in other sectors that handle physical materials. After all, changing the design of an aircraft to accommodate more passengers presents a myriad of constraints.

But what is the definition of exceptional software? Ever since the advent of software architecture in the 1980s, practitioners disagree on a precise definition. Yet, they agree on the features software architects must consider when designing software: adaptability, availability, reliability, scalability, and security. These secret ingredients have helped the technology industry navigate ever-shifting tides of technological progress and business needs.

Conclusion

The visit to the museum proved to be an eye-opening experience and sparked my curiosity to delve deeper into the shared characteristics with other industries. Exploring further these intersections and embracing the lessons learned from different industries, software architects and technology leaders can ignite breakthroughs and inspirations, leading to new frontiers of innovation and progress.

#softwaredevelopment #softwarearchitecture

Andrew Mishchanchuk

Head of Delivery / Project Manager at ElifTech

1 年

Interesting! The comparison between aircraft design and software creation highlights the significant role of innovation and the incorporation of reusable patterns in propelling advancements in both industries. This principle extends beyond aviation and finds application across various sectors, exemplifying the potential for mutual inspiration and growth between different fields.

要查看或添加评论,请登录

Alvaro Acevedo的更多文章

  • Five reasons why large IT programs fail

    Five reasons why large IT programs fail

    Introduction Only 16.2% of IT projects are delivered successfully and on time, reports The Standish Group, a research…

    5 条评论
  • API Strategy and Implementation - Dos & Don'ts

    API Strategy and Implementation - Dos & Don'ts

    APIs have become the tissue of digital transformation. Many organizations from sectors as diverse as financial services…

    9 条评论

社区洞察

其他会员也浏览了