Jump to content

Systems architect: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Ahkin88 (talk | contribs)
m Moved to discussion.
Adding local short description: "Role title in technology fields", overriding Wikidata description "profession in information and communications technology"
 
(44 intermediate revisions by 32 users not shown)
Line 1: Line 1:
{{Short description|Role title in technology fields}}
<noinclude>{{User:RMCD bot/subject notice|1=Systems designer|2=Talk:Software architect#Requested move 9 February 2019 }}
</noinclude>{{Use dmy dates|date=September 2015}}
{{Use dmy dates|date=September 2015}}
<!---None of my content is from any published source! user:normxxx--->
<!---None of my content is from any published source! user:normxxx--->
{{Citations missing|date=December 2006}}
{{Citations missing|date=December 2006}}
{{Infobox occupation
{{More footnotes needed|date=March 2024}}{{Infobox occupation
| name= Systems Architect
| name= Systems architect
| image= [[Image:James Webb Primary Mirror.jpg|250px]]
| image= [[Image:James Webb Primary Mirror.jpg|250px]]
| caption= Systems Architects divide large and complex systems into manageable subsystems that can be handled by individual engineers.
| caption= Systems architects divide large and complex systems into manageable subsystems that can be handled by individual engineers.
| official_names= Systems Architect
| official_names= Systems architect
<!------------Details------------------->
<!------------Details------------------->
| type= [[Profession]]
| type= [[Profession]]
| activity_sector= [[Systems Engineering]]<br />[[Systems]]<br/>Design<br/>Engineering
| activity_sector= [[Systems engineering]]<br />[[Systems]]<br/>Design<br/>Engineering
| competencies= user [[domain knowledge]], scientific knowledge, engineering, planning and management skills
| competencies= user [[domain knowledge]], scientific knowledge, engineering, planning and management skills
| formation= see [[Systems Engineer#Professional requirements|professional requirements]]
| formation= See [[Systems engineering#Education|education]]
| employment_field=
| employment_field=
| related_occupation=
| related_occupation=
| average_salary= see [[Engineer#Earnings|earnings]]
| field_of_study= Systems Engineering
}}
}}


The '''systems designer''' is a professional figure in [[information and communications technology]]. Systems designers define the design of a computerized system (i.e., a system composed of software and hardware) in order to fulfill certain [[requirements]]. 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 '''systems architect''' is an [[information and communications technology]] professional. Systems architects define the [[Systems architecture|architecture]] of a computerized system (i.e., a system composed of software and hardware) in order to fulfill certain [[requirements]]. 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 its design and implementation.


The Systems designer's work must avoid [[implementation]] issues and readily permit unanticipated extensions/modifications in future stages. Because of the extensive experience required for this, the Systems designer is typically a very senior technician with substantial, but general, knowledge of hardware, software, and similar systems. But above all, the systems designer must be reasonably familiar with the users' domain of experience (that is, the designer of an air traffic system needs to be more than superficially familiar with all of the tasks of an air traffic system, including those of all levels of users).
The systems architect's work should seek to avoid [[implementation]] issues and readily permit unanticipated extensions/modifications in future stages. Because of the extensive experience required for this, the systems architect is typically a very senior technologist with substantial, but general, knowledge of hardware, software, and similar (user) systems. Above all, the systems architect must be reasonably knowledgeable of the users' domain of experience. For example, the architect of an air traffic system needs to be more than superficially familiar with all of the tasks of an air traffic system, including those of all levels of users.

The title of ''systems architect'' connotes higher-level design responsibilities than a [[systems engineer]], [[software engineer]] or [[programmer]], though day-to-day activities may overlap.


== Overview ==
== Overview ==


Systems designers interface with multiple [[stakeholder (corporate)|stakeholder]]s in an organization in order to understand the various levels of requirements, the domain, the viable technologies, and anticipated development. Their work includes determining multiple design alternatives, assessing such alternatives based on all identified constraints (such as cost, schedule, space, power, safety, usability, reliability, maintainability, availability, and so on), and selecting the most suitable options for further design. The output of such work sets the core properties of the system, and those that are hardest to change later.
Systems architects interface with multiple [[stakeholder (corporate)|stakeholder]]s in an organization in order to understand the various levels of requirements, the domain, the viable technologies, and anticipated development process. Their work includes determining multiple design and implementation alternatives, assessing such alternatives based on all identified constraints (such as cost, schedule, space, power, safety, usability, reliability, maintainability, availability, and other [[List of system quality attributes|"ilities"]]), and selecting the most suitable options for further design. The output of such work sets the core properties of the system and those that are hardest to change later.


In small systems the design is typically defined directly by developers. In larger systems, a Systems designer may be appointed to outline the overall system and interface with the users and stakeholders. Very large, highly complex systems may include multiple designers, in which case the designers work together to integrate their subsystems or aspects, and may respond to a Chief designer responsible for the entire system.
In small systems the architecture is typically defined directly by the developers. However, in larger systems, a systems architect should be appointed to outline the overall system, and to interface between the users, sponsors, and other stakeholders on one side and the engineers on the other. Very large, highly complex systems may include multiple architects, in which case the architects work together to integrate their subsystems or aspects, and respond to a chief architect responsible for the entire system. In general, the role of the architect is to act as a mediator between the users and the engineers, reconciling the users' needs and requirements with what the engineers have determined to be doable within the given (engineering) constraints.


In [[systems design]], the designers and engineers are responsible for:
In [[systems design]], the architects (and engineers) are responsible for:
* Interfacing with the [[User (computing)|user]](s) and [[sponsor (commercial)|sponsor]](s) and all other [[Stakeholder (corporate)|stakeholders]] in order to determine their (evolving) needs.
* Interfacing with the [[User (computing)|user]](s) and [[sponsor (commercial)|sponsor]](s) and all other [[Stakeholder (corporate)|stakeholders]] in order to determine their (evolving) needs.
* Generating the highest level of system requirements, based on the user's needs and other constraints.
* Generating the highest level of system requirements''',''' based on the users' needs and other constraints.
* Ensuring that this set of high level requirements is [[consistent]], complete, [[wikt:correct|correct]], and [[operational definition|operationally defined]].
* Ensuring that this set of high level requirements is [[consistent]], complete, [[wikt:correct|correct]], and [[operational definition|operationally defined]].
* Performing [[cost–benefit analysis|cost–benefit analyses]] to determine whether requirements are best met by manual, software, or [[computer hardware|hardware]] functions; making maximum use of [[commercial off-the-shelf]] or already developed [[Manufacturing|components]].
* Performing [[cost–benefit analysis|cost–benefit analyses]] to determine whether requirements are best met by manual, software, or [[computer hardware|hardware]] functions; making maximum use of [[commercial off-the-shelf]] or already developed [[Manufacturing|components]].
* Developing partitioning [[algorithms]] (and other [[process (computing)|processes]]) to [[File allocation table|allocate]] all present and foreseeable requirements into discrete partitions such that a minimum of [[information transfer|communications]] is needed among partitions, and between the user and the system.
* Developing partitioning [[algorithms]] (and other [[process (computing)|processes]]) to [[File allocation table|allocate]] all present and foreseeable requirements into discrete partitions such that a minimum of [[information transfer|communications]] is needed among partitions, and between the users and the system.
* Partitioning large systems into (successive layers of) [[subsystem]]s and components each of which can be handled by a single engineer or team of engineers or subordinate designer.
* Partitioning large systems into (successive layers of) [[subsystem]]s and components each of which can be handled by a single engineer or team of engineers or subordinate architect.
* Interfacing with the design and implementation engineers and designers, so that any problems arising during design or implementation can be resolved in accordance with the fundamental design concepts, and user needs and constraints.
* Interfacing with the design and implementation engineers and architects, so that any problems arising during design or implementation can be resolved in accordance with the fundamental design concepts, and users' needs and constraints.
* Ensuring that a maximally [[Robustness (computer science)|robust]] design is developed.
* Ensuring that a maximally [[Robustness (computer science)|robust]] and [[Extensibility|extensible]] design is developed.
* Generating a set of [[acceptance test]] requirements, together with the designers, [[test engineers]], and the user, which determine that all of the high level requirements have been met, especially for the [[computer-human-interface]].
* Generating a set of '''[[acceptance test]]''' requirements, together with the designers, [[test engineers]], and the users, which determine that all of the high-level requirements have been met, especially for the [[computer-human-interface]].
* Generating products such as [[sketch (drawing)|sketches]], [[computer model|models]], an early [[user guide]], and [[prototypes]] to keep the user and the engineers constantly up to date and in agreement on the system to be provided as it is evolving.
* Generating products such as [[sketch (drawing)|sketches]], [[computer model|models]], an early [[user guide]], and [[prototypes]] to keep the users and the engineers constantly up to date and in agreement on the system to be provided as it is evolving.
* Ensuring that all products with the design input are maintained in the most current state and never allowed to become obsolete.
* Ensuring that all architectural products and products with architectural input are maintained in the most current state and never allowed to seriously lag or become obsolete.


== Systems designer: topics ==
== Systems architect: topics ==
Large systems design was developed as a way to handle systems too large for one person to conceive of, let alone design. Systems of this size are rapidly becoming the norm, so design approaches and designers are increasingly needed to solve the problems of large systems. In general, increasingly large systems are reduced to 'human' proportions by a layering approach, where each layer is composed of a number of individually comprehensible sub-layers-- each having its own principal engineer and/or designer. A complete layer at one level will be shown as a functional 'component' of a higher layer.
Large systems architecture was developed as a way to handle systems too large for one person to conceive of, let alone design. Systems of this size are rapidly becoming the norm, so architectural approaches and architects are increasingly needed to solve the problems of large to very large systems. In general, increasingly large systems are reduced to 'human' proportions by a layering approach, where each layer is composed of a number of individually comprehensible sub-layers-- each having its own principal engineer and/or architect. A complete layer at one level will be shown as a functional 'component' of a higher layer (and may disappear altogether at the highest layers).


=== Users and sponsors ===
=== Users and sponsors ===
designers ''are'' expected to understand human needs and develop humanly functional and aesthetically pleasing products. A good designer is also the principal keeper of the user's vision of the end product— and of the process of deriving requirements from and implementing that vision.
Architects ''are'' expected to understand human needs and develop humanly functional and aesthetically-pleasing products. A good architect is also the principal keeper of the users' vision of the end product, and of the process of deriving requirements from and implementing that vision.


designers do not follow exact procedures. They communicate with users/sponsors in a highly interactive way— together they extract the true ''[[Requirements engineering|requirements]]'' necessary for the designed system. The designer must remain constantly in communication with the end users and with the (principal) systems engineers. Therefore, the designer must be intimately familiar with the user's environment and problem, and with the engineering environment(s) of likely solution spaces.
Architects do not follow exact procedures. They communicate with users/sponsors in a highly interactive, relatively informal way— together they extract the true ''[[Requirements engineering|requirements]]'' necessary for the designed (end) system. The architect must remain constantly in communication with the end users and with the (principal) systems engineers. Therefore, the architect must be intimately familiar with the users' environment and problem, and with the engineering environment(s) of likely solution spaces.


=== High level requirements ===
=== High level requirements ===
The user requirements' specification should be a joint product of the user and designer: the user brings his needs and wish list, the designer brings knowledge of what is likely to prove doable within cost, time and other constraints. When the user needs are translated into a set of high level requirements is also the best time to write the first version of the [[acceptance test]], which should, thereafter, be religiously kept up to date with the requirements. That way, the user will be absolutely clear about what s/he is getting. It is also a safeguard against untestable requirements, misunderstandings, and requirements creep.
The user requirements specification should be a joint product of the users and architect: the users bring their needs and wish list, the architect brings knowledge of what is likely to prove doable within the cost, time and other constraints. When the users needs are translated into a set of high-level requirements is also the best time to write the first version of the [[acceptance test]], which should, thereafter, be religiously kept up to date with the requirements. That way, the users will be absolutely clear about what they are getting. It is also a safeguard against untestable requirements, misunderstandings, and requirements creep.


The development of the first level of engineering requirements is not a purely analytical exercise and should also involve both the designer and engineer. If any compromises are to be made— to meet constraints- the designer must ensure that the final product and overall look and feel do not stray very far from the user's intent. The engineer should focus on developing a design that optimizes the constraints but ensures a workable and reliable product. The provision of needed services to the user is the true function of an engineered system. However, as systems become ever larger and more complex, and as their emphases move away from simple hardware and software components, the narrow application of traditional systems development principles has been found to be insufficient— the application of more general principles of systems, hardware, and software design to the design of (sub)systems is seen to be needed. A design may also be seen as a simplified model of the finished end product— its primary function is to define the parts and their relationships to each other so that the whole can be seen to be a consistent, complete, and correct representation of what the user had in mind— especially for the computer-human-interface. It is also used to ensure that the parts fit together and relate in the desired way.
The development of the first level of engineering requirements is not a purely analytical exercise and should also involve both the architect and engineer. If any compromises are to be made— to meet constraints- the architect must ensure that the final product and overall look and feel do not stray very far from the users' intent. The engineer should focus on developing a design that optimizes the constraints but ensures a workable, reliable, extensible and robust product. The provision of needed services to the users is the true function of an engineered system. However, as systems become ever larger and more complex, and as their emphases move away from simple hardware and software components, the narrow application of traditional systems development principles have been found to be insufficient— the application of more general principles of systems, hardware, and software architecture to the design of (sub)systems is seen to be needed. Architecture may also be seen as a simplified model of the finished end product— its primary function is to define the parts and their relationships to each other so that the whole can be seen to be a consistent, complete, and correct representation of what the users' had in mind— especially for the computer-human-interface. It is also used to ensure that the parts fit together and relate in the desired way.


It is necessary to distinguish between the design of the user's world and the engineered systems. The former represents and addresses problems and solutions in the ''user's'' world. It is principally captured in the [[computer-human-interface]]s (CHI) of the engineered system. The engineered system represents the ''engineering'' solutions— how the ''engineer'' proposes to develop and/or select and combine the components of the technical infrastructure to support the CHI. In the absence of an experienced designer, there is an unfortunate tendency to confuse the two. But— the engineer thinks in terms of hardware and software and the technical solution space, whereas the user may be thinking in terms of solving a problem of getting people from point A to point B in a reasonable amount of time and with a reasonable expenditure of energy, or of getting needed information to customers and staff. A systems designer is expected to combine knowledge of both the design of the user's world and of (all potentially useful) engineering [[systems architecture]]s. The former is a joint activity with the user; the latter is a joint activity with the engineers. The product is a set of high level requirements reflecting the user's requirements which can be used by the engineers to develop systems design requirements.
It is necessary to distinguish between the architecture of the users' world and the engineered systems architecture. The former represents and addresses problems and solutions in the ''user's'' world. It is principally captured in the [[computer-human-interface]]s (CHI) of the engineered system. The engineered system represents the ''engineering'' solutions— how the ''engineer'' proposes to develop and/or select and combine the components of the technical infrastructure to support the CHI. In the absence of an experienced architect, there is an unfortunate tendency to confuse the two architectures. But'''—''' the engineer thinks in terms of hardware and software and the technical solution space, whereas the users may be thinking in terms of solving a problem of getting people from point A to point B in a reasonable amount of time and with a reasonable expenditure of energy, or of getting needed information to customers and staff. A systems architect is expected to combine knowledge of both the architecture of the users' world and of (all potentially useful) engineering [[systems architecture]]s. The former is a joint activity with the users; the latter is a joint activity with the engineers. The product is a set of high-level requirements reflecting the users' requirements which can be used by the engineers to develop systems design requirements.


Because requirements evolve over the course of a project, especially a long one, a designer is needed until the system is accepted by the user: the designer ensures that all changes and interpretations made during the course of development do not compromise the user's viewpoint.
Because requirements evolve over the course of a project, especially a long one, an architect is needed until the system is accepted by the user: the architect ensures that all changes and interpretations made during the course of development do not compromise the users' viewpoint.


=== Cost/benefit analyses ===
=== Cost/benefit analyses ===
Systems designers are generalists. They are not expected to be experts in any one technology but are expected to be knowledgeable of many technologies and able to judge their applicability to specific situations. They also apply their knowledge to practical situations, but evaluate the cost/benefits of various solutions using different technologies, for example, hardware versus software versus manual, and assure that the system as a whole performs according to the user's expectations.
Architects are generalists. They are not expected to be experts in any one technology but are expected to be knowledgeable of many technologies and able to judge their applicability to specific situations. They also apply their knowledge to practical situations, but evaluate the cost/benefits of various solutions using different technologies, for example, hardware versus software versus manual, and assure that the system as a whole performs according to the users' expectations.


Many commercial-off-the-shelf or already developed hardware and software components may be selected independently according to constraints such as cost, response, throughput, etc. In some cases, the designer can already assemble the end system unaided. Or, s/he may still need the help of a hardware or software engineer to select components and to design and build any special purpose function. The designers (or engineers) may also enlist the aid of other specialists— in [[Safety engineering|safety]], [[Computer security|security]], [[Telecommunication|communications]], special purpose hardware, [[Infographic|graphics]], [[Human factors and ergonomics|human factors]], [[Test method|test]] and [[evaluation]], [[quality control]], [[Reliability engineering|reliability]], [[maintainability]], [[Availability (system)|availability]], [[Interface (computing)|interface]] management, etc. An effective systems design team must have access to specialists in critical specialities as needed.
Many commercial-off-the-shelf or already developed hardware and software components may be selected independently according to constraints such as cost, response, throughput, etc. In some cases, the architect can already assemble the end system (almost) unaided. Or, s/he may still need the help of a hardware or software engineer to select components and to design and build any special purpose function. The architects (or engineers) may also enlist the aid of other specialists— in [[Safety engineering|safety]], [[Computer security|security]], [[Telecommunication|communications]], special purpose hardware, [[Infographic|graphics]], [[Human factors and ergonomics|human factors]], [[Test method|test]] and [[evaluation]], [[quality control]], [[Reliability engineering|reliability]], [[maintainability]], [[Availability (system)|availability]], [[Interface (computing)|interface]] management, etc. An effective systems architectural team must have access to specialists in critical specialties as needed.


=== Partitioning and layering ===
=== Partitioning and layering ===
A systems designer planning a building works on the overall design, making sure it will be pleasing and useful to its inhabitants. While a single designer by himself may be enough to build a single-family house, many engineers may be needed, in addition, to solve the detailed problems that arise when a novel high-rise building is designed. If the job is large and complex enough, parts of the design may be designed as independent components. That is, if we are building a housing complex, we may have one designer for the complex, and one for each type of building, as part of the design ''team.''
An architect planning a building works on the overall design, making sure it will be pleasing and useful to its inhabitants. While a single architect by himself may be enough to build a single-family house, many engineers may be needed, in addition, to solve the detailed problems that arise when a novel high-rise building is designed. If the job is large and complex enough, parts of the architecture may be designed as independent components. That is, if we are building a housing complex, we may have one architect for the complex, and one for each type of building, as part of an ''architectural team.''


Large automation systems also require a designer and much engineering talent. If the engineered system is large and complex enough, the systems designer may defer to a hardware designer and a software designer for parts of the job, although they all may be members of a joint design team.
Large automation systems also require an architect and much engineering talent. If the engineered system is large and complex enough, the systems architect may defer to a hardware architect and/or a software architect for parts of the job, although they all may be members of a joint architectural team.


The designer should sub-allocate the system requirements to major components or subsystems that are within the scope of a single hardware or software engineer, or engineering manager and team. ''But the designer must never be viewed as an engineering supervisor.'' (If the item is sufficiently large and/or complex, the chief designer will sub-allocate portions to more specialized designers.) Ideally, each such component/subsystem is a sufficiently stand-alone object that it can be tested as a complete component, separate from the whole, using only a simple testbed 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.
The architect should sub-allocate the system requirements to major components or subsystems that are within the scope of a single hardware or software engineer, or engineering manager and team. But the architect must never be viewed as an engineering supervisor. (If the item is sufficiently large and/or complex, the chief architect will sub-allocate portions to more specialized architects.) Ideally, each such component/subsystem is a sufficiently stand-alone object that it can be tested as a complete component, separate from the whole, using only a simple testbed 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 designer 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. The designer will use a minimum of [[heuristics]] to ensure that each partition is [[well defined]] and clean of [[kludge]]s, [[work-arounds]], [[Computer shortcut|short-cuts]], or confusing detail and exceptions. As user needs evolve, (once the system is fielded and in use), it is a lot easier subsequently to evolve a simple concept than one laden with exceptions, special cases, and lots of "fine print."
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 users, without special training. The architect will use a minimum of [[heuristics]] to ensure that each partition is [[well defined]] and clean of [[kludge]]s, [[work-arounds]], [[Computer shortcut|short-cuts]], or confusing detail and exceptions. As users needs evolve, (once the system is fielded and in use), it is a lot easier subsequently to evolve a simple concept than one laden with exceptions, special cases, and much "fine print."


''Layering'' the systems design is important for keeping the design sufficiently simple at each ''layer'' so that it remains comprehensible to a single mind. As layers are ascended, whole systems at ''lower layers'' become simple ''components'' at the ''higher layers,'' and may disappear altogether at the ''highest layers.''
''Layering'' the architecture is important for keeping the architecture sufficiently simple at each ''layer'' so that it remains comprehensible to a single mind. As layers are ascended, whole systems at ''lower layers'' become simple ''components'' at the ''higher layers,'' and may disappear altogether at the ''highest layers.''


=== Acceptance test ===
=== Acceptance test ===
The [[acceptance test]] is a principal responsibility of the systems designer. It is the chief means by which the program lead will prove to the user that the system is as originally planned and that all involved designers and engineers have met their objectives.
The '''[[acceptance test]]''' is a principal responsibility of the systems architect. It is the chief means by which the program lead will prove to the users that the system is as originally planned and that all involved architects and engineers have met their objectives.


=== Communications with users and engineers ===
=== Communications with users and engineers ===
An early, draft version of the user's manual is invaluable, especially in conjunction with a prototype. Nevertheless, it is important that a workable, well written ''set of requirements,'' or [[specification]], be created which is reasonably understandable to the customer (so that they can properly sign off on it, but the principal user requirements should be captured in a preliminary user manual for intelligibility). But it must use precise and unambiguous language so that designers and other implementers are left in no doubt as to meanings or intentions. <!-- 198.97.67.59: if you stick to 'exclusively' precise and unambiguous language, you get a spec that is "unintelligible to the average user." In this world, you can't have it all ways. Good point; that's why the emphasis should also be on a good preliminary users manual and/or prototype. -->In particular, all requirements must be testable, and the initial draft of the test plan should be developed contemporaneously with the requirements. All stakeholders should sign off on the [[acceptance test]] descriptions, or equivalent, as the sole determinant of the satisfaction of the requirements, at the outset of the program.
A building architect uses sketches, models, and drawings. An [[automation]] systems (or software or hardware) architect should use sketches, models, and prototypes to discuss different solutions and results with users, engineers, and other architects. An early, draft version of the users' manual is invaluable, especially in conjunction with a prototype. Nevertheless, it is important that a workable, well written ''set of requirements,'' or [[specification]], be created which is reasonably understandable to the customer (so that they can properly sign off on it, but the principal users' requirements should be captured in a preliminary users' manual for intelligibility). But it must use precise and unambiguous language so that designers and other implementers are left in no doubt as to meanings or intentions. <!-- 198.97.67.59: if you stick to 'exclusively' precise and unambiguous language, you get a spec that is "unintelligible to the average user." In this world, you can't have it all ways. Good point; that's why the emphasis should also be on a good preliminary users' manual and/or prototype. -->In particular, all requirements must be testable''',''' and the initial draft of the test plan should be developed contemporaneously with the requirements. All stakeholders should sign off on the [[acceptance test]] descriptions, or equivalent, as the sole determinant of the satisfaction of the requirements, at the outset of the program.

==Architect metaphor==
The use of any form of the word "architect" is regulated by "title acts" in many states in the US, and a person must be licensed as a building architect to use it.<ref>The term "architect" is a '''[[Profession#Regulation|professional title]]''' protected by [[Statute|law]] and restricted, in most of the world's jurisdictions, to those who are trained in the planning, design and supervision of the construction of '''[[buildings]]'''. In these jurisdictions, anyone who is not a licensed architect is prohibited from using this title ''in any way''. In the State of New York, and in other US states, the unauthorized use of the title "architect" is a crime and is subject to [[criminal proceedings]].{{cite web|url=http://www.aianys.org/what's_legal_whats_not.pdf |publisher=AIA New York State|title=Architecture: What's Legal, What's Not|access-date=9 July 2012}}{{cite web|url=http://www.op.nysed.gov/prof/arch/article147.htm|title= NYS Architecture:Laws, Rules & Regulations:Article 147 Architecture|access-date=9 July 2012}}</ref>

In the UK the architects registration board excludes the usage of architect (when used in the context of software and IT) from its restricted usage. <ref>{{cite web|url=http://www.arb.org.uk/public-information/regulate-use-title-architect/ |publisher=Architects Registration Board|title=What we do to regulate use of the title 'architect'|access-date=8 July 2019}}</ref>


== See also ==
== See also ==
Line 108: Line 113:
== External links ==
== External links ==
* [http://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/ Principles of Computer System Design: An Introduction] – MIT OpenCourseWare
* [http://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/ Principles of Computer System Design: An Introduction] – MIT OpenCourseWare
* [http://www.informit.com/articles/article.aspx?p=169564 Systems Architecture : Canaxia Brings an Architect on Board], Article.
* [http://www.informit.com/articles/article.aspx?p=169564 Systems Architecture: Canaxia Brings an Architect on Board], Article


[[Category:Architecture occupations]]
[[Category:Architecture occupations]]

Latest revision as of 14:05, 8 October 2024

Systems architect
Systems architects divide large and complex systems into manageable subsystems that can be handled by individual engineers.
Occupation
NamesSystems architect
Occupation type
Profession
Activity sectors
Systems engineering
Systems
Design
Engineering
Description
Competenciesuser domain knowledge, scientific knowledge, engineering, planning and management skills
Education required
See education

The systems architect is an information and communications technology professional. Systems architects define the architecture of a computerized system (i.e., a system composed of software and hardware) in order to fulfill certain requirements. 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 its design and implementation.

The systems architect's work should seek to avoid implementation issues and readily permit unanticipated extensions/modifications in future stages. Because of the extensive experience required for this, the systems architect is typically a very senior technologist with substantial, but general, knowledge of hardware, software, and similar (user) systems. Above all, the systems architect must be reasonably knowledgeable of the users' domain of experience. For example, the architect of an air traffic system needs to be more than superficially familiar with all of the tasks of an air traffic system, including those of all levels of users.

The title of systems architect connotes higher-level design responsibilities than a systems engineer, software engineer or programmer, though day-to-day activities may overlap.

Overview

[edit]

Systems architects interface with multiple stakeholders in an organization in order to understand the various levels of requirements, the domain, the viable technologies, and anticipated development process. Their work includes determining multiple design and implementation alternatives, assessing such alternatives based on all identified constraints (such as cost, schedule, space, power, safety, usability, reliability, maintainability, availability, and other "ilities"), and selecting the most suitable options for further design. The output of such work sets the core properties of the system and those that are hardest to change later.

In small systems the architecture is typically defined directly by the developers. However, in larger systems, a systems architect should be appointed to outline the overall system, and to interface between the users, sponsors, and other stakeholders on one side and the engineers on the other. Very large, highly complex systems may include multiple architects, in which case the architects work together to integrate their subsystems or aspects, and respond to a chief architect responsible for the entire system. In general, the role of the architect is to act as a mediator between the users and the engineers, reconciling the users' needs and requirements with what the engineers have determined to be doable within the given (engineering) constraints.

In systems design, the architects (and engineers) are responsible for:

  • Interfacing with the user(s) and sponsor(s) and all other stakeholders in order to determine their (evolving) needs.
  • Generating the highest level of system requirements, based on the users' needs and other constraints.
  • Ensuring that this set of high level requirements is consistent, complete, correct, and operationally defined.
  • Performing cost–benefit analyses to determine whether requirements are best met by manual, software, or hardware functions; making maximum use of commercial off-the-shelf or already developed components.
  • Developing partitioning algorithms (and other processes) to allocate all present and foreseeable requirements into discrete partitions such that a minimum of communications is needed among partitions, and between the users and the system.
  • Partitioning large systems into (successive layers of) subsystems and components each of which can be handled by a single engineer or team of engineers or subordinate architect.
  • Interfacing with the design and implementation engineers and architects, so that any problems arising during design or implementation can be resolved in accordance with the fundamental design concepts, and users' needs and constraints.
  • Ensuring that a maximally robust and extensible design is developed.
  • Generating a set of acceptance test requirements, together with the designers, test engineers, and the users, which determine that all of the high-level requirements have been met, especially for the computer-human-interface.
  • Generating products such as sketches, models, an early user guide, and prototypes to keep the users and the engineers constantly up to date and in agreement on the system to be provided as it is evolving.
  • Ensuring that all architectural products and products with architectural input are maintained in the most current state and never allowed to seriously lag or become obsolete.

Systems architect: topics

[edit]

Large systems architecture was developed as a way to handle systems too large for one person to conceive of, let alone design. Systems of this size are rapidly becoming the norm, so architectural approaches and architects are increasingly needed to solve the problems of large to very large systems. In general, increasingly large systems are reduced to 'human' proportions by a layering approach, where each layer is composed of a number of individually comprehensible sub-layers-- each having its own principal engineer and/or architect. A complete layer at one level will be shown as a functional 'component' of a higher layer (and may disappear altogether at the highest layers).

Users and sponsors

[edit]

Architects are expected to understand human needs and develop humanly functional and aesthetically-pleasing products. A good architect is also the principal keeper of the users' vision of the end product, and of the process of deriving requirements from and implementing that vision.

Architects do not follow exact procedures. They communicate with users/sponsors in a highly interactive, relatively informal way— together they extract the true requirements necessary for the designed (end) system. The architect must remain constantly in communication with the end users and with the (principal) systems engineers. Therefore, the architect must be intimately familiar with the users' environment and problem, and with the engineering environment(s) of likely solution spaces.

High level requirements

[edit]

The user requirements specification should be a joint product of the users and architect: the users bring their needs and wish list, the architect brings knowledge of what is likely to prove doable within the cost, time and other constraints. When the users needs are translated into a set of high-level requirements is also the best time to write the first version of the acceptance test, which should, thereafter, be religiously kept up to date with the requirements. That way, the users will be absolutely clear about what they are getting. It is also a safeguard against untestable requirements, misunderstandings, and requirements creep.

The development of the first level of engineering requirements is not a purely analytical exercise and should also involve both the architect and engineer. If any compromises are to be made— to meet constraints- the architect must ensure that the final product and overall look and feel do not stray very far from the users' intent. The engineer should focus on developing a design that optimizes the constraints but ensures a workable, reliable, extensible and robust product. The provision of needed services to the users is the true function of an engineered system. However, as systems become ever larger and more complex, and as their emphases move away from simple hardware and software components, the narrow application of traditional systems development principles have been found to be insufficient— the application of more general principles of systems, hardware, and software architecture to the design of (sub)systems is seen to be needed. Architecture may also be seen as a simplified model of the finished end product— its primary function is to define the parts and their relationships to each other so that the whole can be seen to be a consistent, complete, and correct representation of what the users' had in mind— especially for the computer-human-interface. It is also used to ensure that the parts fit together and relate in the desired way.

It is necessary to distinguish between the architecture of the users' world and the engineered systems architecture. The former represents and addresses problems and solutions in the user's world. It is principally captured in the computer-human-interfaces (CHI) of the engineered system. The engineered system represents the engineering solutions— how the engineer proposes to develop and/or select and combine the components of the technical infrastructure to support the CHI. In the absence of an experienced architect, there is an unfortunate tendency to confuse the two architectures. But the engineer thinks in terms of hardware and software and the technical solution space, whereas the users may be thinking in terms of solving a problem of getting people from point A to point B in a reasonable amount of time and with a reasonable expenditure of energy, or of getting needed information to customers and staff. A systems architect is expected to combine knowledge of both the architecture of the users' world and of (all potentially useful) engineering systems architectures. The former is a joint activity with the users; the latter is a joint activity with the engineers. The product is a set of high-level requirements reflecting the users' requirements which can be used by the engineers to develop systems design requirements.

Because requirements evolve over the course of a project, especially a long one, an architect is needed until the system is accepted by the user: the architect ensures that all changes and interpretations made during the course of development do not compromise the users' viewpoint.

Cost/benefit analyses

[edit]

Architects are generalists. They are not expected to be experts in any one technology but are expected to be knowledgeable of many technologies and able to judge their applicability to specific situations. They also apply their knowledge to practical situations, but evaluate the cost/benefits of various solutions using different technologies, for example, hardware versus software versus manual, and assure that the system as a whole performs according to the users' expectations.

Many commercial-off-the-shelf or already developed hardware and software components may be selected independently according to constraints such as cost, response, throughput, etc. In some cases, the architect can already assemble the end system (almost) unaided. Or, s/he may still need the help of a hardware or software engineer to select components and to design and build any special purpose function. The architects (or engineers) may also enlist the aid of other specialists— in safety, security, communications, special purpose hardware, graphics, human factors, test and evaluation, quality control, reliability, maintainability, availability, interface management, etc. An effective systems architectural team must have access to specialists in critical specialties as needed.

Partitioning and layering

[edit]

An architect planning a building works on the overall design, making sure it will be pleasing and useful to its inhabitants. While a single architect by himself may be enough to build a single-family house, many engineers may be needed, in addition, to solve the detailed problems that arise when a novel high-rise building is designed. If the job is large and complex enough, parts of the architecture may be designed as independent components. That is, if we are building a housing complex, we may have one architect for the complex, and one for each type of building, as part of an architectural team.

Large automation systems also require an architect and much engineering talent. If the engineered system is large and complex enough, the systems architect may defer to a hardware architect and/or a software architect for parts of the job, although they all may be members of a joint architectural team.

The architect should sub-allocate the system requirements to major components or subsystems that are within the scope of a single hardware or software engineer, or engineering manager and team. But the architect must never be viewed as an engineering supervisor. (If the item is sufficiently large and/or complex, the chief architect will sub-allocate portions to more specialized architects.) Ideally, each such component/subsystem is a sufficiently stand-alone object that it can be tested as a complete component, separate from the whole, using only a simple testbed 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 users, without special training. The architect will use a minimum of heuristics to ensure that each partition is well defined and clean of kludges, work-arounds, short-cuts, or confusing detail and exceptions. As users needs evolve, (once the system is fielded and in use), it is a lot easier subsequently to evolve a simple concept than one laden with exceptions, special cases, and much "fine print."

Layering the architecture is important for keeping the architecture sufficiently simple at each layer so that it remains comprehensible to a single mind. As layers are ascended, whole systems at lower layers become simple components at the higher layers, and may disappear altogether at the highest layers.

Acceptance test

[edit]

The acceptance test is a principal responsibility of the systems architect. It is the chief means by which the program lead will prove to the users that the system is as originally planned and that all involved architects and engineers have met their objectives.

Communications with users and engineers

[edit]

A building architect uses sketches, models, and drawings. An automation systems (or software or hardware) architect should use sketches, models, and prototypes to discuss different solutions and results with users, engineers, and other architects. An early, draft version of the users' manual is invaluable, especially in conjunction with a prototype. Nevertheless, it is important that a workable, well written set of requirements, or specification, be created which is reasonably understandable to the customer (so that they can properly sign off on it, but the principal users' requirements should be captured in a preliminary users' manual for intelligibility). But it must use precise and unambiguous language so that designers and other implementers are left in no doubt as to meanings or intentions. In particular, all requirements must be testable, and the initial draft of the test plan should be developed contemporaneously with the requirements. All stakeholders should sign off on the acceptance test descriptions, or equivalent, as the sole determinant of the satisfaction of the requirements, at the outset of the program.

Architect metaphor

[edit]

The use of any form of the word "architect" is regulated by "title acts" in many states in the US, and a person must be licensed as a building architect to use it.[1]

In the UK the architects registration board excludes the usage of architect (when used in the context of software and IT) from its restricted usage. [2]

See also

[edit]

References

[edit]
  1. ^ The term "architect" is a professional title protected by law and restricted, in most of the world's jurisdictions, to those who are trained in the planning, design and supervision of the construction of buildings. In these jurisdictions, anyone who is not a licensed architect is prohibited from using this title in any way. In the State of New York, and in other US states, the unauthorized use of the title "architect" is a crime and is subject to criminal proceedings."Architecture: What's Legal, What's Not" (PDF). AIA New York State. Retrieved 9 July 2012."NYS Architecture:Laws, Rules & Regulations:Article 147 Architecture". Retrieved 9 July 2012.
  2. ^ "What we do to regulate use of the title 'architect'". Architects Registration Board. Retrieved 8 July 2019.

Further reading

[edit]
  • Donald Firesmith et al.: The Method Framework for Engineering System Architectures, (2008)
  • Mark W. Maier and Rechtin, Eberhardt, The Art of Systems Architecting, Third Edition (2009)
  • Gerrit Muller, "Systems architecting: A business perspective," CRC Press, (2012).
  • Eberhardt Rechtin, Systems Architecting: Creating & Building Complex Systems, 1991.
  • J. H. Saltzer, M. F. Kaashoek, Principles of Computer System Design: An Introduction, Morgan Kaufmann, 2009.
  • Rob Williams, Computer Systems Architecture: a Networking Approach, Second Edition (December 2006).
[edit]