FACTOID # 25: If you're tired of sitting in traffic on your way to work, move to North Dakota.
 
 Home   Encyclopedia   Statistics   States A-Z   Flags   Maps   FAQ   About 
   
 
WHAT'S NEW
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Software architecture
Software development process
Activities and steps
Requirements · Architecture
Design · Implementation
Testing · Deployment
Models
Agile · Cleanroom · Iterative · RAD
RUP · Spiral · Waterfall · XP · Scrum
Supporting disciplines
Configuration management
Documentation
Quality assurance (SQA)
Project management
User experience design


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 between them. The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.[1] This does not cite any references or sources. ... In sytems and software engineering, requirements analysis encompasses those tasks that go into determining the requirements of a new or altered system, taking account of the possibly conflicting requirements of the various stakeholders, such as users. ... Software design is the process that starts from a problem for which there is currently no acceptable (software) solution, and ends when such a solution has been created. ... Programming redirects here. ... Software testing is the process used to assess the quality of computer software. ... Software deployment is all of the activities that make a software system available for use. ... Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. ... The Cleanroom Software Engineering process is a software development process intended to produce software with a certifiable level of reliability. ... Iterative and Incremental development is a software development process developed in response to the weaknesses of the more traditional waterfall model. ... Rapid application development (RAD), is a software development process developed initially by James Martin in the 1980s. ... The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. ... The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. ... The waterfall model is a sequential software development model (a process for the creation of software) in which development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing (validation), integration, and maintenance. ... Extreme Programming (or XP) is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). ... For other uses, see Scrum. ... Software Configuration Management (SCM) is part of configuration management (CM). ... Software documentation or source code documentation is written text that accompanies computer software. ... Software Quality Assurance (SQA) consists of a means of monitoring the software engineering processes and methods used to ensure quality. ... Project Management is the discipline of organizing and managing resources (e. ... User experience design is a subset of the field of experience design which pertains to the creation of the architecture and interaction models which impact a users perception of a device or system. ... A software system is a system based on software forming part of a computer system (a combination of hardware and software). ...

Contents

Background

The field of computer science has come across problems associated with complexity since its formation.[2] Earlier problems of complexity were solved by developers by choosing the right data structures, developing algorithms, and by applying the concept of separation of concerns. Although the term “software architecture” is relatively new to the industry, the fundamental principles of the field have been applied sporadically by software engineering pioneers since mid 1980s. Early attempts to capture and explain software architecture of a system were imprecise and disorganized - often characterized by a set of box-and-line diagrams.[3] During the 1990’s there was a concentrated effort to define and codify fundamental aspects of the discipline. Initial sets of design patterns, styles, best practices, description languages, and formal logic were developed during that time. Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. ... In computer science, separation of concerns (SoC) is the process of breaking a program into distinct features that overlap in functionality as little as possible. ...


The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns. To date there is still no agreement on the precise definition of the term “software architecture”.[4] In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time. ...


As a maturing discipline with no clear rules on the right way to build a system, designing software architecture is still a mix of art and science. The “art” aspect of software architecture is because a commercial software system supports some aspect of a business or a mission. How a system supports key business drivers is described via scenarios as non-functional requirements of a system, also known as quality attributes, determine how a system will behave.[5] Every system is unique due to the nature of the business drivers it supports, as such the degree of quality attributes exhibited by a system such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and such other –ilities will vary with each implementation.[5]


To bring a software architecture user's perspective into the software architecture, it can be said that software architecture gives the direction to take steps and do the tasks involved in each such user's speciality area and interest e.g. the stake holders of software systems, the software developer, the software system operational support group, the software maintenance specialists, the deployer, the tester and also the business end user[citation needed]. In this sense software architecture is really the amalgamation of the multiple perspectives a system always embodies. The fact that those several different perspectives can be put together into a software architecture stands as the vindication of the need and justification of creation of software architecture before the software development in a project attains maturity.


History

The origin of software architecture as a concept was first identified in the research work of Edsger Dijkstra in 1968 and David Parnas in the early 1970s. The scientists emphasized that the structure of a software system matters and getting the structure right is critical[6]. The study of the field increased in popularity since the early 1990s with research work concentrating on architectural styles (patterns), architecture description languages, architecture documentation, and formal methods[7]. Edsger Dijkstra Edsger Wybe Dijkstra (Rotterdam, May 11, 1930 – Nuenen, August 6, 2002; IPA: ) was a Dutch computer scientist. ... David Lorge Parnas (born February 10, 1941) is an early pioneer of software engineering who developed the concept of module design which is the foundation of object oriented programming today. ... A pattern is a form, template, or model (or, more abstractly, a set of rules) which can be used to make or to generate things or parts of a thing, especially if the things that are generated have enough in common for the underlying pattern to be inferred or discerned...


Research institutions have played a prominent role in furthering software architecture as a discipline. Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in 1996, which brought forward the concepts in Software Architecture, such as components, connectors, styles and so on. The University of California, Irvine's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures. Software component representations: above the representation used in UML, below the representation commonly used by Microsofts COM objects. ... The University of California, Irvine is a public research university primarily situated in suburban Irvine, California, USA. Founded in 1965, it is one of ten University of California campuses and is commonly known as UCI or UC Irvine. ...


ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems is the first formal standard in the area of software architecture, and was recently adopted by ISO as ISO/IEC DIS 25961. IEEE 1471 is the short name for a standard formally known as This standard was recently accepted by ISO JTC1 as ISO/IEC DIS 25961. ... IEEE 1471 is the short name for a standard formally known as This standard was recently accepted by ISO JTC1 as ISO/IEC DIS 25961. ...


Describing architectures

Architecture description languages

Architecture description languages (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including Wright (developed by Carnegie Mellon), Acme (developed by Carnegie Mellon), xADL (developed by UCI), Darwin (developed by Imperial College London), DAOP-ADL (developed by University of Málaga). Common elements of an ADL are component, connector and configuration. Architecture Description Languages (ADLs) are used to describe software architectures. ... In software architecture, Wright is an architecture description language developed at Carnegie Mellon University. ... The introduction to this article provides insufficient context for those unfamiliar with the subject matter. ... Affiliations Russell Group Association of MBAs IDEA League Association of Commonwealth Universities Golden Triangle Oak Ridge Associated Universities Nobel laureates 14 Website http://www. ... Software component representations: above the representation used in UML, below the representation commonly used by Microsofts COM objects. ...


Views

Software architecture is commonly organized in views[8], which are analogous to the different types of blueprints made in building architecture. Within the ontology established by ANSI/IEEE 1471-2000, views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns. For other uses, see Blueprint (disambiguation). ... This article is about building architecture. ... IEEE 1471 is the short name for a standard formally known as This standard was recently accepted by ISO JTC1 as ISO/IEC DIS 25961. ...


Some possible views (actually, viewpoints in the 1471 ontology) are:

  • Functional/logic view
  • Code view
  • Development/structural view
  • Concurrency/process/thread view
  • Physical/deployment view
  • User action/feedback view

Several languages for describing software architectures have been devised, but no consensus has yet been reached on which symbol-set and view-system should be adopted. The UML was established as a standard "to model systems (and not just software)," and thus applies to views about software architecture. Others believe that effective development of software relies on understanding unique constraints of each problem, and so universal notations are doomed because each provides a notational bias that necessarily makes the notation useless or dangerous for some set of tasks[citation needed]. They point to the proliferation of programming languages and a succession of failed attempts to impose a single 'universal language' on programmers, as proof that software thrives on diversity and not on standards. In the field of software engineering, the Unified Modeling Language (UML) is a standardized specification language for object modeling. ... “Standard” redirects here. ... Notational bias is a form of cultural bias that is incurred when the available notation to describe something introduces a bias in our ability to approach it. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ...


Architecture frameworks

The U.S. Department of Defense Architecture Framework (DoDAF) is a framework for development of a systems architecture or Enterprise architecture (EA). ... The UK Ministry of Defence Architectural Framework (MODAF) defines a standardised way of conducting Enterprise Architecture and provides a means to model, understand, analyze and specify Capabilities, Systems, Systems of Systems, and Business Processes. ... To meet Wikipedias quality standards and make it easier to understand, this article or section may require cleanup. ... The Zachman Framework is a framework for enterprise architecture which provides a formal and highly structured way of defining an enterprise. ... The Federal Enterprise Architecture is an Office of Management and Budget initiative to comply with the Clinger-Cohen Act and provide a common methodology for information technology acquisition in the U. S. federal government. ... RM-ODP is the common name for the Open Distributed Processing Reference Model, and is also known as ISO 10746. ... Service-oriented Modeling (SOM) to produce a Service-oriented Architecture (SOA) is referred to as SOMA (Service-oriented Modeling and Architecture). ...

The distinction from detailed design

Software architecture, also described as strategic design, is an activity concerned with global design constraints, such as programming paradigms, architectural styles, component-based software engineering standards, design principles, and law-governed regularities. Detailed design, also described as tactical design, is an activity concerned with local design constraints, such as design patterns, architectural patterns, programming idioms, and refactorings. According to the Intension/Locality Hypothesis, the distinction between strategic and tactical design is defined by the Locality Criterion, according to which a statement about software design is non-local if and only if a program that satisfies it can be expanded into a program which does not. For example, the Client-Server style is architectural (strategic) because a program that is built by this principle can be expanded into a program which is not client server; for example, by adding peer-to-peer nodes. A programming paradigm is a paradigmatic style of programming (compare with a methodology which is a paradigmatic style of doing software engineering). ... It has been suggested that this article or section be merged with Software componentry. ... This article is about the book by Gamma et al. ... Architectural patterns are software patterns that offer well-established solutions to architectural problems in software engineering. ... Client/Server is a network application architecture which separates the client (usually the graphical user interface) from the server. ... A peer-to-peer (or P2P) computer network is a network that relies on the computing power and bandwidth of the participants in the network rather than concentrating it in a relatively few servers. ...


Examples of Architectural Styles / Patterns

There are many common ways of designing computer software modules and their communications, among them:

In AI, Blackboard systems are comprised of a central global workspace, and a collection of software agents which act upon it. ... Client/Server is a network application architecture which separates the client (usually the graphical user interface) from the server. ... Database-centric architecture is a term that has several distinct meanings, all of which relate to software architectures in which databases play a crucial role. ... Distributed computing is a method of computer processing in which different parts of a program are run simultaneously on two or more computers that are communicating with each other over a network. ... This article or section does not cite its references or sources. ... Implicit invocation is used by some authors for a style of software architecture in which a system is structured around event handling, using a form of callback. ... This the SOA terminology for describing an application thats fine grained as opposed to coarse grained. ... A peer-to-peer (or P2P) computer network is a network that relies on the computing power and bandwidth of the participants in the network rather than concentrating it in a relatively few servers. ... In software engineering, a pipeline consisting of chain of processes or other data processing entities, arranged so that the output of each element of the chain is the input of the of the next one. ... For other uses, see Plug in. ... “REST” redirects here. ... Structured Systems Analysis and Design Methodology (SSADM) is a systems approach to the analysis and design of information systems. ... It has been suggested that this article or section be merged with Component-based software engineering. ... Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design applications and computer programs. ... Service Oriented Architecture (SOA) is an architectural style that guides all aspects of creating and using business processes, packaged as services, throughout their lifecycle, as well as defining and provisioning the IT infrastructure that allows different applications to exchange data and participate in business processes regardless of the operating systems... The use of search engine technology as the main integration component in an information system. ... Space-Based Architecture (SBA) is a software architecture pattern for achieving linear scalability of stateful, high-performance applications using the tuple space paradigm. ... A shared nothing architecture is a distributed database architecture without a single point of failure. ... It has been suggested that this article or section be merged with Multitier architecture. ...

See also

ATAM stands for Architecture Tradeoff Analysis Method. ... A Dependency Structure Matrix, or DSM (also referred to as Design Structure Matrix, Problem Solving Matrix (PSM), incidence matrix, N-square matrix or Design Precedence Matrix), is a compact, matrix representation of a system or project. ... This article is about Enterprise Architecture. ... Process architecture is the structural design of general process systems and applies to fields such as computers (software, hardware, networks, etc. ... In computer science, anti-patterns are problems that happen frequently in computer programming and that should be avoided in good practice. ... Software Architect is a general term that may refer to a broad range of roles. ... An Architectural Model (in Software) is a rich and rigorous diagram, creating using available standards, in which the primary concern is to illustrate a specific set of tradeoffs inherent in the structure and design of a system or ecosystem. ... In software engineering, design patterns are standard solutions to common problems in software design. ... Software design is the process that starts from a problem for which there is currently no acceptable (software) solution, and ends when such a solution has been created. ... A software system is a system based on software forming part of a computer system (a combination of hardware and software). ... A standard data model is a data model that is widely applied in some industry, and shared amongst competitors to some degree. ... A system architecture or systems architecture is the conceptual design or set of relations between the parts of a system. ... The systems architect is responsible for: Interfacing with the user(s) and sponsor(s) and all other stakeholders in order to determine their (evolving) needs. ... Systems design is the process or art of defining the hardware and software architecture, components, modules, interfaces, and data for a computer system to satisfy specified requirements. ... Technical architecture refers to the structured process of designing and building software architecture, with focus on interaction with software and hardware developers. ... Service-oriented Modeling (SOM) to produce a Service-oriented Architecture (SOA) is referred to as SOMA (Service-oriented Modeling and Architecture). ...

References

  1. ^ Bass, Len; Paul Clements, Rick Kazman (2003). Software Architecture In Practice, Second Edition. Boston: Addison-Wesley, p. 21-24. ISBN 0-321-15495-9. 
  2. ^ University of Waterloo (2006). A Very Brief History of Computer Science. Retrieved on 2006-09-23.
  3. ^ IEEE Transactions on Software Engineering (2006). Introduction to the Special Issue on Software Architecture. Retrieved on 2006-09-23.
  4. ^ SEI (2006). How do you define Software Architecture?. Retrieved on 2006-09-23.
  5. ^ a b SoftwareArchitectures.com (2006). Intro to Software Quality Attributes. Retrieved on 2006-09-23.
  6. ^ SEI (2006). Origins of Software Architecture Study. Retrieved on 2006-09-25.
  7. ^ Garlan & Shaw (1994). An Introduction to Software Architecture. Retrieved on 2006-09-25.
  8. ^ Clements, Paul; Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, Judith Stafford (2003). Documenting Software Architectures: Views and Beyond. Boston: Addison-Wesley, pp. 13-15. ISBN 0-201-70372-6. 

Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 266th day of the year (267th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 266th day of the year (267th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 266th day of the year (267th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 266th day of the year (267th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 268th day of the year (269th in leap years) in the Gregorian calendar. ... Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ... is the 268th day of the year (269th in leap years) in the Gregorian calendar. ...

Further reading

  • Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice, Second Edition. Addison Wesley, Reading 5/9/2003 ISBN 0-321-15495-9 (This book, now in second edition, eloquently covers the fundamental concepts of the discipline. The theme is centered around achieving quality attributes of a system.)
  • Tony Shan and Winnie Hua (2006). Solution Architecting Mechanism. Proceedings of the 10th IEEE International EDOC Enterprise Computing Conference (EDOC 2006), October 2006, p23-32.
  • Garzás, Javier, and Piattini, Mario. An ontology for micro-architectural design knowledge, IEEE Software Magazine, Volume: 22, Issue: 2, March-April 2005. pp. 28 – 33.
  • Philippe Kruchten: Architectural Blueprints - the 4+1 View Model of Software Architecture. In: IEEE Software. 12 (6) November 1995, pp. 42-50 (also available online at the Rational website(PDF))
  • Amnon H. Eden, Rick Kazman. Architecture, Design, Implementation. On the distinction between architectural design and detailed design.
  • SOMF: Bell, Michael (2008). Service-Oriented Modeling: Service Analysis, Design, and Architecture. Wiley.

IEEE Software is an IEEE Computer Society practitioner-oriented magazine targetting software engineers and managers. ...

External links


  Results from FactBites:
 
Wikinfo | Software architecture (495 words)
Software architecture as a concept was touched upon already in the 1960s by (for example) Edsger Dijkstra, but has increased in popularity since the early 1990s, largely due to activity within Rational Software Corporation and within Microsoft.
Software architecture is commonly organised in views, which are analogous to the different types of blueprints made in common architecture.
Software ontology is often considered to be a superset of software architecture, i.e.
Software Architecture for Software-Intensive Systems (662 words)
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
Software architectures are created, cared for, promulgated, and nurtured by software architects.
An architecture is the primary carrier of a software system's quality attributes such as performance or reliability.
  More results at FactBites »

 
 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m