Recently, I have been asked to check and deploy a process for Design and Code review in many different projects. All projects already have this process in place either officially or un-officially. When I said process some Engineering managers said, do we really need this as a process? We are already doing it on a need basis, and we have static code analysis tools in place. So, is it worth wasting two developers (Reviewer, Author) for Code review ?
What tools can do?
- Check the code follows conventions like lines of code/ per method
- Variables or method naming conventions
- Unit test coverage %
- Find Duplicate Code
- Cyclomatic complexity [Some smart tools does this too…]
Then I thought what HUMAN brain can do, NOT any tool,
- Have the customer requirements met ?
- Possible use of a Design Pattern [ Strategy, Decorator or Observer ]?
- or a Design principles like SRP, OCP or LSP ?
- Is it an Anti pattern ?
- Use of existing library [ gson, Jackson, etc]
- Domain Knowledge
- Project Experience [ very important to understand the implications and regressions of the code ] last but not least
- Knowledge Sharing
Your list can grow much bigger than what I have written. I feel though you have Analysis tools of your code and they definitely help you improve your code, you need somebody who is senior to you in the project and technically sound to have a look at your code and give you a fair way to improve your code.
Please share your thoughts and experiences.
In the current world of complex Enterprise software systems, we might not be able to design, build and document the Architecture properly. The Enterprise Architecture Frameworks help us do all these steps efficiently. They provide tools, approaches and processes defined for us to follow and reach our goals efficiently and on time. Brief History of Enterprise Architecture (EA) Frameworks In 1987 John Zachman published a paper on “A Framework for Information systems Architecture” which brought this topic into light and after that many people suggested many different frameworks and altered the Zachman’s proposal. All these frameworks at high level talk about the components which should be streamline the Architecture development and the documentation process. Important Components of Enterprise Architecture frameworks are as below
- Provide Architecture vision
- Design Business Architecture
- Design Technology Architecture
- Implementation of Governance
- Architecture Change Management
Lets try to understand these frameworks in a bit detail.
The oldest among all these framework is Zachman as he is the one who came up with the idea of Architectural Process to reduce the complexity of existing systems and their integration, as well as the lack of documentation on the Architecture. The highlights of this framework are
- Analogy behind this Framework comes from Building Industry (Civil)
- Players – Owner (Who pays for the project), Builder ( Who co-ordinates the things) and Control board (Who ensures the construction follows the local regulations)
- Focus of the Artifacts: What, How, Where, Who, When and Why, and Players to Artifact mapping. Eg: Owner and Builder should know “What” but only Builder would know “How”. Only Owner might know “Why”.
The matrix of Zachman Framework is as below.
TOGAF (The Open Group Architecture Framework) :
This Framework divides Enterprise Architecture into four different parts based on the expertise on their fields.
- Business Architect
- Application Architect
- Technical Architect
- Data Architect
Though this is told as Architecture framework it works mostly as a development method for Architecture. This is a process of creating artifacts for your architecture. This process drives to create proper documents at each phase. Below are the phases involved in the TOGAF process.
So, the above way the life cycle of an Architecture will Iterate. There are some certifications also available for both Frameworks, Check them out if you are looking for one -> TOGAF and Zachman.
Hope this was helpful. Happy Reading.
In day to day life we use many jargons, particularly in technology industry. In the recent past I have observed that there are some words which are used interchangeably. I heard some people using Framework and Platform interchangeably very often.
Here are my thoughts on the differences.
Framework provides pre-written code which are very common for most of the projects. They provide a
way to extend their code and write your own using their Framework. Eg: Spring, Hibernate are Java based Frameworks. So, It it also tells us that they might have constraints like Java / JDK is required to execute any Spring Framework code. They might or might not work on all Operating systems. Still, it is a framework which provides common functionality implementation for any Java web project.
Final understanding we might get here, Framework is a template / Base / Generic code given to extend and write your own code for your own purpose.
- One level of Abstraction
- Easy to Use (For Developers)
- Less Complex to Understand
Platform is a little bigger thing than Framework, Java is a platform as Java provides a JVM(Java Virtual Machine), SDK(Software development Kit), Libraries / APIs (Application Program Interface). Using Java you can write Desktop applications/ Web Applications etc. Java has a stack of Frameworks supporting many applications. Java is the base for many different frameworks. and JVM is the base for many different languages other than Java ( eg: Groovy, JRuby, Jython etc).
- Multiple Levels of Abstractions
- Difficult to Use (For Developers)
- More Complex to Understand
Hope this was helpful, Any new thoughts ?
Happy Reading 🙂