The scale of software developments is getting bigger and bigger these days and it is very important to analyze and understand the overview as well as the detail items. How will the newly added function affect the current architecture? What is the most effective way to implement without any contradiction? This part looks complicated but does it include the necessary complication? Or it is supposed to be simple but somehow becoming unnecessarily complicated? And so on… There are so many things that the people, who are involved in designing and implementing the software, have to care.
Software development is interesting because if you do not look into the details together with the overall, the architecture will gradually collapse. However, the architecture will also collapse eventually if you only focus on the details because that will lead to an off-base implementation. It is very important to take a good balance of looking at the overview together with the details when you are working on a large scale software development. If you cannot see the woods for the trees, large scale software development will not be formulated.
There is software with hundreds and thousands of lines, and it can be millions and trillions of lines these days, which is a size that we could not imagine a while ago. The idyllic era of handwriting the overview designs, implementation analysis, and class diagrams are over. It is beyond that scale.
One Sunday afternoon, I was searching for a development tool and found this software, “Enterprise Architect”. This is a so-called modeling tool and it is a tool that can model any concept which is used in the world of software development.
(You can jump to the web page of Sparx System, by clicking the image above.)
Especially the class diagram creating function is amazing. I have tried this code reading function with the example code, which was like 30,000 lines written in C++ that I had with me, and it generated a class diagram with no issues. Previously, I was disappointed by many software that has these functions, so this result was impressive.
Comparing the class diagram and my design, I could confirm that my implementation was constructed as I designed from the output class diagram. I thought, “Oh yes…This is constructed as I wanted to design. How beautiful” and be confident.
This trial reminded me that “software development suppose to be something simply intellectual and fun”. In addition to that, this Enterprise Architect has a plugin function and can expand the features by myself. Therefore, I decided to use my day off to make an add-in for Enterprise Architect and enjoy making the world of large scale software development more creative. Maybe I was influenced by the people who had created this wonderful tool.