This page lists definitions that have been contributed by visitors to this website. Contact us to submit your definition of software architecture.
SEI work in architecture-centric engineering exploits the relationship between a system's architecture and its quality attributes, and leverages architecture as the key means for ensuring that systems will support their business and mission goals.
Stephan Zehrer (Senior System/SW Engineer, Privat, Markdorf, Germany): In relation to ISO
42010, the term "architecture" is defined here: http://www.iso-architecture.org/ieee-1471/defining-architecture.html
Fundamental concepts or properties of a software in its environment embodied in
its elements, relationships, and in the principles of its design and evolution.
I see software as a subclass of system.
Edgar Gomez Reyes (Desarrollador de
Proyectos, Aspec System, Veracruz, Mexico): Es el equipamiento
logico y la arquitectura de los servicios que se desarrollan para ofrecer una
vida mas fácil y cómoda para la humanidad. Los desarrolladores "Trabajamos
en lo difícil para que usted lo haga fácil".
Arvind Kiewelekar (Associate Professor, DBATU, Maharashtra, India): Software architecture
as a discipline aims at creating techniques to describe existing software
systems, prescribing how to build a new software system and evaluate the
configuration of software systems.
Nelu Suciu (Solution Architect, ISDC, Cluj, Romania): The core element of any software system is data. Along with data any software system provides the following capabilities: collection, processing, storage, presentation, and distribution of data. Software architecture has a two-fold purpose: first it has to design the balanced mix of capabilities to support the realization of business goals, and second it needs to use an optimal mix of implementation technologies regarding hardware, software, and operations. A good software architecture can be recognized when the business goals are fulfilled by the functionality delivered, within the estimated time and cost.
Philip Lew (CEO, XBOSoft, San Francisco, CA): Any definition for software architecture needs to be as simple as possible in order to withstand the test of time. Given that: "Software architecture is the building blocks or components of software, their definition, and how those components are connected together, and their interactions".
Vivek Khare (Software Architect, San Jose, CA): Software Architecture is essentially the art and science of designing and building software applications that meet the needs of its intended users over a period of time and patterns of usage.
Aakash Ahmad (Post Graduate Student, Dublin City University): Software architecture represents the global system structure for designing, evolving, and reasoning about configurations of computational components and their interconnection at higher abstractions.
Andreas Rausch (Professor, Technische Universität Clausthal): Software Architecture is a framework for change. Citations: Also attributed to Tom DeMarco. See: http://www.pst.ifi.lmu.de/lehre/WS0102/architektur/UML01AM.pdf
Muthu Rajagopal (Consultant, Marriott Vacation Club International, Lakeland, FL, USA): Software architecture is a collection of software and hardware components that are worked effectively to achieve business needs and expectations.
Kanhaiya Choudhary (M.Tech Student in Software Engineering, Bangalore, Karnataka, India): Software Architecture is all about repetition of jobs or schedules developed over time.
Pandu Ranga Rao Masabathula (Senior Developer, International SOS Assistance, Trevose, PA): Software Architecture is an evolving blueprint with artifacts of subsystems/components and the interaction between them and with outside entities/systems. It needs to address the needs of business stakeholders within the organizational, technical and any other constraints to achieve the business, technical or any other goals. It also needs to address software trustworthy characteristics like reliability, availability, maintainability, robustness, safety, security and survivability. A good architecture should continue to support the legacy/current systems and provide a way for enhancements for prospective systems.
Christine Miyachi (Software Architect, Andover, MA): One of my favorite definition isn't from software domains , but is from A Taxonomy of Decomposition Based on Structures, Behaviors, and Goals, Koopman, Design Theory and Methodology '95: System Architecture should contain goals/requirements artifacts, and structure and behavior artifacts based on those goals.
Pavel Slutsky (Senior Software Developer, Fort Washington, PA): Software architecture is a collection of software components unified via interfaces into decomposable system based on one or more technology platforms.
Renjith Gopalakrishnan (Technology Specialist, Chennai, India): Software Architecture shows the structural and behaviour of a system which is comprised of software elements and exposing the properties of those elements and relationships to among them. It is the highest level of breakdown of a system into its parts.
Vinay Singh (Senior Software Engineer, Bangalore, India): Software architecture is a virtual concept used to model in real world with feature of extensibility, optimization, loose coupling, maintainability, reliability, reusability, usability and modularity. It is basically a common approach to solve a bigger solution with the help of design principles and best practices. It specifically describes the clarity and objective to build the software.
Sridhar Sevvana (Business Analyst, Tata Consultancy Services, Bangalore, India): Software Architecture is a conceptual presentation of the customer needs and initial understanding of the product / service to be developed / provided by combining one or more design patterns (problem - solution pair) considering the constraints (technology and base line i.e., Scope, Cost and Time line) defined in the initial agreement between customer and vendor.
Sridhar Sevvana (Business Analyst, Tata Consultancy Services, Bangalore, India) Software Architecture is a conceptual presentation of the customer needs and initial understanding of the product / service to be developed / provided by combining one or more design patterns (problem - solution pair) considering the constraints (technology and base line i.e., Scope, Cost and Time line) defined in the initial agreement between customer and vendor.
Ranbir Singh (Lead Consultant, Capgemini FS GBU, Pune, Maharashtra, India): The software architecture of a system consists of components/modules that make up the system, their relationships, and their interaction to fulfill the system requirements. The architecture focus on how to implement Non-functional (system-wide) attributes aka QoS requirements.
Phaniraj Adabala (Systems Manager, Prasad Film Laboratories, Chennai, TN, India): Software Architecture is defined as a style that is proven scientifically and adopted by the engineering discipline, with which a software is developed so as to sustain and adopt to the growing needs of the industry from time to time.
Ebenezer Adegbile (Consultant, Self Employed, London, England): Software Architecture can be defined as language-independent representation of a given software system. It represents the skeleton of a software system, emphasizing a clear definition of the structure, communication and interrelationship of the body of the components that fulfills the purpose of a given software system. The components of the architecture should expose the protocol of the components only to its clients. Software architecture should implement a clear separation of concerns in all the core observable and non -observable behaviour of a software system. The architecture balances all interoperability of this core behaviour to fulfill the needs of the software system users. Software architecture should support both static and dynamic component configuration through a set of well-documented interfaces or contract known to the clients of the components of a given software system. It should be described in a set of patterns to facilities clarity and serves as a simple means of communication to the system stakeholders. Software architecture should support changeability, expendability, portability, scalability, reusability to mention a few.
Vijaya Agarwal (Associate Consultant, ICFAI, Hyderabad, India): Software architecture is aligning the software components with proper collaboration and integration to sustain in the changing business environment by utilizing and abstracting the involver at maximum.
Wahab Ahmed (Software Engineer, National, Islamabad, Federal, Pakistan): Software architecture is a coherent set of abstract patterns, or principles, guiding the design of each aspect of a large software system.
Software architecture underlies the practice of building computer software. In the same way as a building architect sets the principles and goals of a building project as the basis for the draftsman's plans, so too, a software architect or systems architect sets out the software architecture as a basis for actual system design specifications, as per the requirements of the client.
Software architecture is like an architecture of a building in that it has to do with the purpose, themes, materials, and concept of a structure. A software architect employs extensive knowledge of software theory and appropriate experience to conduct and manage the high-level design of a software product. The software architect develops concepts and plans for software modularity, module interaction methods, user interface dialog style, interface methods with external systems, innovative design features, and high-level business object operations, logic, and flow.
A software architect consults with clients on conceptual issues, managers on broad design issues, software engineers on innovative structural features, and computer programmers on implementation techniques, appearance, and style.
Software architecture is a sketchy map of the system. Software architecture describes the coarse grain components (usually describes the computation) of the system. The connectors between these components describe the communication, which are explicit and pictured in a relatively detailed way. In the implementation phase, the coarse components are refined into "actual components", e.g., classes and objects. In the object-oriented field, the connectors are usually implemented as interfaces.
Charlie Alfred (Technical Director, Foliage Software Systems, Inc., Burlington MA USA): Software architecture consists of the rules and principles for how a system is decomposed into its component parts, the rationale for how responsibilities are allocated among those parts, and the policies and mechanisms that coordinate the interactions between those parts as they collaborate to fulfill the purpose of the system. Software architecture is at once the partitioning of a system into its significant elements, and the organization and integration of those elements into a cohesive whole.
Ali Alsuwaii (Graduate Student , Stevens Institute of Technology, Hoboken, NJ, USA): Software Architecture is a set of relationships between software parts ( probably components) and each relation is defined by two or more components and it limited to a set of agreed relationship types.
Christophe Alviset (Applications and Projects Department Head, INSEE, Paris, France): A systems architecture is the set of components, their attributes and the ways of using them that are necessary to build a system or a set of systems. It depends on the set of people working to build the systems, their skills and the current state of the art. It helps them to agree on their respective roles. It aims to achieve some desirable functionalities in the systems that are built, such as evolutivity, robustnesss, redundancy, and so forth.
Rama Mohan Reddy Ambati (Associate Professor, Sri Venkateswara University, Tirupati, India): Software Architecture is defined as it is an organized collection of inter-related structural elements types for solving a software design problem.
Structural Elements Types:
d) Constraints and
Characteristics, Classification, and Definitions must be given for all the above.
Arash Amiri (Student , Vienna University of Technology, Vienna, Austria): Software architecture is a means of communication.
Francis Anderson (Chief Object Architect, ClearSystems): A set of solution frameworks to which all aspects of the problem domain are mapped.
Mark Andrew, Director, The Cossack Group Pty Ltd, Melbourne, Vic, Australia): Many architectural methodologies and architects seem preoccupied with describing technology and the most elegant ways of engineering and connecting technologies and seem to have lost touch with the purpose of all architecture, unlike their progenitors in the constructed environment. What is that purpose? The purpose of architecture is to design a physical construction, the operational behaviour of which satisfies defined human objectives. There are some key points here related to the design of an IT architecture. It is the operational behaviour of the construction which fulfills its purpose, not the actual design nor the construction itself. The operational behaviour of the construction has to be designed as an integral component of the architecture. No matter the degree and layers of abstraction in which IT architectures are described, these architectures are designed to be built and they are realized in physical terms. From software transformed into executable code to electrons being shunted in a CPU, to messages physically transmitted across a network, to distributed computing across personal computers, LAN servers, application servers, and mainframe computers, and so on, the manifestations of an IT architecture are physical. Human objectives must be satisfied if architecture is to be meaningful. Human objectives could be business, social, medical, military, government etc. IT architecture's biggest challenge is to not only understand and articulate these objectives, but to demonstrate how the design of an IT architecture links to and fulfills these objectives.
Raghu Angara (Sr. Project Manager, Cysive, Inc. Chicago, Illinois USA, www.cysive.com): In my opinion Software Architecture is a collection of multi-tiered abstract objects that can be encompassed by the framework of business objectives.
Marshall Anthony (Student, Fairleigh Dickinson University, NJ): Software Architecture is the logical flow (or design) of interrelated components that work towards the goal of a current or prospective system.
Mohan Babu (Technology Consultant, GaramChai.com, Denver, CO, ): Architecture means several things to several people: There are over 150 definitions of Software Architecture; at a very basic level it is both a process and a product. The process involves architecting a solution and the product is a description of the way the solution will be architected. Major schools of thought include the 4 + 1 View, Zachmann Framework, RM- ODP, IEEE, OMG etc.
Chitra Baggar (Student-M.Tech(Software Engineering), Banasthali Vidyapith, Jaipur, Rajasthan, India): Software architecture is "Identifying the common elements and then defining their structural and behavioral components into the larger subsystems with the interface inetracting with each other in cohesive integrated unit" Citation: Software architecture and system organization. Shaw & Garlan
Darren Ball (Recruiter specialising in Software and Applications Architecture, The+Drax+Group, London, UK): I have kept my summary brief as having interviewed hundreds of Application, Software, and Technical Architects for my clients in Financial Markets I have established that it is almost impossible to make a make a statement which defines Architecture in a comprehensive manner yet remains succinct. Anyway here it is: Architecture principally concerns itself with partitioning business functionality into components/applications and the definition of the interfaces between those components and applications.
Tony Roy Bastin (Software Engineer, Coralgrid Software, Chennai, TN, India): Software Architecture is the overall big picture of the entire software system which gives an overview of the functionalities of all components and the relationship between various components i.e the collaboration and interaction of every component with other components, depicted using formal notations like box and line diagrams. [FHayes-Roth 94]
Thomas Behrens (Chief Technology Officer, Alpheus Solutions Frankfurt, Germany): Software architecture - from my practical experience - is a set of established and derived constraints restricting the freedom of design and low-level design decisions to ensure these are made towards a common goal in order to fulfill the requirements of the end product.
Wouter Beneke (Paradigm Systems Technology): The architecture of a system is an abstraction of the system giving the semantics and specification for the patterns of information content and context.
Abhijeet Bhagat (QAE, Geometric Software Solutions Co. Ltd, Pune, MS, India): Application Architecture is combination of various software components and their interrelationship through different layers (eg. presentation layer comprises of GUI objects which fire events to business logic layer which in turn can call stored procedures and store data to DB in dataBase layer).
Ambreesh Bhagtani (Masters student, Computer Science, University of Southern California, Los Angeles): Software architecture is a basic framework, or a building tool which simplifies the process of design. It is an abstract system which defines the functional components, the inter-relationship between the components, the constraints on the components, and a rationale for choosing those components.
Aashay Bhargava (Student, Master Of Technology (Software Engineering), Indian Institute of Information Technology And Management, Gwalior, M.P., India): Software Architecture is the answer of the great void between software's requirement document and the starting of its first algorithm writing. It is the way for reducing complexity in a software development life cycle by
(i) providing a "structural view" of the system in terms of components(hardware/software) or modules, layers, connections, and service-contracts among them;
(ii) constraining the solution space; and
(iii) directing the system design and development in the direction that would satisfy high-level technical requirements such as performance, usability, scalability, availability, reliability and security.
It is an abstract idea which defines the technical, logical, physical, conceptual boundaries of a software solution within which the developers team, managers, etc. should work to achieve the solution goals. It is the way of mapping the software's requirement document into abstractions that models domain elements and their relationships using multiple views to address the structural, process, physical and development concerns.
Dr. Ir. Kees Bogaards (Consultant, Rotterdam, The Netherlands): A software architecture is a comprehensive system description defining how the requirements of the user are reconciled into an operational system. User requirements include functional as well as non-functional requirements such as e.g. performance, capacity, scalability, availability, confidentiality, integrity and costs. In general, a decomposition of the system into multiple cooperating components is necessary to establish the feasibility of the architecture, evaluate the compliance to the requirements, and determine the costs.
Sergio Bogazzi (Consultant, Metaframeworks LLC, Carlstadt NJ USA): "Software Architecture is about the logical relationships, characteristics and behaviors of a software system and its constituent parts which serve as the foundation to a system's design. These architectural attributes (relationships, characteristics, and behaviors) serve as the constraints that drive or alter business decisions, as well as guide the technical documentation, implementation, and maintenance of the system as a whole."
Daniel Bond (Information Systems Consultant, Rose International, St. Louis MO, USA): Software architecture is an abstract representation of application structure and behavior based on quality attribute constraints that are believed to occur operationally. All systems have an architecture. Software architecture has two states (as-is, to-be) that iterate as new requirements and technical trends produce change activities that affect the architecture. Software architecture sits on top of technical domains such as hardware and may be affected by changes in those domains. The software architecture and the applications it serves are subject to sub-optimization to ensure fulfillment of overall business (customer) interests. Depending on the overall solution, software may have to take a backseat to other domains to get the job done. Architectural elegance is never an excuse to fail the customer.
Wallace Byczek (Director of Development/Integration, U. Mass. Medical Center): Software architecture is the blueprinted or mapped definition of the component relationships formed by the domain architectural models, business related functions, application structure, and architecture inclusive of information architecture and its supporting infrastructure: tools, best practices, methods. In its modeled form it also establishes the dependencies between components -- in short, it is a model of the "ultrastructure" of systems.
Praveen C (Technical lead, EYME Technologies, Trivandrum, India): A software application addresses business requirements which which may span across many functional modules. All Software systems work with data and logic to provide information valuable to the end user. A software architecture addresses how the system is organized on the functional lines and outlines it stores/accesses/processes/renders information to the user at a very abstract level.
Carlos Canal (Assistant Professor, Universidad de Malaga, Dpt. de Lenguajes y Ciencias de la Computacion, Campus de Teatinos, Malaga Spain 29071) : Software Architecture deals with the description, analysis and reuse of the structure of software systems. Several notations and languages for architectural specification have been recently proposed. However, some important aspects of composition, extension, and reuse deserve further research. These include language aspects, such as refinement of components and architectures, and also validation aspects, like analysis of compatibility among system components. These problems are particularly relevant in the context of open systems, where system structure can evolve dynamically, either by incorporating new components, or by replacing existing components with compatible ones. Our approach tries to address some of these open problems by combining the use of formal methods, particularly process algebras, with concepts coming from the object-oriented domain. LEDA is an Architecture Description Language for the specification, validation, prototyping and construction of dynamic software systems. Systems specified in LEDA can be checked for compatibility, ensuring that the behaviour of their components conforms to each other and that the systems can be safely composed. A notion of polymorphism of behaviour is used to extend and refine components while maintaining their compatibility, allowing the parameterisation of architectures, and encouraging reuse of architectural designs.
John Carter (Software Technologist, Tait Electronics, Christchurch, New Zealand): Clearly from the plethora of definitions the very concept of "Software Architecture" is fuzzy to the point of utter uselessness.
Missing from many of the definitions is the empirical fact of many working systems that lack what they would call a "Software Architecture".
I suspect a large measure of the confusion arises from overloading multiple meanings on the term.
A lot of folk here actually mean...
- That peculiar consistency and homogeneity of Design that would give rise to ease of use and reuse, which is wished for by the Developer who calls himself "The Software Architect".
The natural implication of which is that consistency and homogeneity immediately implodes on the appointment of a second Software Architect. :-)
Which is very different from...
- Here is an existing vast and complex, mostly working, system. How is it structured? What are its control flows? What are its main data stores and data flows? What is it's data model? How is it built and deployed? What are the "Happy Paths" through it?
Another source of confusion I have spotted in the definitions is the desire to map Business functionality onto subsystems. That may be an admirable desire... but seldom is a Good Design. Thus in most well designed working systems business domain functionality may be splattered, for excellent technical implementation reasons, across multiple subsystems.
The compiler and the test team keep a programmer honest. His flaws are soon discovered.
No one and nothing holds a Software Architect accountable. Architectural documents are 99% irrelevant dreams having no grip on the reality of the code. So the equal degree of fuzziness in what is Software Architecture is no surprise. Until we have a standard exact and daily "round trip engineering" of Architectural Documents to and from the code, we will lack an accurate definition of it.
So far the best definition I have read in this forum so far is... Chris Verhoef's... "The software architecture of deployed software is determined by those aspects that are the hardest to change."
Having given one total negative definition let me attack the problem laterally... Software Architecture is the process of reducing coupling and improving cohesion at every level of granularity and from every perspective.
Subhendu Chatterjee (Senior Architect, Cognizant, Pune, India): Software architecture is the science and art of designing and creating software. It comprises a holistic view of the innards of a software. It encompasses all design activity from the macro details(subsystem design, component design, interaction architecture) to the micro details (detailed design). Software architecture also encompasses the pragmatic aspects of realizing a software, including scheduling, cost estimation and implementation governance.Software architecture is also a collection of documentation artifacts (usu. diagram representations and technology details) that may be used to define the structure and/or behavior of a software that is to be or has been constructed.
Ozten Chelai (University lecturer, Ovidius University of Constantza, Constanta, Romania): A system architecture represents the conceptual model of a system. A conceptual model is the map of concepts, relationships and constraints.
Avinash Chugh (Group Manager, SunGard, Pune, India): If after stripping off all of the non-essential elements, you are left with something that completely describes the software system, then you have successfully defined its architecture.
Susan Clancy (Software Developer, Jet Propulsion Lab): Software architecture is the partitioning of functionality into components which manage resources and perform services to other elements of the system using a well defined set of patterns, styles, and interfaces.
João Cortez (Systems Engineer, Infineon Technologies, Porto, Portugal 4755-412): Software Architecture consists in defining and grouping logically the functional components together with their interfaces and relationships; and then to map the logical structure of the architectural model into a physical implementation based on a technology that can meet both the defined functionality and the technical requirements of the business.
Andrew Creamer (SFC, United States Army, West Point, NY, USA): Software Architecture is a conglomeration of techniques used to orchestrate the development of software solutions for a stakeholder.
Joseph Cseh (Director, Technology & Innovation, Siemens Medical Solutions, Malvern, PA, USA): Software Architecture consists of a set of principles, standards, components and reference models applied to a software solution.
Daniel Alejandro Ramirez Cuervo (Developer, DATECSA, Cali, Colombia): The architecture of software is the way how we organize the structure of a program, with this we achieve an interaction and a Recognition between the different modules, doing this we can have a system with a common target
David Cuyler (Distinguished Member of Technical Staff, Sandia National Laboratories, Albuquerque NM USA zip 87185): The art and science of designing and erecting buildings. By simple substitution, Software Architecture [is] the art and science of designing and constructing software. Definition from The American Heritage Dictionary of the English Language, Third Edition copyright 1992 by Houghton Mifflin Company. Electronic version licensed from INSO Corporation, further reproduction and distribution restricted in accordance with the Copyright Law of the United States. All rights reserved.
Ramayya Darbhamulla (Software Engineering Manager, Boeing Australia Limited, Brisbane QLD Australia): Software Architecture is a subset of the overall system architecture and it defines the contribution of software to the overall functionality of the system, by defining the location, distribution and the interaction of the software components. System architecture on the other hand defines the physical, logical and information elements of the system which come together to realise a required set of functionality.
John Davidson (System Engineer, Northrop Grumman, San Diego CA, USA): I view software architecture as the structural relationship among the software objects or modules that implement the functions and meet the software requirements. Several software architectures could conceivably meet the same software requirements, perhaps some better than others. It is that part of the system architecture that is implemented with software, especially in hardware/software hybrid applications. Key components of software architecture are therefore: (1) the topology of the potential information flow among functional modules; (2) the child-parent relationships of the module hierarchy. An early example of how a software architecture might be designed or expressed is DeMarco's Data Flow Diagrams. (Structured Analysis -- System Specification, Tom De Marco, 1972, Yordon Press, Prentice-Hall, NJ, ISBN 013 854 3801 )
Rajib DasSharma (Senior Consultant, Deloitte & Touche, San Francisco, CA USA 94403): Software Architecture is an abstraction of the system showing all the components and their interactions from different perspective. Fusion of all the perspective gives a total view of the system. Moreover the architecture has scope of incorporating, adding or removing components as and when required with the changes in needs or technology without affecting the basic purpose or functionalities of the system as a whole.
Sanjay Debnath (Sr. Consulting Engineer, Intel, Bangalore, India): Software Architecture is the significant aspects of a software system that relates to the the critical functions, critical properties, structural organization and significant behavioural dimensions of a system. It is that set of information, from which even one element is missing would render the system incomprehensible at the highest as well as the lowest level of details. In its purest form, software architecture has no one form of representation.
Arun Devadiga (System Architect, Siemens, Bangalore, Karnataka, India): An architecture is the identification of different building blocks of the the system according to their responsibilities, external properties of these blocks and their interrelationships.
Brahim Djoudi (Software developer, GIAT Industries, Toulouse, France): The software architecture is the set of all the concepts (software components, frameworks, DB, paradigm, programming language, ...) used to "view" an entire software before it's designed.
Stephen Dowden (Allied Signal): Software Architecture is a reference model for defining how the chosen software tools are to be used.
Rahul Dutta (Software Architect / Team Leader, Parkers Edge Pty, Sydney NSW, Australia): Software Architecture enables us to clearly define various components and their interactions in the context of a whole system. It also is a tool to discover, predict and address issues related to performance, deployment, maintenance and product evolution. Rather than being a fixed blueprint for a system, Software Architecture is a fluid process that works as a feedback loop, constantly evolving and optimizing with the solution and changing with business needs.
Herries E (Chief Solution Architect, Optegra Sdn Bhd, Kuala Lumpur, Malaysia): Software Architecture is just a subset of the Solution Architecture. Every project must begin with a Solution Architecture (Blueprint) which all the stakeholders are agreed before it passed over to Software Architect to initial the design.
Software Architecture is inclusive of framework, design pattern / UML, Object Design, Data Architecture, Security, Integration & etc.
Kameshwar Eranki (Senior Product Manager, PeopleSoft Inc., Pleasanton, CA, USA): Software Architecture defines the fundamental elements, components and the framework in which the elements/components work and how they interact with each other to deliver the desired business expectations, meeting the cost performance criteria and defined constraints, and taking into account the requirements of scalability, reliability, usability, and maintainability factors.
Seckin Fidan (Software Engineer, TAI, Ankara, Turkey): Software architecture is a coherent network of collaborative components processing data and control flows which interface and cultivate resources so as to fulfil system requirements.
Dagoberto G. Flores-Lozano (Consultant, CRESER - Creativity & Services, Aguascalientes, AGS, Mexico): SW Architecture is a Summary (textual or Graphical) of a SW that handles DATA (or mechanical) objects, the EVENTS that trigger their transformation and the PROCESSES that transorm and recombine them.
Diego Fontdevila (Project Leader, Bank Société Générale Argentina, Buenos Aires, Argentina): Software Architecture is strategic design, for it is a high-level design activity, it needs to be addressed early in a project and it is of major importance to a software project.
Guy Fortin (Architect, Magellan Management Systems; Nortel, Ottawa): The set of software concepts and rules used to define a specific solution space. That is, a software architecture is not targeted towards solving a specific software problem, but rather it constrains the solution space from which all possible solutions are derived. A good architecture provides a flexible framework which can accommodate higher to unspecified problems in that domain; i.e., its future proof. Conversely, the bad architecture accommodates only the currently specific problems.
William Frauenhofer (Project Leader, Intrusion.com, San Diego CA, USA): Software Architecture is that set of specifications which form a comprehensive solution to a set of requirements. That solution is comprised of software elements, hardware elements, network elements, environmental elements and stated assumptions and constraints. A good architecture must operate on many levels and is the primary communication of the solution to the various, often disparate groups that must implement some piece of the solution. Foremost amongst all the things that an architecture must be is flexible. It must be adaptable to changes in requirements or implementation impediments and for that reason must be a living document.
Giovanni Godena (software engineer, J. Stefan Institute, Jamova 39, Ljubljana, Slovenia): Software architecture can be defined as the structuring paradigms, styles and patterns that describe, at different abstraction levels, corresponding to the life-cycle phase, our software systems in a given domain. Such paradigms, styles and patterns improve the quality of the software process and the integrity of the product, primarily by supporting systematic reuse, which can be defined as the use of engineering knowledge and artifacts from existing systems to build new ones. So, if we want to reuse, we must have artifacts from the domain in concern to reuse. These artifacts and their relations are defined by the architecture. Software architecture represents therefore the foundation for successful reuse.
Amit Goel (Software Architect, Delhi, India): Software Architect is a Strategist and Innovator. An Architect, fundamentally, is a strategist and innovator, and his role is to invent the future, think out-of-the-box, to make people uncomfortable with the status quo. More can be read from my blog at http://blog.agoel.com.
Sampathgiri Gopalakrishna (Director, Bigtec, Bangalore, India): Software Architecture is a set of answers to the following questions:
(1) What are the key design decisions that makes it possible to meet the current business requirements?
(2) What are the key design decisions that makes it possible to overcome the current constraints imposed on the system?
(3) How does the key design decisions take care of the known future business requirements?
(4) How does the key design decisions take care of business agility in general to handle unknown future requirements?
(5) What are the constraints imposed by the software system on business?
Karthicraja Gopalakrishnan (Technical Architect (EAI), Infosys Technologies Ltd., Mangalore, India): Software architecture is the specification of solution structure, behaviour of the structural elements, which are estimated and specified to meet the strategic business objectives.
Elan Govan (Manager, Software Engineering, Solectron Centum, Bangalore, India): The success of software is based on the Architecture, Development process and Methodology. The Software architecture analyses system requirements, assigns requirements to specific software components. The Software Architecture is based on the design methodology, using tools captures the top level control, data and input/output characteristics. The objects, their attributes and properties are modelled to arrive at a highly cohesive and low coupled optimal architecture.
Matthew Gream (Software Engineer, Jtec, Sydney, Australia): Personally, I like to look at software architecture as being something timeless. As a systems engineer, I'm concerned with the quality and life of a system. I think that architecture is really important in maximizing these, because it's about principles, concepts and integrity. By this, I mean that it covers the past: it frames the current architectural problem into a set of generalized forms, so it helps us to understand what class of problems we are looking at in the architecture. Then, it covers the present: it provides *the* architecture as a representation (e.g. diagrams, text, etc.) which describes all the various idioms, mechanisms, styles, etc. that are to be used. These solutions are tailored and reasoned for the now, from knowledge of the past. This includes weighing up all the options (e.g. cost tradeoffs). Finally, it addresses the future: it provides sufficient information about how to maintain architectural integrity during evolution. This may be in the form of idioms, mechanisms, patterns, but also stress tests. This would be a living repository of information, always under modification.
Brent Gulanowski (Independent Software Developer, Bored Astronaut Software, Toronto, ON, Canada): Software Architecture is, not a thing, but a study of a thing: a study of software, actual and idealized. Architectural analysis is an approach to studying software, one which focusses on how different parts of the software communicate with one another and, ultimately, with the hardware itself.
I believe that it is easy to forget - or at least forget the significance of - the fact that software, fundamentally, is a sequence of instructions to a processor or integrated circuit (or a number of them), and nothing else. We layer complexity into these instructions by abstracting them into groups, giving them names and interfaces, and creating a simulated environment where these functions, methods, modules and what-have-you can be made to communicate with one another: calling, messaging or transmitting over a socket or other virtual connection.
I think that the key to understanding the architecture of a program is to understand the organization and nature of all of the communications occurring in a program or set of programs, and additionally how those communications interact. Is the right information being sent? Is it structured correctly? Do different communications interfere with one another? Do they complement one another? Do they take one another for granted? The answers to these question determine the success of the software as a whole.
While the CPU is the subject of our instructions, the data which it operates on is the object, the essence of the computer's purpose. All of the instructions, functions, classes and modules we create serve the purpose of organizing the operations on the data in such a way to ensure that the data's usefulness is increased, by transforming its structure and presentation to something better understood. The architecture of a program is dedicated solely to ensuring these transformations happen correctly, reliably, and in a timely manner.
Every program has an architecture. The role of architectural analysis is to determine how one program's architecture is better than another's, first by assessing the program's successful operation (that is, at transforming data from some initial form to a new, more useful form, according to the requirements set out for it). It is my opinion that the study of software architecture will be most successful when it reveals the nature - logical, mathematical - relationships between the structure, make up and complexity of object data, the kinds of operations that can be performed on that data, and that of the software artifacts which are built to perform those operations.
Robert Hamill (Software Architect, Verizon): My thumbnail definition: Software architecture is a description of how the components of the system interact. If the conversation isn't killed by that astringent comment, I go on to explain. Components are software programs that can exist locally or remotely. There may be a controlling module - or not. The components are best treated as black boxes in the architectural view.
Atzmon Hen-tov (Chief Software Architect, Pontis, Herzelya, Israel): Architecture - The constraints defined by an activity for succeeding activities in a development process
Citation: "The architecture establishes constraints on downstream activities"
Documenting Software Architectures ISBN: 0201703726
Renso Höllhumer (Software Engineer, NJM, Southampton, PA, USA): The discipline and practice of defining computer software inter-component relationships and interactions with predefined, well established engineering principles that are part of formal design patterns that may be repeated and leveraged, to produce various levels (as needed) of abstraction to support enterprise level architecture reviews and designs.
Carl Herbst (Principal Systems Analyst, SPARTA, Inc., Arlington, VA, US): Software Architecture stands at the junction of mission planning and systems development. It is the collection of high-level design decisions that are required to facilitate this junction. At the completion of the software architecture phase of a project, budgets, schedules, critical performance factors, and risks should be defined to a required degree of confidence, with variability scoped to a required level. Typically, this involves a structural analysis of the implementation, verification of computability, verification of required hardware performance, and verification of required network performance. However, additional issues such as prove-out of suspect technology, human interaction factors, critical algorithm analysis, etc., may be required if they will impact the overall budget and schedule of the development process, or critical performance of the resulting system.
Richard Hubert (Director, Interactive Objects Software GmbH, http://www.io-software.com, Freiburg Germany): An architecture describes how well defined components are composed into a stylistically harmonious system that consolidates trade-offs. For an example see the Convergent Architecture and ArcStyler. (This is an update to my contribution several years ago which was missing hyperlink, example and citation information: http://www.io-software.com/publications, http://www.ArcStyler.com).
Alex Isidoro (Chief Architect, NY Life): Software architecture addresses the internal structure of a number of services (or functions) that satisfy a business need. Services are usually the externally visible and useful behavior of a number of cooperating objects. Objects can be layered from most generic (hence most reusable) to most specific.
Jim Jackson (Technical Architect, SM Consulting, Baltimore, MD, USA): When defined by its results, application architecture is successful when it:
- Defines the patterns of all entities within a 'system'. This accomplishes improved project estimation and allows for specialization of development staff.
- Defines specifically HOW each entity can interact with other entities and which entities cannot interact. This accomplishes loose coupling.
- Defines WHEN each entity can communicate and what information is transferred during a transactional communication. This provides state management and requirements coverage in all application scenarios.
An entity is the realization of an atomic unit of the business problem that can be logically and clearly separated by its composition, function or derivation.
When all three of these objectives are met, the application's architecture can be completely documented and translated into tangible components and base objects that enforce requirements within context.
Peter Jardine (Principal Engineer, Strategy & Architecture, CIO Infrastructure Services, Hosting & Internet, Telstra Corporation Limited, Brisbane, Qld., Australia): Software Architecture is the documentation and supporting models that describe the aesthetics, functions, performance, structures, components, impacts, and costs of a solution. It provides sufficient detail for a software construction company to build and commission a solution that satisfies the requirements.
Raju Javier (Software Engineer (R&D), NCR Corporations (I) Pvt. Ltd., Hyderabad, A.P., India): Its a style of Designing and Constructing, both Structures and Process Techniques with well defined relationships, required to build a complete Software Solution.
Praveen Joshi (Team Leader, LG Soft India , Bangalore, India): Software architecture is a framework, which defines set of rules or protocols to define the structure of the system. This also defines communication across the various software components. A well defined architecture makes life simpler and better quality. This also helps in translating any kind of functionality like small, large, simple or complex in to real implementation. A well -designed architecture allows maximum reuse of software components.
Stanley Joshua (QA Tester, Cognizant Technology Solutions, Chennai, TN, India): When individual components interact, there's an architecture in place. How these componens interact with each other constitute the definitions of architecture. Broad classification in phases are applicable to all software projects, (like design, and construction). These are the basic containers which contains individual elements. Specific projects need specific details which make the architecture hard to define in general. AS such, software architecture is project specific which simply can be described as the "interaction of various components that constitute a software product designed to perform a given task for which it was designed."
Moonesh Kachroo (Technical Manager, WNS, Gurgaon, Haryana, India): Software Architecture maybe defined as a progressive software construction to accommodate the ongoing needs (business or non-business ) and consequently contributing to the growth and maturity of an organization. It is more of a journey than a place to reach.
Venkata Rao Kadari (Software Architect and Consultant, HCL Perot Systems, Noida, UP, India): Software Architecture is a structured knowledge (a set of specifications) that guides architecture team to
- DEFINE the required capabilities (functional and technical) of the software application;
- DERIVE projections of the form (software application) as per the defined capabilities, meaning capturing both the behavioral and structural projections in each architectural view with aim to strenghten the software application structure;
- BUILD the form of the software application as per the derived projections;
- TEST the software application for the built in capabilities;
- IMPLEMENT the software application for delivering the required capabilities;
- MAINTAIN the software application for enhancing and delivering required capabilities.
However the definition of architecture is limited to DEFINE and DERIVE aspects in the expanding world of software architecture.
Kannan Kailas (Software Designer, Infosys Technologies Limited, Bangalore, India): Software Architecture is the top-down breakup of a business requirement into its relatively independent and stateless components as envisioned by an architect.
Joerg Kampmann (consultant): Software Architecture: A layered structure of different modules or processes in cooperation within a system.
Souvik Karak (Business Analyst, Mahindra British Telecom, Pune, India): Software Architecture is the framework of all components within similar or cross domains integrated to communicate with each other and produce desired results. A Software Architecture could be built at a Functional, Transactional, Code and Database level to fulfil the software design and development necessities.
Benedict Kariuki (Project Sourcing (HR), Tata Consultancy Services, Gurgaon, Haryana, India): Software architecture is an understanding in abstract of the different components in the software, how they will communicate and relate with each other and other preexisting software system, how they address the needs of the business from the past (problems and challenges faced by the business or end user), the present and also accommodate the future needs (seen and unforeseen). Together all this should enable the business or the end user of the software to achieve maximum satisfaction and needs to be met. In business the software architecture should give strategic competitive edge to the business, to the clients served by that business it should provide fulfilling value for being in the business relationship.
Vasudeva Rao Karyamapudi (Project Lead - Technical, VisaPro Services Pvt. Ltd., Hyderabad, India): Software Architecture defines various elements required to build software model from business logic using Systems, Software and Business Logic.
Harish Kashyap (Technical Architect, Infosys Technologies Ltd, Bangalore, India): Software Architecture is about taking decisions related to structure of the software by viewing it from different viewpoints e.g.: Information View, Deployment view, Computational View etc.
Jamal Kazmi (Senior Consultant, Experio Solutions, St. Louis, Missouri, USA): An abstract layout of the structure of a system. The layout has the following properties: (a) depicts the relationships between the system and the business that it supports; (b) consists of the high level components of the system; (c) depicts the relationships among the components of the system.
Jeff Keasler (Programmer, Lawrence Livermore National Laboratory, Livermore CA, USA): An architecture is an API and data structures that constrains and/or influences the way that a programmer structures their code and interacts with the underlying code system. For example, the UNIX socket API is a communications architecture. The MPI (Message passing interface) is also a communications architecture. C, PASCAL, and Prolog are language architectures. Device drivers provide an architecture for allowing an operating system to communicate with hardware resources. Architectures can be hierarchical; i.e. the MPI communication architecture has an ADI (abstract device interface) architecture on the back-end for communicating with hardware resources.
Kabir Khanna (Software Engineer, Inmotion Technologies Ltd., Fribourg, Switzerland): Software architecture is the way to represent designs of software systems in a way in which the users of these designs can understand each others design by use of unambiguous notational elements in the design.
Cris Kobryn (Chief Architect, MCI Systemhouse Corp., PO Box 2320, Fallbrook CA 92028): Consider the following definition of architecture from the OMG UML v. 1.2 specification: The organizational structure of a system. An architecture can be decomposed into parts that interact through interfaces, relationships that connect parts and constraints for assembling parts. In UML the parts that interact through interfaces include but are not limited to classes, components, and subsystems.
David Kowalski (System/Software Engineer, Ford Motor Company, Dearborn, MI, USA): Software architecture is the specific structured organization of system functional elements in a way that solves the many problems identified in system requirements when used with the defined hardware platform and configuration.
Dilip Krishna (Chief Architect): Software architecture is a discipline which is responsible for taking an initial concept with poorly defined requirements, and successively refining the concepts through many iterations, culminating in an established design that can be put through the discipline of a construction phase.
Murali Krishnamurthy (Software Project Manager, Kshema Technologies, Bangalore, Karnataka, India): Software architecture is a collection of structure or structures or objects comprising details such as its components, properties and their relationships along with its higher level deployment details.
Sundaresan Krishnamurthy (Principal Software Engineer, SAP Labs India, Bangalore, Karnataka, India): Software Architecture is a systematic representation of how a software is being built considering different aspects of the software and its stakeholders. It acts as a medium of communication between the various stake-holders. It is a blueprint of the model to be built.
Philippe Kruchten (Director of Process Development, Rational Software Corporation, Vancouver, B.C.): Software Architecture encompasses the significant decisions about
- the organization of a software system,
- the selection of the structural elements and their interfaces by which the system is composed together with - their behavior as specified in the collaboration among those elements,
- the composition of these elements into progressively larger subsystems,
- the architectural style that guides this organization, these elements and their interfaces, their collaborations, and their composition.
Software architecture is not only concerned with structure and behavior, but also with usage, functionality, performance, resilience, reuse, comprehensibility, economic and technological constraints and tradeoffs, and aesthetics. (With G. Booch and R. Reitman) Citation: Rational Unified Process 5.0, Rational, Cupertino, 1998; PBK, The Rational Unified Process--An Introduction, Addison-Wesley-Longman (1999).
Ashwin Kumar (Solutions Architect/Project Lead, Applabs, Hyderabad, India): I think of architecture as the abstract art of coupling philosophy with the construction of software.
Pazhani Kumar (Software Design Engineer, Alcatel Chennai, Chennai, TN, India 60032): Software architecture is the skeleton of the whole system to be developed. On the basis of the architecture only can we develop the entire software application system.
Siva Kumar (Project Manager, GR Systems, Coimbatore, India): The architecture of a system describes the gross structure and illustrates the top level designs integration. Also the architecture description includes high level design and will be as a bridge between the requirements and implementation.
P. Arul Kumaran (Senior Systems Analyst, American DataSource India Pvt. Ltd.): Software Architecture is the process of "Software Partitioning" which is the part of the "Solution Partitioning" or "Design" activity. Software Architecture is a design activity which provides "how well" (rather than "how") the process and data of the system can be integrated to a stable system. Software Architecture is the process of preparing the blue print (say modules) of the system which include components like computation, external interface, data interface, user interface, transport or network, system security etc. Software Architecture is the right work-activity to identify the modules and components of the system and aim for "High Reusability". Software Architecture activity can be divided into Software Partitioning (Partition the business processes to the granular level); Module Identification [a thought process activity] (Identify and pick out the similar steps or operations found across all processes; e.g. data manipulation); and Module Specifications (Write the modular and common specifications for the modules identified.)
Rick Ledford (consultant): A software architecture is (1) the part of a systems architecture that provides the structure (top-level (perhaps several layers) design elements (e.g., objects, interfaces)), infrastructure (system wide components, e.g., operating system, communications, standards), and dynamic behavior of the software content within a system, (2) a representation of (1) which may include information such as requirements, a mapping of architecture to requirements, pseudocode, code, usage documentation (e.g., use cases, user guides. A reusable pattern of (1) with system specific design elements missing (e.g., client-server "architecture").
Benjamin Lee (Software Programmer, IHS Solutions Sdn Bhd, Puchong Jaya, Selangor, Malaysia 47100): Software architecture is like unto a soccer team. It has this few elements in it that form the basic of architecture: Components (Players in the team), Structural arrangement (4-4-2 or 4-3-3), Inter-relationship between components (e.g.. LB pass to LW and then from LW to the striker), Direction flow of Input-Process-Output (tactics like passing or long ball or even counter attack) Set of rules and Principles (rules that governs the team)
William Licata (Senior Principal Systems Engineer, Raytheon, Roslyn, VA): Software Architecture is the highest level description of a software design that satisfies a set of software requirements, can be verified through functional analysis and provides adequate information to build a software development schedule and list of output products.
Agustín Leñero (Computer Engineering, ITESM, Mexico): The representation and definition of software components and its interactions
Ti Liu (Software Engineer, Beijing University og Technology, Beijing, China): Software architecture is a sketch map of a system. It describes the coarse grain components of the system. The connectors between these components are explicit described in a relatively detailed way.In the implementation phase, the coarse grain components are usually refined into several "actual components", e.g., "classes or objects". In the object-oriented field, the connectors are usually implemented as interfaces.
Citation: Software Architecture Perspective on an Emerging Discipline.
Robert J. Allen. A Formal Approach to Software Architecture. CMU-CS-97-144. Doctor Thesis
Alessandro Maccari (researcher, Nokia): The description of the set of components of a software system, of their interrelations, and coordination of the functions they execute and of the aims they perceive.
Anil Mahadev (Computer Science Student, Aptech Computer Education, Bangalore and Sikkim Manipal, Bangalore, India): The Thrust on how to develop like minded software for the masses and industry alike for the benefit of the Software World. To Integrate various techniques and concepts from various disciplines and applying them to the software.
A.V.(Mike) Maitreyan (Central Systems Administrator, Birmingham, AL): Putting together modules of software at different layers of the OSI model so as to work harmoniously with each other. The final layer at the top is the application layer which is presented to the application that is later accessed by users or other applications.
Nick Malik (blog) (Enterprise Architect, Microsoft, Redmond, WA, USA): An architecture is a description of a software system that is used to understand and communicate the interrelated components of that system. An architecture is composed of architectural models and supporting documents needed to communicate the constraints.
Franco Martinig (Editor, Methods and Tools, Vevey, Switzerland): The software architecture defines how different software components are assembled and how they communicate.
Jose Antonio Manuel (Solution Architect, Hewlett Packard, Madrid, Spain): Software architecture is a high-level description, based in models, of a set of software elements, describing their functionalities and relationships, as well as all constrains that could influence in their design, implementation and future evolution.
Charles Martin (Senior Software Architect, Sun Professional Services, New York, NY): A software architecture is the assignment of specific transformations that are applied to convert a purely logical model of a system that satisfies all functional requirements into a model of a system that satisfies both functional and non-functional requirements.
Adu Matthaeus (Systems Architect, Eikon, Centurion South Africa): A configurable skeleton of any kind of software beast on which you hang implementation specific muscle to make it live.
Arnold Mercado (Software Architect, Foreign Assisted Projects Office, Qeuzon City, Philippines): Software Architecture defines as the basic foundation and the layout of Software itself. It provides the essential methodology. Conceptual Design, Logical and Physical. Those Methodology are important to adopt the software you develop.
Paulo Merson (MTS, Software Engineering Institute, Pittsburgh, Pennsylvania, USA): The software architecture of a system is the structures of the system, which comprise software elements, relations among them, and the externally visible properties of those elements and relations. This definition is adapted from the one given by Bass et al. in "Software Architecture in Practice (2nd edition)". There are two slight differences between this definition and the one in that book:
(1) This one clearly states that the architecture has structures (plural);
(2) This one admits that relations may also have properties. Such flexibility is useful given that the terms "element" and "relation" are general and can represent different things in different structures of the system.
Amit Midha (Research Scholar, Carnegie Mellon University-West Coast Campus, Mountain View, CA): According to me,software architecture is the skeleton of any system, just as without a robust skeleton, a human ceases to survive, without a robust software architecture, a system ceases to survive.
Valko Yotov (Senior Technical Architect, Infosys):
Software architecture is design representation of the enterprise business domain. Software architecture is pre-defined set of design patterns, methods, views and all related design documents for representing complex enterprise business domain rules implemented in a set of interconnected software systems containing one more software applications. Mathematically software architecture is a set created by the union of business domain rules set and the software systems implementation set. In that context over engineering means the set of software systems implementation is bigger then the set of business domain rules. When the set of software systems implementation is smaller then the set of business domain rules, it means that there are some business process performed outside of the set of software systems implementation, this is the usual real life case or the architecture is under engineered e.g. there is not enough software systems implemented to cover the business domain. If part of the set of software systems implementation lies outside of the business domain rules set we have gold plating e.g. parts of the software systems developed are actually not needed by the business. Software architecture ALWAYS have related enterprise business domain. Without business domain we may have a framework, method or a library, but not software architecture, because the software architecture is design representation of the enterprise business domain. Software architect is a person which tries to reduce the complexity of the software architecture. SOA is means for decomposing (partitioning) complex software systems in smaller and simpler business service implementations. Complexity for spaghetti software architecture can be calculated as multiply for all systems, SOA implementation complexity can be calculated as simple addition. IT complexity can be calculated as a Sessions's Summation of Bird's Formulation of Glass's Law (Sessions, The IT Complexity Crisis: Danger and Opportunity, 2009). In simple terms if we have 3 systems each with 10 states, complexity for spaghetti one will be 10x10x10 = 1000, if we partition this SOA style complexity will be 10+10+10 = 30. (Sessions, 2006)
Citations: Sessions, R. (2006). A Better Path to Enterprise Architectures. MSDN . Sessions, R. (2009). The IT Complexity Crisis: Danger and Opportunity. ObjectWatch .
Putcha Narasimham (Founding Professor and Proprietor, Knowledge Enabler Systems, Hyderabad): I prefer to use most widely accepted definition. The definitions by Garlan and Perry April 1995 and ISO / IEC 42010:2007 are the BEST but they are not good enough. So, I am submitting my proposal and my reasons for the same. If the available space for it is not sufficient please add a link and give access to the reasons. Designs of software systems having distinctive aesthetic and utilitarian features as a whole, its subsystems, interfaces, and communications to serve a defined purpose in a specified environment. Environment--identified external entities and their interfaces with the software system. Reasons and explanation: Architecture is essentially a design (Architecture is design but not all design is architectural (http://en.wikipedia.org/wiki/Software_architecture) and that must be highlighted. What is design? See ISO 9000 definition of "design and development". It is a collective name given to a set of designs, existing or proposed. With reference to building architecture, architectue is invariably given a distinct name which applies collectively to a set of mutually similar high level designs. The designs -- and consequently its implementation -- must have distinctive aesthetic and utilitarian features to be called Arch of some type. Any non distinctive design will not qualify as arch. There can be no anonymous arch. Architecture applies to the system as a whole and its parts and interfaces within and across its boundaries that must be emphasised. That takes care of the necessary unity and coherence of the whole and its parts. In addition, aesthetic and utilitarian aspects must be taken care of and so they are added. Here aesthetic may not be visual but must exist conceptually. To serve a defined purpose is very vital and is missing in many other definitions. Without that architecture looses the very basis for its existence. Specified environment is the second vital concept that determines architecture and so it is added. The environment itself needs to be defined and cited (through concept maps as in ISO 9000) but it is not a part of the definition of architecture. And principles guiding its design and evolution is important but is not crucial for the definition of concept "architecture." That is a part of architectural practice or any engineering in general. So it is dropped in the proposed here.