The Importance of Managing Complexity

Thursday, September 29, 2022

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 …

Building Technical Wealth

Thursday, September 08, 2022

Agile organizations find themselves constrained between the need for speed (velocity) and the need for quality. Technical debt is the enemy of velocity. Most companies don’t address technical debt until it slows or halts developer productivity. At that point, it can be very expensive to pay it down. One of the reasons technical debt is …

The Importance of Measuring Your Software Architectural Health

Thursday, August 04, 2022

How do you measure the “architectural health” of a software project? Since every software project is different, it is hard to come up with a single number that represents the architectural health of an entire project. Lattix Architect, therefore, provides a variety of architectural metrics. These metrics were chosen based on academic research on system architecture …

Decluttering a React Application

Thursday, June 09, 2022

We started working on our React application a few years ago. We started with Flux, but shifted to Redux when it became available. Over time, we moved from Redux-Form to Formik, from Moment to date-fns, from Victory to Nivo to name just a few. In fact, a significant part of our code now uses GraphQL …

software architecture

Architecture Erosion in Agile Development

Thursday, May 12, 2022

Software architecture erosion refers to the gap between the planned and actual architecture of a software system as observed in its implementation.1 Architecture erosion is a common and recurring problem faced by many agile development teams. Architecture erosion can result in lower quality, increased complexity, and harder-to-maintain software. At the beginning of a project, the source …

Apache log4j uses

How Lattix handled the Log4j security vulnerability

Thursday, March 03, 2022

“The log4j vulnerability is the most serious vulnerability I have seen in my decades-long career”, Jen Easterly US Cybersecurity and Infrastructure Security Agency Director Log4j is a Java-based logging utility part of the Apache logging services. This is a popular logging tool used in tens of thousands of software packages. Google estimates that 8% of Maven Central Repository was …

modular architecture

Modularity and Agile Architecture

Thursday, August 20, 2020

What is Agile Architecture? Architecture is an important aspect of agile software development efforts. It is critical to scaling agile to meet the needs of the business. “Agile architecture is a set of values and practices that support the active evolution of the design of a system, concurrent with the implementation of new business functionality”. The …

Automate API testing

Reasons NOT to Refactor your code

Thursday, February 20, 2020

Last week I wrote about the reasons to refactor code. Let us now look at some reasons why you shouldn’t refactor code. When dealing with legacy code there will always be a temptation to refactor the code to improve its understand-ability or performance. However, here are some reasons why it might be better to hold off: 1. …

android smartphone screen

Android Modularization

Wednesday, January 29, 2020

Out of the box, Android Studio provides one module: the app module. Because of this, most developers write their entire application in this one module. This is fine for small teams and small applications. But, as an application grows, more team members are added and the application becomes more complex, build times can increase – …

Motivation for Software Architecture Refactoring

Wednesday, January 15, 2020

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 …