Lattix Architecture Blog

Friday, October 28, 2016 - 13:25 - 0 comment(s)
Conway’s Law Almost 50 years ago, Mel Conway noticed how modularity in product design mimicked the structure of the organization that created it. More precisely he said, “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.” Even though Conway’s Law is not a real law in the sense of a law of physics, there is empirical evidence that supports this observation. A study by MacCormack, Carliss,... + continue reading
Tuesday, August 9, 2016 - 10:20 - 0 comment(s)
Developers know that a software system will become more complex and more highly coupled over time as additional changes are made. Often this calls for refactoring or reengineering the code to make it more maintainable. Reengineering will allow you to incorporate what has been learned about how the code should have been designed. This is the kind of learning that was the original basis for the term “technical debt.” So how should we go about reengineering code that remains vital and useful?... + continue reading
Thursday, July 7, 2016 - 11:45 - 0 comment(s)
The topsy-turvy legal struggle between Oracle and Google got me interested in the issues that have produced such divergent judgements and such passionate responses. Initially, it seemed that it was about patents, then it turned into a battle over copyrights, and then narrowed to fair use. And this battle isn’t over yet. As a programmer and an architect, I first tried to understand how the legal system thinks about copyright. So, I started thinking about books. A book is protected by... + continue reading
Tuesday, June 21, 2016 - 12:51 - 0 comment(s)
  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. You do not have the proper tests in place Do not waste time refactoring your code when you do not have the proper tests in place to make sure the code you... + continue reading
Thursday, June 16, 2016 - 17:45 - 0 comment(s)
1. Maintenance is easier Legacy code architecture erodes over time and becomes difficult to maintain. Legacy code bugs are harder to find and fix. Testing any changes in legacy code takes longer. Even small changes can inadvertently break the application because over time the design has been extended to accommodate new features and the code has become increasingly coupled. Refactoring code allows you to improve the architecture, reduce the coupling, and help the development team... + continue reading