The concepts and practice of system architecture are relevant to the design of both simple products, like a skateboard, and highly complex systems, like the Space Shuttle. System architects define the architecture of a computerized system in order to fulfill enterprise needs following high level corporate strategy. Such definitions include: a breakdown of the system into components, the component interactions and interfaces (including with the environment, especially the user), and the technologies and resources to be used in the design.
The System Architect’s work must avoid development issues and readily permit unexpected extensions/modifications in future stages. They are responsible for designing the relationship between systems, with the objective of letting them prepared for improvements, building new functionalities, and fixing bugs according to the company’s expectations. The system architect must be reasonably familiar with the users’ experience, always offering alternative solutions following the architectural design previously established and accorded with the IT strategy of the company. This guy must interact to stakeholders, understanding various levels of requirements, points of view and needs, priorities, risks and impacts in a global environment. Regarding large systems, the architects work together to integrate their subsystems or aspects, and might respond to a Chief Architect responsible for the entire system.
Partitioning large systems into (successive layers of) subsystems and components, each one can be handled by a single engineer, system analyst or subordinate architect.
He is responsible for generating the following artifacts:
- The highest level of system requirements, based on the user’s needs and other constraints.
- A set of acceptance test requirements, together with the designers, test engineers, developers and the user.
- Products like sketches, models, an early user guide, and prototypes to maintain the stakeholders and key users up to date on the system evolution.
- In some cases (and in some situations it makes sense), the System Architect has the responsibility of generating the business and technical specification, including the use cases, flow diagrams, activity and sequence, BPMN diagram and specification, and other artifacts to let the system architecture as clean as possible.
Ensuring that everything produced by System Architecture is up to date according to the system/process/physical reality and never allowing it to become obsolete.
An Architect must have access to all of users/sponsors and not following procedures to contact them. An effective Systems Architect must have access to specialists in critical specialties as needed. For example: business process people, Hardware engineer, Software Designer, Key User, Product Owner, Developers. Ensuring that a maximally robust, reliable and scalable design is developed.
Ideally, each component/subsystem is a sufficiently stand-alone object that can be tested as a complete component, separate from the whole, using only a simple unit test to supply simulated inputs and record outputs. That is, it is not necessary to know how an air traffic control system works in order to design and build a data management subsystem for it. It is only necessary to know the constraints under which the subsystem will be expected to operate.
A good architect ensures that the system, however complex, is built upon relatively simple and “clean” concepts for each sub-system or layer and is easily understandable by everyone, especially the user, without special training. (Layering architecture is the key of a light comprehension).
In other sources of research I found this phrase or definition of system architecture that really makes sense: The mission of the system architect is to analyse and understand with users and stakeholders the needs of a new probable system development.
Summarizing: The System Architect is the professional with enough technical, business company process and methodology skills that can analyse the needs of lots of parts of the company and define all the artifacts (specs, diagrams, prototypes) to make a system development, following architectures norms and rules that benefit the company objectives as a whole, instead of just one part of them (one key user or one department for example). If there is one guy taking care with the Strategic Technology of the company objectives in the point of view of IT, this is the System Architect.
System Architect Suggested Skills:
- Knowledge in Programming language Technology like Java, C, C++, .Net or other robust programming language.
- Knowledge in follow Development Methodologies: Traditional (RUP), ISO/IEC/IEEE 15288:2015 and new edge methodologies like Agile methodologies (XP and Scrum), DevOps.
- Knowledge in Enterprise Architecture Frameworks: Cobit, ITIL, BPM, SOA, TOGAF, Archimate, (Corporate Governance of Information Technology).
- Must have Project Management concepts: PMP, Prince2.
- Strong Knowledge about Business process for company: Must have high knowledge of the business process of the company, their objectives and in what direction the market is going today and in the next years.
- Strong Spirit of continuous improvement and realistic innovation in his blood for all that him is producing.
I hope this article make your choices better like an employer or like an architect.