Archive

November 2020

Browsing

This one will be short. Yesterday, while I was browsing a programming forum, I came across a statement like this: “… and currently, I am creating some neat abstractions if I need something more in the future…”. This is so wrong! And let me tell you why. Overengineering Overengineering in software development means creating something that is not needed. Something that brings overhead to the development process and inefficiency to the end product. An elementary example of overengineering is if all your applications data can be saved in a 10 line XML file, but you use a SQL database. Predicting…

Layered architecture is the first architectural pattern that we are going to explore. If you haven’t read my article about software architecture, I suggest you do it before continuing with this one. What is a layered architecture? Simply put, the layered architecture pattern’s main idea is to group and isolate system concerns while defining strict communication direction between them. Each group of related modules/classes we call layer. Different layers are encapsulated and depend on each other through abstraction and well-defined interfaces. Layers in this architecture pattern are stacked. The request direction is from the upper layers to the lower layers.…

While writing my series of posts about software architecture, I want to share with you a great book about the topic. The book is Software Architecture in practice 3rd edition by Len Bass, Paul Clements, and Rick Kazman. The book explains the entire process of software architecture design. Some of the topics you will learn are: What is a software architecture, and why it is important;Contexts of software architecture;What are quality attributes, and how to specify them;How to model quality attributes;Designing, implementing, and documenting software architecture;Evaluation of software architecture;Management and economic analysis; The book has a very academic approach, so…

In this series of posts, I will introduce you to the most popular software architecture types. But before we delve into the most common variants, let us talk about software architecture itself. What is software architecture? It is tough to write simply for such a complex topic as software architecture but let me try my best. A software system is made up of individual elements. Elements could be databases, application servers, message brokers, load balancers, etc. Each element has its properties and characteristics. Between these elements, there are relationships. The way we structure these elements and their relationships, we call…

And it is bad I am just writing to say that there will not be an article this week. Some very nasty flu/COVID-19 got me :(. I have not been tested yet because I should wait in a queue for 3-4 hours for a test, but I have all the mild symptoms. I am currently isolated and following the doctors’ recommendations. What bothers me most is the extreme fatigue and muscle pain. I feel like I am hit by a train. Anyway. I plan my next articles to be about the different software architectures. A series of articles on what…