Software architecture is a coherent

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.

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 the concept 

Source :
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.

No comments: