Lattix Architecture Blog

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
Friday, July 14, 2017 - 16:24 - 0 comment(s)
Refactoring is commonly applied to code, but refactoring can also be applied to other development artifacts like databases, UML models, and software architecture. Refactoring software architecture is particularly relevant because during development the architecture is constantly changing (sometimes for the worse; see our blog post on Architectural Erosion) and expanding. Software architecture refactoring should happen regularly during the development cycle. We have talked in the past on how... + continue reading