Home
$10 Per MB or Less
ADT Security
Avaya
Bandwidth
Bell System
BlogForce
Bonded T1
Bonded T1 Lines
Business Solutions
Cable
Cellular
Cell Phone Search
Cisco
CLEC
Computers
Conference Calling
Contact Us
Dark Fiber
Dark Fiber Service
Data Center
Digital Signal 3
Digital Subscriber Line
Directory Submitter
DIRECTV
Dish Network
Domain Names
DS1
DS1 Providers
DS3 Providers
DS3 Service
DSL
DSL Providers
Ethernet
Explaining Bandwidth
Frame Relay
Freedom Voice
Geo Target
Gigabit Ethernet
Glossary
HDTV
HTML Tools
HughesNet
Integrated T1
Internet 101
Internet Resources
LAN
LEC
Link Exchange
Master Agents Wanted
Metro Ethernet
Mission Statement
Mitel
Mobile Phone
MPLS
Network Vendors
Nortel
OC3 Lines
Optical Fiber
Patch Panel
PBX
PC Repair Guide
Privacy Policy
Point to Point
Programming
Qwest
RBOC
References
Requirements Analysis
Resell Domain Names
Residential
River Offers
Router
Satellite 101
Satellite Internet
Satellite Providers
Satellite Solutions
SBI Testimonials
SEO
Shop Amazon
ShoreTel
Site Map
SOA
Software Architecture
Software Design
Software Testing
State Coverage
System Hosting
T1 Information
T1 Line
T1 News
T1 Pricing
T1 Providers
T3/DS3 Lines
T3 Providers
TCP/IP
Telecom Leads
Telecom Leads
Telecommunications
Telephone
Telephone Exchanges
Television
The Process
Toll Free
Unified Messaging
U.S.A.
Value Added Resellers
VAR's Wanted
Voice T1
VoIP
Verizon Fios
VoIP Reviews
VPN
WAN
Web Hosting
Webmasters Wanted
Web Site Submission
What is a T1 Line?
WiFi
WiMAX
Wireless Bandwidth
Wireless Solutions
WISP's
WordPress SEO
WWW
SEO Tools

Subscribe To This Site
XML RSS
Add to Google
Add to My Yahoo!
Add to My MSN
Add to Newsgator
Subscribe with Bloglines

 

Software Architecture - Software Structures, Software Programs and Systems!





Version 1.2, November 2002Copyright (C) 2000,2001,2002
Free Software Foundation, Inc. 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing
it is not allowed.

Software architecture

From Wikipedia, the free encyclopedia

Jump to: navigation, search
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 | Software quality assurance (SQA) | Project management |Documentation 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]

Contents

  • 1 Background
  • 2 History
  • 3 Describing architectures
    • 3.1 Architecture description languages
    • 3.2 Views
    • 3.3 Architecture frameworks
    • 3.4 The distinction from detailed design
  • 4 Examples of Architectural Styles / Patterns
  • 5 See also
  • 6 References
  • 7 Further reading
  • 8 External links

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.

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]

As a maturing discipline with no clear rules on the right way to architect a system, the action of architecting is still a composition 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].

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.

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.

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.

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.

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.

Architecture frameworks

  • 4+1
  • DODAF
  • MODAF
  • TOGAF
  • Zachman framework
  • Federal Enterprise Architecture
  • RM-ODP

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, 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.

Examples of Architectural Styles / Patterns

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

  • Blackboard
  • Client-server
  • Database-centric architecture
  • Distributed computing
  • Event Driven Architecture
  • Implicit invocation
  • Monolithic application
  • Peer-to-peer
  • Pipes and filters
  • Plugin
  • Representational State Transfer
  • Structured (module-based but usually monolithic within modules)
  • Software componentry (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
  • Service-oriented architecture
  • Search-oriented architecture
  • Space based architecture
  • Shared nothing architecture
  • Three-tier model

See also

  • Architecture Tradeoff Analysis Method (ATAM) - an architecture verification review method.
  • Dependency Structure Matrix
  • Enterprise architecture
  • Process architecture
  • Software antipatterns
  • Software architect
  • Software Architectural Model
  • Software design patterns
  • Software design
  • Software system
  • Standard data models
  • Systems architecture / Systems architect
  • Systems design
  • Technical 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.

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.

External links

  • Collection of software architecture definitions at Software Engineering Institute (SEI), Carnegie Mellon University (CMU)
  • Software architecture vs. software design: The Intension/Locality Hypothesis
  • Worldwide Institute of Software Architects (WWISA)
  • International Association of Software Architects (IASA)
  • SoftwareArchitecturePortal.org — website of IFIP Working Group 2.10 on Software Architecture
  • SoftwareArchitectures.com — independent resource of information on the discipline
  • Grady Booch's Handbook of Software Architecture
  • Microsoft Architecture Journal
Retrieved from "http://en.wikipedia.org/wiki/Software_architecture"


Acne - Addictions - Aerobics - Allowance - Auctions - Breast Cancer - Budgeting - Business - Computers - Cooking - Credit - Credit Cards - Currency Trading - Debt - Debt Consolidation - Dental - Depression - Diabetes - Diets - Domain Names - Downloads - Ebay - Ebooks - Ecommerce - Email Marketing - Exercise - Finance - Food - Free Stuff - Health - Healthy Eating - Heloc - Home Business - HTML - Insurance - Internet Marketing - Investing - Javascript - Loans - Lung Asbestos - Marketing - Medicine - Meditation - Money - Mortgage Refinance - MP3 - Network Marketing - Nutrition - Online Promotion - Payday Loans - Personal Finance - Positive Attitude - Pregnancy - Real Estate - Recipes - Savings - Search Engines - Self Help - Site Promotion - Skin Care - Small Business - Smoking - Software - Stocks Mutual Funds - Structured Settlements - Taxes - Technology - Video Conferencing - VOIP - Web Design - Web Development - Web Hosting - Weight Loss - Wifi - Yoga -


Advertising - Advice - Affiliate Programs - Animals - Arthritis - Articles - Airlines - Astrology - Aviation - Bars - Beauty - Beers - Blogging RSS - Book Marketing - Books - Build Muscle - Careers and Employment - Celebrities - Cholesterol - Communication - Cosmetic Surgery - Creativity - Credit Repair - Dating - Digital Cameras - Dog Training - Dogs - Drugs - Education - Ezine - Fashion and Style - Fishing - Fitness Equipment - Flowers - Football - Forex - Furniture - Gardening - Golf - Gps - Guitars - Hairloss - Hardwood Floors - Health and Fitness - Herbal - Home Equity Loans - Hotels - Ipod - Isp - Landscaping - Laser Hair Removal - Law - Life Insurance - Maps - Martial Arts - Music - Mutual Funds - Obesity - Paintball - Pets - Pilates - Property - Publishing - Sales Training - Schools - Software - Spirituality - Sports - Supplements - Tour and Travel - Travel - Vitamins - Wedding - Wrinkles - Wine and Spirits -




Call Toll Free 1.888.765.8301 or Submit a Service Request Below!
Please note that all fields followed by an asterisk must be filled in.
Company Name
Web Site
First Name*
E-mail Address*
Street Address*
City*
State/Prov*
Zip/Postal Code*
Country*
Business Phone*
Type of Service Requested
Colocation
Dark Fiber
Ethernet
Hardware
Internet DS1/T1
Internet DS3/T3
Integrated DS1/T1
LD DS1/T1
MPLS
Point to Point
POTS Lines
PRI
SIP Trunking
VoIP
VPN Solution
WiFI
WiMAX
Fixed Wireless (3G)
Other
Other Notes

Please enter the word that you see below.

  




Dish NetworkSatellite TVHughesNet Satellite Security




footer for software architecture page