Actions

Difference between revisions of "Architecture"

Line 4: Line 4:
  
  
'''What is Architecture?<ref>What is Architecture? [https://archimash.com/articles/what-is-architecture/]</ref>
+
'''What is Architecture?<ref>What is Architecture? [https://archimash.com/articles/what-is-architecture/]</ref>'''<br />
 
At a basic level, architecture is commonly defined as the process of planning, designing, and constructing buildings or structures. True architecture goes well beyond a mere building. Every architect seems to have a different definition of what architecture means to them. Architecture is not a natural phenomenon. It is a man-made phenomenon that stems from the thoughts and ideas of the human mind. Without the human mind, thoughts of the possibilities of what architecture could be would not exist.  
 
At a basic level, architecture is commonly defined as the process of planning, designing, and constructing buildings or structures. True architecture goes well beyond a mere building. Every architect seems to have a different definition of what architecture means to them. Architecture is not a natural phenomenon. It is a man-made phenomenon that stems from the thoughts and ideas of the human mind. Without the human mind, thoughts of the possibilities of what architecture could be would not exist.  
  
Line 28: Line 28:
  
  
 +
'''Software Architecture'''<br />
 +
Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, which project management can later use to extrapolate the tasks necessary to be executed by the teams and people involved.
 +
 +
Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of the software. For example, the systems that controlled the Space Shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results.<ref>What is Software Architecture? [https://en.wikipedia.org/wiki/Software_architecture]</ref>
 +
 +
Software architecture supports the analysis of system qualities when teams are making decisions about the system rather than after implementation, integration, or deployment. Whether designing a new system, evolving a successful system, or modernizing a legacy system, this timely analysis enables teams to determine whether the approaches they’ve chosen will yield an acceptable solution. An effective architecture serves as the conceptual glue that holds every phase of the project together for all of its stakeholders, enabling agility, time and cost savings, and early identification of design risks.
 +
 +
Building an effective architecture that enables rapid product delivery for today’s needs while also addressing long-term goals can prove challenging. Failing to identify, prioritize, and manage trade-offs among architecturally significant qualities often leads to project delays, costly rework, or worse.
 +
 +
An effective software architecture supported by agile architecture practices enables effective continuous system evolution. Such practices include documenting the architectural elements and interrelationships intended to achieve key qualities; repeatedly evaluating the architecture for fitness with respect to an organization’s business and mission goals, and analyzing the deployed system for conformance to an architecture. When performed correctly, these practices enable predictable product quality, fewer downstream problems, time and cost savings in integration and testing, and cost-effective system evolution.<ref>Understanding Software Architecture [https://www.sei.cmu.edu/our-work/software-architecture/]</ref>
 +
 +
 +
'''Architecture in Programming'''<br />
  
  

Revision as of 18:11, 22 September 2022

Architecture is the overall design of a building, structure, or system that unifies its components or elements into a coherent and functional whole,

  • A formal description of a system, or a detailed plan of the system at the component level, to guide its implementation (source: ISO/IEC 42010:2007).
  • The structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time


What is Architecture?[1]
At a basic level, architecture is commonly defined as the process of planning, designing, and constructing buildings or structures. True architecture goes well beyond a mere building. Every architect seems to have a different definition of what architecture means to them. Architecture is not a natural phenomenon. It is a man-made phenomenon that stems from the thoughts and ideas of the human mind. Without the human mind, thoughts of the possibilities of what architecture could be would not exist.

Every piece of architecture is created by the universal language of architecture. Architecture as art may make you feel in awe, inspired, or excited. Or, shocked, repulsed, or uninspired. Architecture as a political statement may make you feel activated, confronted or disturbed. Or inflamed, passionate, or aroused. Architecture as a social statement may make you feel connected, accepted, or included. Or separated, isolated or outcast.


Explaining Architecture[2]
Architecture is defined by Webster’s dictionary as an art or science of building or construction, or, the art and practice of designing and building structures, especially habitable ones. This simple definition explains some of the basic attributes of architecture. However, defining architecture simply as an art or science of building is inadequate; also, describing architecture from the point of human habitation, raises another question, what if the structure is not habitable, say, for example, a monument, a memorial; do they not still fall into the category of architecture?

There is another definition by Webster that states, architecture is the formation or construction resulting from or as if from a conscious act. Of course, buildings are planned structures and therefore they are consciously constructed. However, when an architect designs or plans certain elements, it could arise from pure imagination or unconscious motives too. Although architects consciously construct buildings, there is a common belief among artists and other creative people to attribute their ingenious masterpieces to some flashes of thoughts, originating from nowhere, (not knowing the exact cause of origin), that inspired them to make it a reality, that they are not being fully conscious of the act. Architecture is generally viewed in a broader way, not restricted to the construction of buildings. It includes many more factors and aspects that are related to construction, structure or object, or collective structures like urban designs and landscape architecture. This description views architecture as a purposive manipulation and modification of shapes, forms, and spaces in a given environment. Therefore, not only the construction is highlighted as architecture, but the surrounding environment in which it stands also gets emphasized. A simple, yet slightly abstract definition every student of architecture would recall is the one made by French architect Le Corbusier1 architecture is the masterly, correct, and magnificent play of forms under the light.

Let us define architecture this way: Architecture is the art and science of designing as well as building space, structure,  and surroundings with aesthetic features to accomplish some specific purpose that gives a sense of excitement to the viewers. This definition brings out a few fundamental facts in a multidisciplinary way. First, it is an art because an architect who creates is primarily an artist with a natural talent and aptitude for architecture, and expresses the creative ability in the artifact. Secondly, it is a science of designing and building space, structure,  or building. This process involves a combination of disciplines. It involves Math, Physics, and other related sciences and scientific methodologies. Thirdly, a structure or a building is not regarded as architecture if it does not pursue the processes of proper planning, diligent designing, making use of matching materials, displaying delicate decorations, and above all, being erected in an enticing environment. Fourthly, the structure should achieve its goal, that is, to serve the purpose for which it is built. This involves proper space management and functional utility. Finally, the constructed structure should have an aesthetic appeal to the senses to generate extra excitement. All of these involve a complex process; a good amount of cognition, research, and, planning on myriad levels. Thus, architecture points to the plan, process, pattern, and product. It is because architecture reveals not only a character or style of a particular construction but also tells the tale of the architect who designs and the stakeholder who commissions.


Computer Architecture
In computer engineering, computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems. The architecture of a system refers to its structure in terms of separately specified components of that system and their interrelationships. Some definitions of architecture define it as describing the capabilities and programming model of a computer but not a particular implementation. In other definitions, computer architecture involves instruction set architecture design, microarchitecture design, logic design, and implementation.[3]

Computer architecture is a specification describing how hardware and software technologies interact to create a computer platform or system. When we think of the word architecture, we think of building a house or a building. Keeping that same principle in mind, computer architecture involves building a computer and all that goes into a computer system. Computer architecture consists of three main categories.

  • System design – This includes all the hardware parts, such as CPU, data processors, multiprocessors, memory controllers, and direct memory access. This part is the actual computer system.

&Instruction set architecture – This includes the CPU’s functions and capabilities, the CPU’s programming language, data formats, processor register types, and instructions used by computer programmers. This part is the software that makes it run, such as Windows or Photoshop, or similar programs.

  • Microarchitecture – This defines the data processing and storage element or data paths and how they should be implemented into the instruction set architecture. These might include DVD storage devices or similar devices.

All these parts go together in a certain order and must be developed in a pattern so they will function correctly.[4]


Software Architecture
Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, which project management can later use to extrapolate the tasks necessary to be executed by the teams and people involved.

Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of the software. For example, the systems that controlled the Space Shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results.[5]

Software architecture supports the analysis of system qualities when teams are making decisions about the system rather than after implementation, integration, or deployment. Whether designing a new system, evolving a successful system, or modernizing a legacy system, this timely analysis enables teams to determine whether the approaches they’ve chosen will yield an acceptable solution. An effective architecture serves as the conceptual glue that holds every phase of the project together for all of its stakeholders, enabling agility, time and cost savings, and early identification of design risks.

Building an effective architecture that enables rapid product delivery for today’s needs while also addressing long-term goals can prove challenging. Failing to identify, prioritize, and manage trade-offs among architecturally significant qualities often leads to project delays, costly rework, or worse.

An effective software architecture supported by agile architecture practices enables effective continuous system evolution. Such practices include documenting the architectural elements and interrelationships intended to achieve key qualities; repeatedly evaluating the architecture for fitness with respect to an organization’s business and mission goals, and analyzing the deployed system for conformance to an architecture. When performed correctly, these practices enable predictable product quality, fewer downstream problems, time and cost savings in integration and testing, and cost-effective system evolution.[6]


Architecture in Programming


See Also

Architectural Risk
Architectural Style
Architectural Pattern
Architectural Principles
Enterprise Architecture
Architecture Description Language (ADL)
Architecture Development Method (ADM)
Service Oriented Architecture (SOA)
Software Architecture
The Open Group Architecture Framework (TOGAF)
Architecture-Driven Modernization


=References

  1. What is Architecture? [1]
  2. Explaining Architecture [2]
  3. What is Computer Architecture? [3]
  4. Understanding Computer Architecture [4]
  5. What is Software Architecture? [5]
  6. Understanding Software Architecture [6]