| Software Architecture |
Article Index for Software |
Website Links For Software |
Information AboutSoftware Architecture |
| CATEGORIES ABOUT SOFTWARE ARCHITECTURE | |
| software architecture | |
| software engineering | |
| information science | |
| software systemssoftware architecture | |
| software engineering | |
| information science | |
| software systems | |
| software engineering | |
| architecture | |
|
Software architecture or '''software systems architecture''' can best be thought of as a representation of an engineered (or To Be Engineered) Software System , and the Process and discipline for effectively implementing the Design (s) for such a system. Such a software system is generally part of a larger system encompassing Information and general and/or special purpose Computer Hardware . It is a representation because it is used to convey the governing those relationships. It is a process because a sequence of steps is prescribed to produce or change the architecture, and/or a design from that architecture, of a system within a Set of Constraints . It is a discipline because a Body of Knowledge or a general set of principles of (software) architecture is used to inform practitioners as to the most effective way to design the system within a set of Constraints . A Software architecture is primarily concerned with the external Interfaces among the system's software Entities , and between the system and its external Environment . BACKGROUND Prior to the advent of digital computers, the electronics and other engineering disciplines used the term ''system'' as it is still commonly used today. However, with the arrival of digital computers on the scene and the development of Software Engineering as a separate discipline, it was often necessary to distinguish between engineered hardware artifacts, software artifacts, and the combined artifacts. A programmable hardware artifact, or machine, that lacks its Software Program is impotent; even as a software artifact, or program, is equally impotent unless it can be used to alter the sequential states of a suitable (hardware) machine. However, a hardware machine and its software program can be designed to perform an almost illimitable number of abstract and physical tasks. Within the computer and software engineering disciplines (and, often, other engineering disciplines, such as communications), then, the term system came to be defined as containing all of the elements necessary (which generally includes both hardware and software) to perform a useful function. The hardware engineer or architect deals (more or less) exclusively with the hardware device; the software engineer or architect deals (more or less) exclusively with the software program; and the systems engineer is responsible for seeing that the software program is capable of properly running within the hardware device, and that the system composed of the two entities is capable of properly interacting with its external environment and performing its intended function. A software architecture, then, is an abstract representation of the software part of a system, capable of running on a special or general purpose computer. A good architecture may be viewed as a Partitioning scheme, or Algorithm , which partitions all of the system's present and foreseeable software requirements into a workable set of cleanly bounded subsystems with nothing left over. That is, it is a partitioning scheme which is Exclusive , Inclusive , and Exhaustive . A major purpose of the partitioning is to arrange the elements in the software subsystems so that there is a minimum of communications needed among them. In both software and hardware, a good subsystem tends to be seen to be a meaningful "object." Moreover, a good architecture provides for an easy mapping to the User 's requirements and the user's Validation / Acceptance Test s of the user's (software) Requirements . If everyone keeps to the religion, a mapping also exists from every least element to every requirement and test. A robust software architecture is said to be one that exhibits an optimal degree of Fault-tolerance , Backward Compatibility , Forward Compatibility , Extensibility , Reliability , Maintainability , Availability , Serviceability , Usability , and such other Ilities as necessary and/or desirable.. 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. 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 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 due to the greatly increased activity with ''very large'' software systems, e.g., the Boeing 777 aircraft uses in excess of 10 million lines of code just for the basic aircraft. That could represent anywhere from about 5,000 person-years to 50,000 person-years of effort, depending on how thoroughly the coding was controlled and tested. , which brought forward the concepts in Software Architecture, such as Components , connectors, styles and so on. UCI's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures. ADL Architecture Description Languages are used to describe Software Architecture. Now, there are several ADLs, such as 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, which are analogous to the different types of Blueprint s made in common Architecture . Some possible views are:
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. Some believe that UML will establish a standard for ''software architecture views''. 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. They point to the proliferation of Programming Language s 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 EXAMPLES There are many common ways of designing computer software modules and their communications, among them:
RELATED CONCEPTS There are also a number of concepts which have been used in software architecture including Software Ontology is often considered as a superset of software architecture, i.e. one ' Ontologist ' co-ordinates several 'architects', 'integrators', 'data modellers', and the Usability , Technical Documentation and Trainers . There may even be some control over Marketing and Sales presentations if the purpose of these is to determine who the products' users are, or to find out their Vocabulary or Values , to help the product reflect these. The Foundation Ontology presently being standardized is intended to simplify and constrain the work of ontologists to a degree, and will to that degree simplify many decisions in software architecture. TOOLS It’s important for the IT-sector to have good tools available in order to control different kinds of software architectures. Because the development of new software architecture tools is a relatively new subject nowadays, it's important to look at some functions and requirements of such a tool. These important requirements and functionalities are listed below:
Here are a couple of examples of Software architecture tools:
SEE ALSO
REFERENCES
EXTERNAL LINKS
|
|
|