Although the importance of architecture and the role of the architect in the digital-first initiatives we are living in today in the different business domains and industries, the architecture’s main vocabularies and terminologies are still not well understood due to non-acceptable widely used definitions and the different perspectives of each terminology.
In this article, I would like to deep dive into one of the fundamental vocabularies in the architecture which are around the models and modeling process, then explore the different perspectives and definitions of them. Moreover, highlight my perspectives and my agreement to the other experienced authors and architects. First, let us start with the model.
The software industry is considered a new industry compared to other old industries like automotive, banking, manufacturing, …etc, which makes professionals from different industries may not able to understand what is the role of the architect? what is the difference between architecture levels Why the architecture is important and when it is needed?
There is a lot of mix between the architecture roles, from enterprise architect, Business architect, data architect, system architect, infrastructure architect, software architect …etc? Moreover, there is a lot of misunderstanding about the different levels of architecture and design. Even some of the software engineers may not know the difference when each level is needed. I explained before the difference between the software architecture, software design, and software structure in this article, while it needs some extra illustration.
This article mainly will focus on why the architecture is important and when and what are the different levels from conceptual to the detailed design level from the software architecture perspective. So, let us start.
Software visualization is essential in the software development lifecycle to realize how the software will be conceptualized, visualized, structured, understood, and implemented. Software visualization can be defined as the art and science of generating visual representations for the various aspects of the software.
The purpose of the visualization is setting a common understanding of the system for all stakeholders, for example, business users, development team, architects, designers, …etc.
It is a part of Software architecture and design which usually needs problem-solving and planning. This may include both a low-level component, algorithm design, and a high-level architecture design. The image below can summarize the types of visualization in the software architecture, for example, if we would like to present a system of two components, it can be visualized by text visualization or graphical visualization. I think all of us can conclude that the software requirements specifications document can be a textual visualization of the system. I think yes but not only as part of this textual presentation should include the design decisions and may have pseudo code in some parts.
In this article, we will discuss different types of graphical visualization for the software that are commonly used in the software development lifecycle. Therefore, We will discuss the following diagrams and their usage:
Use Case Diagram
However, this article will not discuss how to draw these diagrams and each diagram modeling language as there are a lot of resources available online for describing the modeling and notation standards.
The Enterprise Architecture concept has been introduced since 1960 by Zachman. Although it is still not widely introduced for many organizations, It becomes an important topic in Information Technology community and many organizations are trying to understand how it is important to have Enterprise Architecture capability within the organization.
In this article, I will try to illustrate what is Enterprise Architecture, why it is important, and what are the existing practices for that? And how you can start?
In our daily tasks, personal or work related, we usually face a situation that we have a variety of alternatives and there is a need for a decision process to pick one of them and to decide what will be the best to choose with a certain level of confidence.
These decisions can range from changing your job, selecting a candidate for a job vacancy, choosing the right software development life cycle, buy vs build decision or others. The common between all of them that they are decisions and they need a decision process.
In this article, we will discuss the process of trade-off analysis, and an example of different alternatives we need to select one of them. Read more →
If you attended any of Software Architectures classes or read any books regarding the Software Architecture, it is common to have buildings Architecture as an analogy to understand the main concept of the Software Architecture. We will use the same here to understand what is the style and what is the pattern
An architectural style is characterized by the features that make a building or other structure notable and historically identifiable. A style may include such elements as form, a method of construction, building materials, and regional character. Most architecture can be classified as a chronology of styles which changes over time reflecting changing fashions, beliefs, and religions, or the emergence of new ideas, technology, or materials which make new styles possible.
Rails Framework is one of the greatest supporters for Rapid Application Development (RAD) which tends to abstract and simplify the web architecture so that Rails abstracts away the database through the Active Record which is the Object-relational mapping (ORM) for rails.
The Active Record is the layer of the system responsible for representing business data and logic. Active Record facilitates the creation and use of business objects whose data requires persistent storage to a database.
So, It helps in a way to manage all relations consistency and mapping in the class model without the need to write SQL statement to retrieve any data or the usage of CRUD (create, read, update, and delete) methods in general.Read more →
There is no doubt how the architecture is important to shape the solution and define its characteristics in the different architecture domains, and how this solution will be adaptable and dynamic to absorb new business needs and handle different stakeholders’ concerns.
In most architecture development processes, different decisions are taken in the different architecture domains. Architects may make different decisions, such as choosing a specific component, in the conceptual architecture and follow a specific architecture pattern.
Over the past 10-15 years, Software architecture has been widely spread in the software engineering community, To the extent that there are currently many career positions for software architect like Technical Architect and Chief Architect. Also, Architecture has involved in many different domains, for example, the architecture used to describe and refer to the internal structure of microprocessor and structure of machines or Network. For that matter, Trying to find one widely accepted definition for software architecture is not easy, and this issue has been introduced in many books when the authors start defining software architecture.
Interviewing is one of the most important and popular requirements elicitation and requirements discovering techniques. Therefore, before making any interview, we should prepare for it. The preparation of the interview is an important factor for increasing the chance of making a successful interview and successful business analysis.