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...
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...
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:
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
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
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).
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.
Joaquin Miller (Chief Scientist-Objects/Models, MCI Systemhouse, Houston, Texas): I'll go with the ODP definition. It defines software architecture (architecture of a software system) as well as other kinds of architecture. Architecture (of a system): A set of rules to define the structure of a system and the interrelationships among its parts. Here I read "interrelationships" as interactions (although I'm confident that if ODP meant interactions, it would have said that.) Source: Reference Model of Open Distributed Processing, http://www.iso.ch.
Michael Morris (Systems Architect, PROS Energy Technologies, Houston TX): For me, definitions of nebulous things need to be short and sweet (fun) so I define "Software Architecture" (SA) as the "CAP" of a software project. It consists of the definitions of the "Cosmology", "Accountability", and "Personality" of a project. With that said, the term "Software Architecture" is fixed, and only the specifics of scope and individual flavor in interpreting these three components may vary to allow the many variations of approached. To further clarify these terms is to weaken the definition, since the terms are sufficiently meaningful to provide the guidance desired. Note: SA does not include the "GUTS" of a project ("GUIs", "Utilities", "Transports", "Security") or other details that are used to implement the project that "wears" the "CAP. (There are other parts of a project with other cute names, but we are not defining "Project" here.)
Sudha Mudigonda (Sr Consultant, Tanning Technology Corporation, Hyderabad AP, India): Software Architecture is the abstract description of the software at any stage of its life: pre-design to maintenance. The abstraction uses basic elements like components, interfaces and interactions. The granularity of the elements is at a desired level - although zoom-in/zoom-out of elements achieve higher or detailed levels of description. The elements can be super-imposed on various physical entities: networks, systems, database, etc. to further elucidate the system architecture. Software architecture is a characteristic of the system and finally is the basis of the behaviour of the system, most functional and non-functional.
Peter Mueller (Computer Scientist, Munich,Germany): First, I'd like to define software design: SW design is the activity to create a SW architecture. Inputs are (currently known) requirements. Steps include definition of design principles and managing design decisions. Output is a software architecture which fulfills the given requirements. Note that this definition can be used on various levels. It is applicable for the whole system, parts of the system, a component or module, or even a unit.
Now, SW architecture is defined to be a set of different views each of which focus on different aspects of the respective part (system, subsystem, component, unit). For example, structural, dynamic, process, deployment, or data models are all different views to an architecture which are used to "sell" the architecture for different needs.
Further, the structural view consists of components, connections, interfaces, etc. to describe the relationship between components. It also describes each component's responsibility.
Tom R. Mueller (Lucent Technologies): Architecture is the art of producing a specification for a system that when built will satisfy a client's need or the art of solving a problem. Software architecture is architecture that uses software in its solutions. Software architecture requires - a clear definition of the problem to be solved including identification of client and customer - a design for the solution, i.e. how the system is to work including structure principles, dynamic behavior, etc. - technological and economic justification - management planning (Source: AT&T Systems Architecture Review Board Course )
Naeem Muhammad (Doctoral Student, Katholieke Universiteit Leuven, Leuven, Belgium): Software architecture is a depiction of software system elements, their properties and interactions among them.
Shawn Mulvaney (Avionics Software Architect, Joint Strike Fighter, Lockheed Martin Tactical Aircraft Systems, Ft. Worth, Texas): A software system architecture is a set of implementation elements together with the mechanisms through which they collaborate to provide the system's required functionality. This is pretty close to Grady Booch's definition.
Ali Mustapha (Associate Software Engineer, AOS, Lahore, Pakistan): Software Architecture is basically high level view of how software modules interact with each other in order to share information.
Suresh Nair (Chief Architect, Max Ateev, New Delhi, India): Stakeholder Requirements are the “Why” for a project, explaining why the software product exists. The customer requirements and product functionalities are the ”What” of a project, detailing what has to be done. The software architecture is the “How”, explaining how technology will be assembled to meet the desires, expectations and constraints (both stated and contextual) on the software product.
James Naish (Project Manager and System Designer, FourSquare, Mars Inc., Basingstoke, United Kingdom): Software Architecture refers to the structure of, interaction between and physical location of program components. The architecture of a system is important in determining the scalability, efficiency and robustness of the system.
Prasad Narasimhan (Architect, Cognizant, Chennai, India): Architecture is a conceptual framework defined by the architect based on the operational goals and system level goals.
Vaidy Nathan (Chief Architect, Cognizant Technology Solutions, Teaneck NJ USA): Software Architecture is a descriptive model of a system in terms of its constituent components and interconnections with the model elements described at an abstraction level appropriate to the point-of-view of the model.
Tarek Negm (Analyst/Programmer, Vodafone, Reading State, England): Software Architecture is the method by which we judge the collection of views defining the system and the relationship between its components. This includes the design, logical, functional and implementation views.
Ayesha Nosher (Application Systems Analyst, ITS, Lahore,Pakistan): Working on RUP
Muralidhar NV (Consultant, HCL Technologies Ltd, Chennai, TN India): The structure of the system broken into components of a program, with inter-relationships, principles and guidelines governing the design, for constructing design components to applications and help understand evolution over time.
Sridhar Palacholla ( Lead Consultant, Wipro Technologies, Bangalore, India): Software Architecture is a conceptual vehicle, usually represented in the form of different views (Logical View, Layered view, Component View, Physical/Deployment View, Systems View ) that guides and governs the design, development, deployment and maintenance of the Software Application in order to meet the stated objectives, requirements (functional, non-functional) under a given set of constraints (such as cost, time, system, platform and users).
Venugopal Paladugu (e-Architect, Wipro, Hyderabad, India): Software Architecture is a part of an IT strategy which is driven by ever changing business strategies to effectively deliver software systems to provide time to market and competitive advantage to an organization.
Srinath Pamur (Project Architect, Tata Consultancy Services, Minneapolis, MN, USA): The formal description of a shared vision for an information technology platform and environment, organized in a way that supports reasoning about its structural properties. An architecture defines the data, processes, and components that make up the overall information system, and provides a plan from which products can be procured—and systems developed—that will work together to implement business solutions. Simply put, an architecture provides the direction to make technology work for the business.
Chetan Panchal (Technical Director, Globaltech, Ahmedabad Gujarat India): Software Architecture is set of decisions about behaviour and composition of a software system. These key decisions directly or indirectly affect at least one stakeholder in terms of at least one of these three: time, cost, and quality. This set of decisions also makes a periphery around system designers and developers creativity.
Kam Panchal (Software Specialist, InteQ India, Vadodara, India): Software architecture is a set of related components put together depicting the IPO (Input-Process-Output) concise and precise enough to address stakeholders perspective be it effort, cost, quality and similar parameters.
Raj Pandey (Senior+Consultantm, Deloitte Consulting, New York NY, USA): Software Architecture of a system is the blueprint of the various framework components that coordinate together to satisfy the design guidelines of a specific domain.
Rajesh Pandey (instructor, R.D. University, Jabalpur (M.P.) INDIA): Software architecture defines the physical and logical positioning of various parts of a system decomposed from a problem domain.
Sathyanarayana Panduranga (Software Design Engineer, eCapital Solutions, Bangalore, KA, India 560095): Architecture is the way to specify the structure of a software system to satisfy the functional and no-functional requirements of the system. Non functional requirements may include scalability, availability and manageability. Also the architecture depicts some compromises that might have been made in order to reduce cost, development time etc. Architecture represents the software and supporting hardware components of the system at as abstract entities.
Geert Pardon (Project leader, Landsbond van de Christelijke Mutualiteiten (LCM)/Alliance Nationale des Mutualités Chrétiennes (ANMC), Belgium): An architecture is a blueprint of a system, showing its internal components and the interactions between them, and also the interactions of the system with the world outside.
Nimesh Parmar (eConsulting Manager, Intiqua International, Singapore): Architecture and design are often confused with each other. Architecture answers the WHAT question of a system whereas design answers the HOW question. Therefore, architecture is associated with creative and lateral thinking in arriving at a model of what the customer thinks he needs. On the other hand, designing is associated with realizing the architects dream using the tools and technologies available at the designers disposal.
Anil Patnaik (Quality System Analyst, Celestial Labs Ltd, Hyderabad, AP, India): The real grouping of software design framework/s for the achievement of intelligent enabling of the planning mechanism set to execute the software system correctly throughout the project management sessions starting from project inception to project transition can be termed as software architecture.
Cary Peele (Program Manager, Dell, Austin, TX, USA): Software architecture is the definition of all interconnected components or modules that comprise a complete software system. The architecture can be visual or written and includes common component interface definitions, common services and utilities, data store strategies, communications modules, instrumentation strategies, and data driven strategies. It is the high level description of the organization of the overall system that supports requirements for reusability, reliability, extensibility, maintainability, performance, and scalability.
Melvin Perez (VP & Chief Software Engineer, CAM Informática, S. A., Santo Domingo, Dominican Republic): Organization of the significant structural elements of a software system, their interfaces, their relationships, and the rules governing their interaction.
Kgaugelo Phochana (Business/Systems Analysis, Posch Technologues, Pretoria, South Africa): Software Architecture is a model of the system that should or can be automated by software.
Organisations have their way of doing business and which will result a their way of doing business , grouping together as a system : Manual or Automated.
The organisation can decide to automate their system of which a way of automating might require some part of software and need to be modelled.
Eltjo Poort (Technical Manager, LogicaCMG, Amstelveen, Netherlands): This is my favourite definition of software architecture, it is by Chris Verhoef: "Architecture is that which is the hardest to change." He has formalised the definition somewhat in a recent article: "The software architecture of deployed software is determined by those aspects that are the hardest to change." This definition allows architects to respond to challenges that "architects are not needed" when systems's structures become more flexible: it takes the "structure" out of the definition. See also Martin Fowler's recent article in IEEE Software "Who Needs an Architect?" Fowler paraphrases Verhoef's definition, probably unknowingly (since Verhoef isn't credited). Citation: A.S. Klusener, R. Lammel, C. Verhoef, "Architectural modifications to deployed software", Science of Computer Programming 54 (2005) 143-211 Martin Fowler, "Who Needs an Architect", IEEE Software, July/August 2003.
Mark Poyhonen (Sr Staff Systems Architect, Lockheed Martin, Papillion NE): A software architecture is a description of the interfaces to the system or systems to or from which the software component performs. This definition attempts to satisfy the "nature" of any architecture, small or large, as well as any functionality, simple or complex, part of or wholly contained. The opposite would also hold true: No architecture exists without interfaces.
Ronna Prassel (Software Engineer, Perigee, LLC, Liverpool NY USA): Architecture refers to the creation of a fundamental framework that reflects the main components of a specification. Within this architecture, "design" details how this specification is achieved. Should the architecture change, it may require re-design of the system. Thus, design is dependent on architecture.
Delan Prajapati (Teaching Faculty, UTD Sagar, Sagar, M.P., India): Software architecture is a collection of interrelated components which works to achieve a specific goal. Actually software is a collection of programs where program is a collection of instructions which is written in any programming language. I think a good s/w architechture is based upon s/w decomposition where system is divided in different independent components which are interrelated.
Raju Prajapati (technical lead, R Systems Intl. Ltd.): Software Architecture is the respresntation of concept by visualizing the System based on system goals derived from the requirements.
Shankar Pratap (Software Design Engineer, ALCATEL Development Centre Chennai, Chennai, TN, India): SW Architecture is an “Analysis Pattern.” It is reusable at Analysis phase of SW Development. Architecture provides a Framework. There are other ways to provide or obtain Frameworks. SW Architecture represents different things for different people the above said is from a developers view. For the manager it is a design technique to cut down cost. A practically reusable architecture is an asset for him.
Software architecture is not only concerned with structure and
behavior, but also with usage, functionality, performance, resilience, reuse,
comprehensibility, economic and technology constraints and tradeoffs, and
Citation: (Rational Unidies Process, 2002)
Keith Pulfer (Graduate Student, Southern Adventist University, Collegedale TN USA): Software architecture is the overall structure inherent to all software which is composed of a set of components designed to satisfy the requirements of stakeholders. Its components provide external interfaces, which provide a means of communication between collaborating components, that are independent of language and internal implementation. A well-designed architecture allows maximum reuse of components.
Janis Putman (Technical Manager, Avaya, Inc., Basking Ridge NJ USA): RM-ODP is a powerful framework based on precise concepts derived from distributed processing developments and, as far as possible, on the use of formal description techniques for specification of the architecture. It contains the definition of the concepts and analytical framework for normalized description of (arbitrary) distributed processing systems. The following are taken directly from this, and are a part of a well-defined precise approach to an architectural specification. Architecture (of a system): A set of rules to define the structure of a system and the interrelationships between its parts.  The set of rules are defined in , and very extensive, based on well-defined viewpoints (a form of abstraction achieved using a selected set of concepts and structuring rules). This approach to architecture addresses interactions, behavior, components, composition, decomposition, refinement, and a host of distributed processing concerns.
 Open Distributed Processing Reference Model Part 2:
FOUNDATIONS, ISO IS-10746 AD2, ITU Recommendation X.90
 Open Distributed Processing Reference Model Part 3: ARCHITECTURE, ISO IS-107463, ITU Recommendation X.903
Danabal R (Process Specialist, Patni Computer System Ltd, Bloomington, Indiana, USA): Software Architecture is defined as full-fledged graphical representation of the system being developed with the system elements, dependent systems and their interactions.
Pradeep Ramanujam (Architect, FirstUsa, Newark DE, USA): Software architecture is an iterative framework between software components required to meet the stated objectives of the business, in terms of cost to develop/maintain the software components, time to market, and life expectancy of the components.
Vinothkumar Ramasamy (Software Developer, HCL, Chennai, TN, India): Software Architecture is a abstract idea which defines the technical, logical, physical, conceptual boundaries of a software solution within which the developers, infrastructure team, managers, etc. should work to achieve the solution goals. The architecture gives an idea of what is possible and what is not, how much creative a developer can get before breaking the system.
Raghuraman Ramasubbu(Senior Software Engineer, Mastech Corporation): Software architecture is a framework that provides the basis for manifestation of all software objects within an enterprise. Software architecture can take a form that has a strong conceptual integrity. This architecture can then be transformed into a stable physical architecture to support organization mission and objectives.
Thanigai Ranganathan (Software Architect, Infosys Technologies Ltd., Plano, TX, USA): Architecting a solution involves technology and design decision making process. Every decision leading to the architecture, however small, should be influenced by one or more business goal/driver or requirements from one or more stakeholders and constraints enforced the the environment. Some of these decisions have a large impact (reversing/amending will be very expensive in terms of cost & time) and are taken upfront and need to be taken by "architects" and some of these decisions have minimal impact (can be reversed or amended anytime may not be expensive in terms of cost & time) and may be taken by "developers".
Raghavendra Rao (Technical Architect, HP India, Bangalore, India): Software Architecture is a comprehensive description of the system - that addresses and is derived out of all of the system's functional requirements and quality attributes put forth by various stakeholders - and which contains goals, guidance, decisions and constraints that affect the system's design and execution lifetime.
Sandeep Rao (Technical Architect, Infosys Tech. Ltd., Bangalore, India): Software Architecture is a statement that addresses the key concerns of the software stakeholders. Stakeholders could be sponsors, investors, builders, approvers etc.
Sandeep Rao (Technical Architect, Infosys Tech. Ltd., Bangalore, India): Architecture is about minimizing corridors and maximizing corners. In any given amount of space if the 2D plan minimizes corridor utilization but provides more elbow room then it is a better architecture.
Think of some N people utilizing some square feet of space. The space allocation for corridors should be such that some amount of people, a number less than N, Nc can move about easily. Meanwhile those people who are not utilizing the corridors should be able to utilize the corners elegantly (N - Nc). If we observe bus design for long distance travel we find that Nc = 1, there will be a single entrance other side of the drivers seat and a long corridor that will be one person wide. If we observe intracity metro buses Nc could be as high as 3. Corridors are wide enough to hold more than one person at a time. This is to facilitate entry and exit in masses, where frequency of stops are higher. This is fine for transportation, building or civilization architecture.
Let us look at software architecture. If we are able to measure the number of bottlenecks in any architecture. And if we say that Arch A has 10 bottlenecks where as Arch B has only 5, then we know Arch B is better than Arch A.
The people in Software architecture are the requests, information flows. Corridors are the path thru the architecture that these people flow, Corners are the processing entities that process the information.
Manoj Rath (Software Engineer, IBM, Bangalore, KA, India): It is a blue print to design. Architecture lays a way out for most appropriate methodology or processes that needs to be followed for a certain business needs.
Eric Reuthe (Chief Technology Officer, Stroudwater Technologies, Portland, Maine USA): Software architecture is the outline or framework of a solution to a set of objectives (or needs) and constraints. However, the representation or description of an architecture is affected by context and perspective. From a business context and a management perspective, architecture describes how software components are assembled (connected and interact) to support an organization's objectives or strategy. From the perspective of the users or operators of the software, architecture describes what happens during the use of the system (runtime attributes). From the perspective of the developer or technical person, architecture describes run-time attributes, style, and design-time attributes. Style referring to the organization of the components--multi-tier, distributed, and so forth--and design-time referring to such attributes as modifiability, reusability, portability, etc. The level of detail to which an architecture is described is also driven not only by context and perspective, but also the desired attributes of the system. Management or software project sponsors typically do not desire a great level of detail, while those who are to implement the system often do. Operating in a context in which business objectives dictate that a system is temporary or an iterative approach is needed due to poor requirements definition, architectural detail can often be impeding. Where attributes such as security, performance or high-availability are of the greatest importance, a greater level of architecture detail will be required in order to properly perform analysis on the architectures. References: (1) Brooks. Mythical Man-Month, Addison-Wesley 1995 (anniversary edition). (2) Bass, Clements, and Kazman. Software Architecture in Practice, Addison-Wesley 1997.
John Reynolds (Columbia, South Carolina, USA): A Software Architecture is not a software architecture diagram...it is not an explanation of anything, and it is not a process. A Software Architecture is an idea...an abstract idea of how a software system is designed. If you understand the software architecture of a software system, then you understand how the "sum of its parts/components/entities" form the "whole." Understanding how each part works is trivial from an architectural point of view...rather, you need to understand the ROLE of each part in the big picture.
Lee Riemenschneider (Software Engineer, Delphi Automotive Systems, Kokomo IN, USA): Software architecture is the mapping from the problem space to the solution space, where the problem space is devoid of implementation concerns and the solution space is the sum total of all implementation concerns.
Jason Robbins (graduate student, Cal-Irvine): The term "software architecture" by itself has little specific meaning. People seem to use it to mean any high level diagram that is useful for communicating or analyzing some aspects of a software system. In this usage it is a synonym of the term "model". Most other definitions basically equate architecture with connected graphs, without a specific definition of "component" and "connector" they are not different from node and edge. Since different people are using this term to mean very different things, the community will never settle on a single definition that is specific enough to be useful and inclusive enough to capture current enthusiasm for the topic. Related terms such as "code architecture", "communication architecture", "process architecture", "security architecture", etc. can be given much more specific and useful definitions because each names the concern(s) that it addresses.
Michael Robinson (Software Manager, Deutsche Bank, London, England): I believe this definition was put forward by Bran Selic, now at IBM Rational. Nothing more is necessary (imho!): Software Architecture is that part of the system that provides the framework on which all other aspects of the system depend.
Hector Fabio Rodriguez Hermosa (Consultant, INTES, Asunción, DC, Paraguay): Software Architecture is an abstraction, related to the purpose of the Software, composed by technological, economic and sociocultural aspects, that can affect on the design and it uses a standard form of representation.
Ignacio Rodriguez (General Director, Socios Estrategicos SA de CV, Guadalajara, Mexico): I have been working for several years implementing and developing ERP (Enterprise Resource Planning) systems such as SAP, ORACLE, BAAN and others. In my opinion software architecture is the ability to define software components with certain behavior needed to help a human work. These components must have communication between each other and must be tested individually and all together. A modular approach must be followed to understand the problem more easily. It is possible to make an analogy with Bill of Materials (BOM) or Formulas to build products in a manufacturing company. The re-use of other components already tested in practice (libraries) must be considered in the definition of the architecture.
Ludwig Roser (Systems architect, MAN Roland AG, Augsburg, Germany): Software architecture is a classified structural abstraction of concrete software systems.
Anup S (Software Engineer, Trivandrum, Kerala, India): Designing the software on the basis of the requirements leads to a Software Architecture. A good architecture is that which is totally secured ,which can accomodate future changes with out affecting the software as a whole, and which has no redundant functionalities.
Rakesh Sabharwal (System Consultant, SES Systems Pte Ltd, Singapore): Software Architecture is a process of identifying significant building blocks of a application and defining relationship amongst them to meet the system requirement. It involves decision making under pre-defined or identified constraints of technology, system, commercial, cultural to name a few.
Manas Sahoo (System Architect, Diksha, Bangalore, India): In my view a Software Architecture is a base for creating new functionality, which is of logical and componentized in nature.
Ashwin Sankaran (Student, Computer Science, Mt. Pleasant, MI, USA): Software architecture can be defined as a combination of 3C's(component,connection,constraint) and rationale.
Shyju Sankaran (Senior Software Engineer, Affiliated Computer Services of India Ltd, Kochi, KL, India): Software Architecture is the art of converting business ideas into technical solution which will cater the future needs and changes using today's technology.
Sujan Sarkar (Project Manager, Pegasus Infocorp Pvt Ltd., Mumbai, MH, India): Software architecture is translation of end user's needs into developers requirements.
Ken Sayers (Object Development Architect, Chubb and Son, Inc., Warren, NJ): Software Architecture is the style and method used to design and construct software systems that support business requirements. Styles and methods vary by business problem domain so you end up with different domain specific architectures. Business requirements include enterprise information constraints, system hardware and software and viewports into software architecture the names information architecture, technical architecture, and application architecture, respectively.
Thad Scheer (Software Architect, Blueprint Technologies Inc, McLean VA USA): Is it just me or has anyone else noticed that the word "dependency" only appears once (besides this note) in all of these definitions? Abstract talk about "structure", "components", "whole system concept", etc., are fine but what about dependency discipline? Real software architects (not academics) spend more time fighting dependency issues (logical / physical) than anything else. As architects, we are trying to keep unwanted dependencies out of our software--that is the challenge. Of course, the ultimate goal is to realize the particular system concept that the buyer/stakeholder has envisioned. That goal, however, is best accomplished through dependency discipline. Everything else is just academic.
Rakesh Sharan (Sr. Tech Leader, KPIT Cummins, Pune, Maharashtra, India): Architecture is a process identification which consist compete description of a problem domain.
Vish Sharma (Enterprise Architect, Syrus Systems, Aurora, IL, USA): At the bird's eye level, software architecture is a plan and blueprint for executing a corporation's prioritized strategies for delivering its offerings to its customers.
Kirk Shrewsbury (Sr. Systems Architect, Vecna Technologies, Alexandria, VA, USA): An architecture is a set of constraints upon designs. A design is a useful engineering description of something to be built. The task of the chief architect is to establish the constraints upon designs and to review designs for adherence to the constraints and for quality of design decisions.
Atul Shrivastava (Lead Applications Architect, The Options Clearing Corporation, Chicago IL USA): Software Architecture provides means for reducing chaos in a software development process by (a) providing a forward-looking structural definition of the system in terms of hardware/software components, layers, tiers, connections, and service-contracts among components; (b) constraining the solution space; and (c) nudging the system design in the direction that would satisfy high-level technical requirements such as performance, usability, scalability, availability, and security.
Tim Simmons (Student, Southern Adventist University, Nashville TN USA): The architecture of a software system is its very essence. It is not merely a schematic showing interconnected components, but a description of those components and the way in which they interact. It is the foundation upon which the entire system is built.
Naresh Singhal (EMS Software Manager, Entrisphere, Santa Clara, CA, USA): Software architecture includes the framework around which a system is built, major components of the system and the interactions amongst these components.
Blake Southwood (Founder, Big Bear Technology, Redwood City, CA, USA): The definition of software architecture is hardware. Think of a group of functions that work together as a plug-in circuit board.
Nathan Sowatskey (Technical Leader, Cisco, Madrid, Spain): A software architecture is the means by which the structure of a system is organised so as to reduce the costs and complexity associated with developing and supporting it.
Shesham Srinivas (Communication Software Engineer, MediaRing.com Limited, Singapore 760768): Software Architecture is a layout of all the components showing the collaboration between these. These components comprise the need to be in, for the implementation of the functionality of the application domain. The architecture has two layers, software and hardware systems. It gives clarity if both are superimposed into one, after identifying each separately. Everyone has his/her own interpretation to definition. But a simple definition is one which is in simple language and as close as possible to real life scenario.
Richard Staehli (Guest Researcher, Simula Research Laboratory, Oslo, Norway): Software architecture is a decomposition of a solution into a set of design patterns. Each pattern describes problem requirements and a specification of the solution in terms of abstract objects and their interactions. There must always be a top-level pattern that solves the system requirements. A good architecture will simplify the problem through each pattern by dividing responsibilities among solution objects. A detailed architecture will elaborate on each novel object type by mapping its implementation to more fine-grained objects in other patterns. A good design pattern will provide analysis to justify that the solution satisfies its requirements. A good design pattern will also discuss design tradeoffs with respect to alternative solutions.
Jim Standley (Application Architect, MetLife, Clarks Summit PA, USA): I’ve been working on a definition my mom can understand! Many disciplines approach problem solving by dividing large problems into smaller parts that can be more easily understood on their own. Architecture defines how many parts, how big they are, how they divide responsibilities, how they communicate, etc. When you look inside a part, you often find it is composed of even more parts with another complete architecture.
Senthil Kumar Subramaniam (System Engineer, TCS, Denver Colorado USA, http://objectweb.cjb.net): Architecture is the process by which the customer requirements are met by designing a well defined infrastructure with hardware/software and considering the cost, schedule and existing systems.
Anand Sukumaran (Sr Manager - IT, Power Centre Private Limited, Chennai, TN, India 600002): Software Architecture is a description of a system, comprising of related and organized software and system objects, inter-working to provide desired results. This model also binds the business processes and the best practices of an organization, along with the various software and system objects, for optimum productivity.
Sebastian Surdu-Bob (Design Analyst, CMG - Wireless Data Solutions, Birmingham, UK): Once you've divided the whole into parts, the parts need names -- Aristotle. Software is no different, there is no other logic of creation. You can go as far as you like into details, fact is that this will only replicate time and time again the same old process.
Siddhartha Suripunj (Project Coordinator, NICE Society, Meerut, UP, India): Software Architecture is the diagramatic description of interaction among well defined modules and components of the software. The is the layout of each and every function unit of the software in which the colour of implementation is filled at the stage of coding.
Umar Syed (Quality Assurance Engineer, eCredit.com, Dedham, MA USA): A collection of various components and the methods of connection between them that will make up the larger system. The components can be broken down to the smallest size, thereby being able to conceive a "larger" architecture or a "detailed architecture" depending on the size of components visualized. A good architecture will optimize the use of components and their connections in both the larger and detail architecture that will create a quality product. Architecture design should start from the larger architecture and give this more emphasis than the detail. Ultimately an intelligent tradeoff can be done to produce a good system.
Jawahar Talluri (Software Engineer, Texas Utilities, Dallas, Texas): The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them. Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis.
Samuel Thadikonda (Sr. Consultant, The Boston Group, Northboro, MA, USA): Like any other Architecture, Software Architecture too inherits its definition from parent Architecture. When we architect a building, we visually represent the entire structure of it, either through drawings or through 3D models to give a comprehensive picture of the structure for the one who is looking for it, with a view of satisfying his needs in terms of Usability, Appearance, Feasibility, Scalability, by mostly using easily available reusable components -- BUILDING BLOCKS such as walls, doors, windows, mechanical fittings etc. This model obviously clearly modularize and relates each every tiny object proposed to be used in the structure with others. Software Architecture too has the same definition for it in abstract sense. Software Architecture is the visualisation of a Workable, Aesthetic and Scalable solution of an entire SYSTEM in question comprising of mostly software BUILDING BLOCKS, off the shelf or custom made components and plug-ins, with clear definition of inter relations among these communicating modules. A clean Software Architecture gives a solid foundation for the detailed design, where the thrust is the design of individual components to comply with the communication requirements laid out in the Architecture.
Christopher Thames (Chief Architect, World Fusion, Costa Mesa, California): I would say that most of the definitions that have already been suggested are correct. That is because there are common themes throughout almost all of the definitions: big vs. small, whole vs. piece, interface vs. implementation, abstraction vs. details. Taking all of these themes together, I suggest that the term software architecture is a relativism, not an absolute. Clearly, architecture is design, but not all design is architecture. Simply put, architecture is simply a matter of scale or ubiquity. Architecture is the aspect of a design that is large, encompassing, abstract, essential, broad, pervasive, and thematic. Yet which is architecture and which is not is always relative. Looking at an entire software system, its architecture includes the overall view of its significant parts, how they are organized, and how they interrelate, along both structural and functional dimensions. But if I describe the design of a single part, that is not the architecture of the system. However, the design of the part is the architecture of that part as if it were a whole system in and of itself -- which components usually are. I can describe an architecture of even the most detailed algorithm, as long as my point-of-view is only the algorithm and nothing else. Finally, a pervasive design element, not just a large one, also defines the architecture. For example, if a software system uses exception handling for all error conditions, this would be architectural, even though any given exception or the handling of it might be small compared to the other parts of the system. If an approach is used pervasively such that it produces a theme that influences structure or behavior throughout the system, then it clearly is part of the architecture.
Balakrishnan Thiruvadi (Technical Manager, HTC Global Services, Chennai, India): It is an art of defining, implementing, maintaining system and software environments that will assist and grow with business requirements.
Fran Thom (Consultant): Software architectures are a complete abstract representation of a system-wide solution. Software architectures contain collaborating software artifacts (packages, modules, components, classes and objects) which are essential both to the comprehension of the proposed solution (model) and the construction of the end product (executable). Software artifacts are defined in terms of their roles, responsibilities, connectivity, interfaces, behaviour and persistence with other artifacts within the same architecture. Software architectures also define the control of concurrency and eventual deployment of the software artifacts (especially within multi-threaded n-tier distributed solutions). Software architectures may contain in part, or in totality, axiomatic solutions - patterns, frameworks and components - to localized, or the whole problem. Software architectures may exhibit idiomatic constraints (technical and non-technical) peculiar to the problem-domain (implementation language, re-use criteria, safety-criticality, robustness, production time, cost and availability). This definition does presume the existence of (at least one) other architectural model, the physical architecture (hardware and its connectivity) upon which the software artifacts, are deployed. Basically, the software architecture is the solution to the problem from the software perspective, the physical architecture being the solution to the problem from the hardware perspective.
(Assistant Vice President, Polaris Software Lab Limited, Mumbai, MH, India):
Software Architecture is a way of developing software systems. It facilitates
migration from problem space (Requirements) to solution space (Working system).
This migration is achieved by representing the system from various focus and
perspectives, the focus being (as defined by Zachman) planner, owner, designer,
builder and sub-contractor and the perspectives being what, how, where, who,
when and why. The system needs to be represented at intersection of each view
and perspective and includes various actors, components and connectors. The
identification of actors, components at the highest level (planner's
perspective) results into a requirement statement or in other words a problem
statement and this needs to be refined to gradually to move to the soluyion
space i.e. "a working system". The representation of system at each
intersection between various focus and perspectives is the architecture of the
Citation: An enterprise architecture framework by Zachman
Sfiso Tshabalala (Consultant, Accenture, Johannesburg, South Africa): Software architecture is a result of decisions and politics that govern the selection and integration of technology into a unit (small or big) that serves a purpose. Normally this unit is captured in a drawing.
Sfiso Tshabalala (Systems analyst, Telkom SA, South Africa): All the visible system components that support a business process.
Rajashekar Tuppada (Technical Leader, Aztec Software Systems, Bangalore, KAR, India): Software Architecture is defined as assembling the Software components as a building blocks arriving at a sophisticated software system or product
Engin Uzuncaova (Software Engineer, Turkish Navy Research Center Command, Istanbul, Turkey): Architecture, in its minimal perspective, is the culmination of all the building principles inherent in a system. When it comes to software domain, these principles show us the direction in which we can proceed from the informal domain to the formal one. In other words, software architecture is the bridge between user-defined informal requirements and software-based formal abstractions. In that regard, software architecture harbors the greatest opportunity in all main software engineering subject areas for the next big leap towards being able to handle complexity involved in software in general.
Nagarjuna Vangala (Director, Project Delivery, Siana Informatics Pvt. Ltd. (Adea IDC), Hyderabad, AP, India): Software architecture identifies the core structures and their interactions of the application. Simply put, it gives a 30,000 ft view of the system that enables one to predict the system on aspects such as performance, reliability, longevity, maintainability, scalability, extendibility, deployability, & business viability.
Rambabu Vasupilli: Software Architecture is the framework containing resusable components on top of which the application is built. Let me tell you in detail. Suppose there is an application to be developed. so what is the architecture is this application? The architecture of this application is creating a ground for the application which can be also used as a ground for another similar application . This saves times and increases productivity.
Conjeevaram Venkatesh (Quality Manager, SAIC India, Bangalore, KA, India): Software architecture(SA) means a set of well defined process which goes in design, build and test of a software product/component in a broad sense. It can be treated as a blueprint which leads to the evolution of the software component/product.
Rudi Vernik (Principal Research Scientist, DSTO Australia Adelaid, SA, Australia): We argue that software architecture is an evolving set of core concepts, principles, patterns, guidelines and interfaces. Principles include Alexander's concept of architectural philosophy. They can also include key structural and dynamic characteristics including global control structures, distribution approach, protocols, and concept feature assignment. We believe that architecture should not be thought of in terms of a static set of standard descriptions that need to be produced. Rather, it should be though of as a customised set of developmental views based on key underlying domain, design, and resource information knowledge. Architecture should not be thought of in isolation; it should be considered in terms of the processes and approaches used in a project; i.e. there is no standard concept of architecture, just a set of characteristics that an architecture should provide in a particular context. We argue that architectures need to be Supporting Component-Based Development through Customised Architectural Views, Proceedings of Australian Workshop on Software Architecture, Melbourne, 24 Nov 98.
Mahesh Vinayagam (Senior Systems Engineer, Syntel, Chennai, India): Software Architecture is an overview of the system to be developed giving a skeletal picture of the system. It is a guideline and inspiration for the designer to work on the detailed design and concentrate on the implementation issues.
Umesh Wagle (Programmer Analyst, Arden Systems, Pune, Maharashtra, India): The set of specifications which determine the modules and objects of the application, interaction with all the modules. The specifications should be such that reusability and extensibility are given utmost importance.
John Walker (Systems Architect, Xerox, Webster NY 14626): Software architecture describes the blueprint for software development. It maps the system requirements into abstractions that models domain elements and their relationships using multiple views to address the structural, process, physical and development concerns.
Lei Wang (software engineering student, Bond U., Gold Coast,
Australia): What is Software Architecture? Some definitions make me feel a
little confused about structure and architecture. According to Bass’s
book, one software architecture can have many structures at the same time. So
what is the difference between software structure and software architecture?
English is not my first language, so I have to borrow a hand from dictionaries.
In Merriam Webster, structure means "the arrangement of particles or parts in a
substance or body" (I just picked one meaning which I think is more proper than
the others to my topic) while architecture is "art or science of building;
specifically the art or practice of designing and building structures"
according to MW. Architecture seems having much more things than structure. So
I believe that software architecture contains structure or structures. Many
people think structure and view can be used interchangeably. However, that
depends on how you understand the word "structure". I would rather make it
simpler to think it as only a module structure, which contains components and
connectors,, which is also the elements mentioned in Perry and Wolf’s
paper. Since software architecture is the art and science of building software
structure, it must have much more plentiful contents, such as rationale (which
is related to requirements and implementation), abstraction, architectural
style, overall structure, constraints, multiple views, multiple models, and so
on, it even includes representation and evaluation. I have to admit that I am a
total beginner to this discipline, so please forgive me if some idea seems
quite immature to you. However, I just want to make sure if I really understand
what I am doing now. Finally, I agree, in practice, as Bass said in his book,
the lack of an engraved definition will not prevent us from making good use of
Len Bass, Paul Clements, and Rick Kazman, Software Architecture in Practice. Addison-Wesley, 1998.
Dewayne Perry, Alexander L. Wolf. Foundations for the Study of Software Architecture. ACM SIGSOFT Software Engineering Notes, pp. 40-52, October 1992.
Sunil Warke (S/W Engineer, BNF Technology Inc., Daejeon, South Korea): Software Architecture is a process of visualizing the complete system in regards to the users and developers perspectives.
Conrad Whittaker (Engineer, SPAWAR SSC-SD, San Diego CA USA): What's the difference in a home built be an architect versus an engineer? The home built by the architect will fall down versus the people will demand that the home built by the engineer be torn down.
Robert Wilmes (American Express TRS): Software architecture is the codification of the abstractions which provide form and functionality among separate software entities. Through an architecture the system designer marks the foundation of a group of entities which reflect the economic constraints and societal benefits of the design. By minimizing the constraints and maximizing the benefit the designer attempts to maximize the economic value of the design and the best examples of this difference become codified for re-use by other designers.
Jeff Winter (Software Engineer): Specification of the elements which comprise a software system, their logical organization, and ways they collaborate to carry out the workings of the system. Substitute "application", "package", "product", or "library" for "system" if you like. Architecture is necessarily a series of abstractions, depicting details relevant to one perspective while suppressing details relevant to other perspectives, and therefore expressed as a series of complimentary views. To say what those views are, you must embrace some ones method or make up your own.
Jonathan Wong (Consultant, Jonathan & Associates, Hong Kong, China): Software architecture is set of rule(s), guideline(s), and/or principle(s) stated structurally and neatly for illustrating how set or sets of software entity, including system, subsystem, module, component, object, or any element (of data or code) interact and work together so that its outcome by conducting a project management, if implemented successfully, will function as stakeholder’s expectation or requirement on a flexible platform and over a durable time frame.
Eoin Woods (Software Architect, Investment Bank, London, UK): Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled.
Steve Wright (Consultant - Sr. Data Architect, Knowledge Management, Boston, MA): Architecture is the set of decisions that must be made at the enterprise level before specific applications are designed and built in order to provide conceptual integrity and sanity across the enterprise’s systems. Architecture includes a decomposition of the systems into separate orthogonal viewpoints along with the enforced rules that enable this clean decomposition and isolation of design viewpoints. This is done so functional (application requirements) and non-functional (system qualities) and other aspects of the application system may be defined and built by independent specialists in their specific field. An architecture not only divides the system, it also divides the roles and responsibilities of those who work with the system into separate organizational concerns and disciplines that are conceptually tractable and can be effectively managed.
Prasad Yalamanchi (Director, Software Development, Orillion USA, Houston TX USA): Architecture exists whenever parts relate to each other and the resulting whole. An architecture exists everywhere there is a whole made from parts because they make the whole in one possible way. ONLY point of views make Architectures desirable or less desirable.
Kishore Yallapragada (I.T. Architect, vMoksha Technologies, Bangalore KA, India): Architecture is an integration of technologies which are contemporary to the business process requirements on legacy, client-server, server-centric, or what have you. The constituents broadly include: business-interlinking, component-interfacing, application messaging, and the related.
Carl Zipperle (telecommunications analyst, Goldman Sachs, New York, NY, USA): As pointed out by engineering student Lei Wang, architecture’s dictionary definition reads, “art or science of building; specifically the art or practice of designing and building structures”. Art and science describe skilled labor and knowledge directed toward the creation of some object. Architecture, therefore, is no less about the creator than the created object. Pretty much without exception, the definitions offered up focus on the nature of the created object without considering those who create it. Architecture is very much about the discipline and knowledge required to coordinate human behavior and interaction toward the creation of some structure or machine. This is born out by the fact that computer systems architectures strongly reflect the divisions of labor that are inevitable when the complexity and huge scope of some project demand numerous distinct skills and more numerous practitioners of those skills. Much of what goes into developing architectures is focused on trying to get more effective results from these coordinated efforts. So software architecture is the skill and understanding that allows for the creation of successful systems. The created systems reflect that skill and understanding, or architecture.