Stable Abstractions Principle is your friend to fight the design rigidity.

Robert C.Martin wrote an interesting article about a set of metrics that can be used to measure the quality of object-oriented design in terms of the interdependence between the subsystems of that design.

Here’s from the article what he said about the interdependence between modules:

What is it that makes a design rigid, fragile and difficult to reuse. It is the interdependence of the subsystems within that design. A design is rigid if it cannot be easily changed. Such rigidity is due to the fact that a single change to heavily interdependent software begins a cascade of changes in dependent modules. When the extent of that cascade of change cannot be predicted by the designers or maintainers the impact of the change cannot be estimated. This makes the cost of the change impossible to estimate. Managers, faced with such unpredictability, become reluctant to authorize changes. Thus the design becomes rigid.

Continue reading “Stable Abstractions Principle is your friend to fight the design rigidity.”

The GOF patterns resolve some OOP drawbacks: The Abstract Factory case study

The majority of developers have already heard about the design patterns, GOF(Gang Of Four) patterns are the most popularized, and each developer has his way to learn them , we can enumerate:

  • Reading a book.
  • From web sites.
  • From a collegue.
  • Doing a training.

Regardless of the method chose, we can learn by heart the patterns and spent hours to memorize their UML diagrams, but sometimes when we need to use them in a real project, it becomes more problematic. Continue reading “The GOF patterns resolve some OOP drawbacks: The Abstract Factory case study”

People who influenced the programming world series : Uncle Bob.

Robert C. Martin, known as  Uncle Bob has been a software professional since 1970 and an international software consultant since 1990. In the last 40 years, he has worked in various capacities on literally hundreds of software projects. In 2001, he initiated the meeting of the group that created Agile Software Development from Extreme Programming techniques and served as the first chairman of the Agile Alliance.  He is also a leading member of the Worldwide Software Craftsmanship Movement – Clean Code.

Uncle Bob  Contributions:

I- OOP Metrics:

In 1994 Robert “Uncle Bob” Martin proposed a group of object-oriented metrics that are popular until now. Those metrics, unlike other object-oriented ones don’t represent the full set of attributes to assess individual object-oriented design, they only focus on the relationship between packages in the project. Continue reading “People who influenced the programming world series : Uncle Bob.”

Pragmatic approach to learn a new programming language.

Each programmer has its way to learn a new programming language, and the difficulty to master it depends on many factors, we can enumerate:

  • The language itself.
  • The programmer experience.
  • The language community.
  • The existing language resources ( websites, books,…).

Here are some pragmatic steps to learn a new programming language: Continue reading “Pragmatic approach to learn a new programming language.”

45 years since its creation. The C language still very popular.

C is one of the most popular language around all the world, it was initially developed by Dennis Ritchie between 1969 and 1973 at AT&T Bell Labs. Many thousands of projects was developed using C since then. It’s used for all kinds of needs, we can enumerate OS, embedded applications, gaming development, image processing, word processing and database engines. Continue reading “45 years since its creation. The C language still very popular.”

1 year after launching the C++ best practices repository, the basic rules are the most popular.

Last year we launched the C++ Best Practices repository.  It’s an aggregator of some known C++ rules guides:

  • Google Style Guide.
  • jsf air vehicle c++ coding standards.
  • Effective Modern C++ from Scott Meyers.
  • POCO coding standards.

Continue reading “1 year after launching the C++ best practices repository, the basic rules are the most popular.”

Do the developers have less interest in design patterns or they are more pragmatic?

The majority of developers have already heard about the design patterns, GOF(Gang Of Four) patterns are the most popularized, and each developer has his way to learn them , we can enumerate:

  • Reading a book.
  • From web sites.
  • From a collegue.
  • Doing a training.

Regardless of the method chose, we can learn by heart the patterns and spent hours to memorize their UML diagrams, but when we need to use them in a real project, it becomes more problematic. And related to google trends the design patterns are not more popular as before.  Continue reading “Do the developers have less interest in design patterns or they are more pragmatic?”

A picture is worth a thousand words: Visualize your C/C++ Projects case study.

A picture is worth a thousand words” is an English idiom. It refers to the notion that a complex idea can be conveyed with just a single still image or that an image of a subject conveys its meaning or essence more effectively than a description does.

This idiom could also be applied in software programming. Indeed you can easilly understand a mini project when exploring its source code. However a big project become complex and not easy to understand.  In such cases it’s better to visualize the source code using graphs and diagrams to assist the developers understanding the source code. Continue reading “A picture is worth a thousand words: Visualize your C/C++ Projects case study.”

Make the most of the C/C++ static analysis tools

Static code analysis is the process of detecting flaws in software’s source code.  The static analysis tools are useful to detect common coding mistakes; here are some benefits from using them:

  • Make the code source more readable and maintainable.
  • Prevent unexpected behavior in execution.
  • Optimize the execution.
  • Make the code more secure.

Many C/C++ static analysis tools exist right there, each one focus on a specific area and has its advantages, we can enumerate:

  • CppCheck 
  • Clang Analyzer
  • Visual C++ Analyzer
  • VERA++
  • Goanna
  • Viva64
  • PCLint

Continue reading “Make the most of the C/C++ static analysis tools”