Business Information and Its Adversaries
As a Modern Developer Architect you need to understand the Elements that consume your Business Information and the Software Forces of nature that are continuously assaulting your designs.
There are Five Primary Elements:
Each of these Elements has Software Forces that affect the successful completion of the Element’s assigned responsibilities.
The five primary Software Adversaries need to be assessed for their impact on the Elements ability to perform to the designated Service Level Agreements.
There are Five Primary Adversaries:
The Software forces that affect the ability for the Application Elements to perform should be the focus of your designs.
Each Element
… of Each Application
……will be Impacted by Each of the Forces
The Client’s only real concern is how the Business Applications are “Perceived to Perform”
The perception of performance of the Architecture Solution is controlled by the proper management of the Software Forces of Nature that affects the Elements.
The Software Elements
The Business Solution’s proper acquisition and lifetime management of Business Information is the primary directive of most Architecture Designs.
The Information Elements are continuously under assault by the Forces of Software Nature.
Information is acquired from two primary sources:
-
Application Events – User Interaction and Client-side Data Aggregation
-
Information Repositories – Web Services, Databases, XML and Text Files
This information, in the form of data, is managed by the Software Elements so they can perform the responsibilities that the business requires.
Information Software Elements:
-
Presentation – Read Only and Interactive Read / Write Data
-
Communications – Synchronous and Asynchronous Data Exchange
-
Failure Management – Pessimistic and Optimistic Recovery Schemas
-
Processing – Silicon Time versus Human Time Designs
-
Protection – The Security and Safety of the Information Acquired
During the requirements gathering stage of the Software Development Lifecycle each of the Software Elements need to be assessed for their ability to completely deliver the Information as expected by the Business User Stories.
Architectural Designs Must Consider
… Not only the Favorable Operational Paths
…… But All the Hostile Paths As Well
The Software Elements Adversaries
Nature has forces that affect our everyday life in many ways. Some of the forces we are aware of, but most of the forces we are not. Human evolution has balanced some of those forces for us.
Natural forces like Gravity and Electromagnetism are considered “Non-contact” forces as they affect natural objects without directly being in contact with them.
Gravity we are aware of but Electromagnetism we are generally not aware of its effect on our daily life.
Software Designs has its own “Non-contact” forces that continuously affect the ability for our solutions to operate efficiently.
Some of the forces we can quantify easily and some are more difficult to measure.
These forces affect the performance and reliability of our solutions throughout the life cycle of the deployed designs.
There is No Such Thing as a Perfect Design
– Small Things Considered: Why There Is No Perfect Design
by Henry Petroski
All Designs, No Matter how Small or Institutionalized,
are Always “Works in Progress”
The adversaries of our designs must be monitored, measured and improved upon throughout the entire Software Development Life Cycle.
Information Software Adversary Forces:
-
Capacity – The Amount of Information that can be Processed in a Given Environment
-
Latency – The Total Amount of Time it takes to Complete Tasks
-
Affinity – The Effect on “Perceived Performance” based on Information Restrictions in its current Scope and Location. This is the combination of Capacity and Latency. This is your Architecture’s “Gravity”
-
Intermittent Failures – The Temporary Forces that Act on your Designs from Architectural Dependencies Failures that are Out of Your Control that are generally corrected without any interaction on your Design’s part
-
Human Assault – These are the Forces that Act on your Solutions that are Human Being related. These Forces can be Intentional, such as Hackers, or Unintentional, such as ignorant or untrained Users: Human Error
All Software Architectures are Just the Opinion of the Software Architect that Creates the Designs
The Modern Developer needs to take ownership and pride in their work but be open to new ideas and changes.
Software Solutions are Always “Works in Progress”
Don’t get “Married” to your designs as the Forces of Software Architecture will alter its requirements for effective operation over its lifetime.
Wisdom Pearl #122:
Open Your Mind to Possibilities
There are Generally a Hundred Ways to Accomplish some Task
… But Only a Handful of Good Ways
…… Have an Open Mind to the Other Possibilities
This Blog is intended to expose The Modern Developer to the Elements and Forces of Software Architecture.
It is not intended to be an exhausted dissertation on the subject.
An in-depth “Deep Dive” into the Elements and Forces of Software Architecture is available at Pluralsight training Website.
The “The Elements of Distributed Architecture“
… presented by Clemens Vasters
…… will Detail the Forces and Adversaries
The following two tabs change content below.
I am a Principal Architect at Liquid Hub in the Philadelphia area specializing in Agile Practices as a Certified Scrum Master (CSM). I use Test Driven Development (TDD) and Acceptance Test Driven Development (ATDD) with Behavior Driven Development (BDD) as my bridge to Agile User Stories Acceptance Criteria in a Domain Driven Design (DDD) implementing true RESTful services
Latest posts by Brad Huett (see all)
- DevOps: A Bridge to Your DevOps Culture - March 25, 2016
- Embracing Test Driven Development (TDD) - March 25, 2016
- DevOps: Delivering Agile Projects - March 25, 2016