A canonical form for the SOLID principles: the case of SRP
Having something like a canonical form to document design principles enables a better understanding of the structure of both the problem (context and constraints) and the solution.
Having something like a canonical form to document design principles enables a better understanding of the structure of both the problem (context and constraints) and the solution.
The evolution architect is the professional figure that build, maintain, share, revise, and promote a common vision for the software architecture, aligning it with strategic goals, principles, and practices.
If you ever find yourself designing something a certain way because you think it would be better that way, then you’re probably performing art and not design. Art is about self-expression. Design is selfless. (Jeff Harris, Matter) Some time ago I have written in this blog about the importance of measuring the quality of a…
I wrote this post for the Solid and Usable Software blog to reinforce some ideas: People are more important than processes (and tools); (I know this is an overrated quote from the Agile Manifesto, but in practice it is not so commonly applied…) Zero-Defects culture is possible; Zero-Defects products are the result of disciplined teams…
A quick search on Google Trends shows how the hype on UML has been decreased steadily since 2004. This trend appears to be stabilized nowadays on a pace of less than 20% the searches per month of what it was at its peak of maximum popularity. Several reasons can explain this situation, and not all…
The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog. Here’s an excerpt: 600 people reached the top of Mt. Everest in 2012. This blog got about 3,000 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 5 years to get…
Many certification programs that include software architecture titles in their offers certify the knowledge of an architect on specific technologies or frameworks (e.g. TOGAF). More difficult is to certify the general skills of professional software architects. This is a potential issue because technical skills cover only a small part of the body of knowledge required…
Recently I have partecipated in a discussion about the value of forward-reverse engineering of UML models. Undoubtedly generating code from models can save the developer to perform routine operations. Furthermore, the automatic synchronization of models and code can be really rewarding when the expected outcome is mainly to avoid the premature obsolescence of models with…
Testing in software industry is a typical activity that everyone involved recognizes as both mandatory in theory and so often neglected in practice. Many organizations continue to develop software without a minimal testing plan. Sometimes even without a clear/detailed project specification. The classical excuse for this “lack of materials” is that there are not enough…
The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here’s a high level summary of its overall blog health: The Blog-Health-o-Meter™ reads Minty-Fresh™. Crunchy numbers A Boeing 747-400 passenger jet can hold 416 passengers. This blog was viewed about 2,200 times in 2010. That’s about 5 full 747s. In…
People spend a lot of time debating about software quality but, very often, they speak in abstract terms. They don’t measure anything. Even worst, they make early design decisions in name of non-functional requirements (especially concerning perfomance issues). Without any measurement to support decisions, our intuition can be misleading most of the time. UML models…
A recurring challenge in the development of an object-oriented system is mapping the object model (in particular, the domain model) with a relational database. This is a well-known problem referred in literature with the “impedance mismatch” term [2,3]. It is a problem because we are trying to merge two paradigms which encourage very different programming…