Lattix Architecture Blog

Friday, August 25, 2017 - 12:49 - 0 comment(s)
Introduction We write software to make our lives easier; to reduce the complexity and chaos. The need to reduce complexity is at the very center of software development. Unfortunately, we tend to mirror the complexity of the real world in our software and this leads to many problems. As Bruce Schneier in his essay A Plea for Simplicity: You can’t secure what you don’t understand said, “the worst enemy of software security is complexity.” In this blog post, we will talk about the importance... + continue reading
Monday, August 14, 2017 - 16:32 - 0 comment(s)
How do you achieve high velocity in software development? The main challenge to high velocity is tight coupling. Coupling is the degree of interdependence between software modules, or a measure of how closely connected two routines or modules are, or the strength of the relationships between modules. Let’s break down exactly what coupling is, the problems with tightly coupled software, and how to reduce coupling. What is Tight Coupling According to John Lakos in Large Scale C++ Software... + continue reading
Tuesday, August 8, 2017 - 13:23 - 0 comment(s)
The General Data Protection Regulation (GDPR) is an EU regulation on privacy protection that goes into effect in May 2018. GDPR applies not only to EU companies that process personal data on EU residents but also to companies not located in the EU. As Article 3 states, it is “applied to the processing of personal data of data subjects who are in the Union by a controller or processor not established in the Union.” Software architecture is an important part of GDPR compliance. An... + continue reading
Thursday, August 3, 2017 - 11:07 - 0 comment(s)
As we discussed in the previous blog post, cyclic dependencies degrade the quality of a software system, leaving it inflexible and difficult to manage. As the size of a software system grows, the importance of catching and fixing cyclic dependencies grows because the overall cost of developing and maintaining the system increases. How Cyclic Dependencies are Created Software systems usually start out with clean, well thought-out designs that don’t have bad dependencies (cyclic dependencies... + continue reading
Wednesday, July 26, 2017 - 15:13 - 0 comment(s)
In software development, divide and conquer is a design strategy where you recursively break down a problem into two or more sub-problems, until the problem becomes simple enough to be solved directly. This is where software components (packages, assemblies, modules, classes, etc.) come into play. Components break up large blocks of code into smaller, more manageable pieces. One rule of thumb is a component should only include closely related code. This makes deployment and maintenance easier... + continue reading