

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.Ensuring that a maximally robust and extensible design is developed.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.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.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.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.Ensuring that this set of high level requirements is consistent, complete, correct, and operationally defined.Generating the highest level of system requirements, based on the users' needs and other constraints.Interfacing with the user(s) and sponsor(s) and all other stakeholders in order to determine their (evolving) needs.In systems design, the architects (and engineers) are responsible for: 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. 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.

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.


In small systems the architecture is typically defined directly by the developers. The output of such work sets the core properties of the system and those that are hardest to change later. 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 "illities"), and selecting the most suitable options for further design. 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.
