The following is a technical review of a system that is identical to the one explained in detail in my previous blog post. It is a command line interface for an energy database that provides some utility by providing different commands a user can issue to receive energy data. This review focuses on the Three Prime Directives of open source software development, you can think of these directives at the most general guideline and standard for open source software production. I have used Green and Red arrows to denote a success/flaw concerning the system. Any of the concepts talked about in the following Technical review can most likely be found in more detail in my past blog posts.
So what is a technical review anyway ? Look at this :
Just Kidding!
A technical review is a type of software review that involves a semi-structured process, usually including before hand preparation and a set of guidelines, including a focused area of examination of the system. Having these attributes allows a reviewer, like myself, to more accurately review a system and give feedback which is helpful. So lets check out this system:
home page can be found here:
home page
To fully understand what we are testing please read the overview of the system on the home page. It explains the system well.
The Continuous integration system can be found here:
For those who dont know, a continuous integration system is a system that monitors the central repository of a system under development. When the repository is changed the CI system runs a test to make sure that the change that has been made doesn't break the existing system. this allows for early detection and correction of errors when working in development teams.
⬆ = GOOD JOB
⬇ = SOMETHING MISSING/WRONG
⬆I ran a few initial tests to see if the basic commands worked, the outputs were as follows:
> daily-energy Ilima 2011-11-28
Ilima's energy consumption for 2011-11-28 was: 611.7 kWh.
> current-power Lehua-A
Lehua-A 's power as of 2011-Nov-29 17:49:06 was 6008 kW
> energy-since Ilima 2011-11-27
Total energy consumption by Ilima from 2011-11-27 to 2011-11-29 is: 1558.3 kWh.
> rank-towers 2011-11-27 2011-11-28
For the interval 2011-11-27 to 2011-11-28, energy consumption by towers were:
Ilima 1182.6 kWh
Mokihana 1186.2 kWh
Lehua 1205.8 kWh
Lokelani 1387.2 kWh
⬆ No Problems with the functionality as far as I can tell. when entering incorrect information an appropriate message is sent to the user:
The command inputted was not recognized (Enter "help" to see a list of available commands)
There is a typo in the error message, but no big deal.
⬆ when inputting incorrect arguments into the commands I found that the daily-energy repeats the error message in this instance, but again not really a big deal.
> daily-energy Ilima 212-334-4324
The date 212-334-4324 is invalid (Enter "help" to see command usage)The date 212-334-4324 is invalid (Enter "help" to see command usage)
⬆ I also found that that the system is case dependent, which is not necessarily good or bad.
Overall the system works great as far as I can tell, friendly and informative error messages are given to the user if an error occurs, and I was unable to break the system. It absolutely accomplishes one useful task.
⬆When Inspecting the home site, the project home page is informative and well written. the system is clearly described.
⬇At the time of inspection [Nov 29, 6 pm] there was No UserGuide present in the Google Projects website under the Wiki tab.
⬆There is a downloadable .zip file which contains the .jar file, very easy to download and run.
The download also has a version number, all is well with the distribution.
⬆As I did above here are some more example of exercising the system, All seems well:
> @#$%^&*(
The command inputted was not recognized (Enter "help" to see a list of available commands)
> 3412513 435345 345345
The command inputted was not recognized (Enter "help" to see a list of available commands)
> DaIlY-EneRgY IlimA 2011-11-27
The tower or lounge IlimA is invalid (Enter "help" to see available sources
> rank-touers 2011-11-27
The command inputted was not recognized (Enter "help" to see a list of available commands)
> current-power 2021-11-27
The tower or lounge 2021-11-27 is invalid (Enter "help" to see available sources
> current-power xxxx-xx-xx
The tower or lounge xxxx-xx-xx is invalid (Enter "help" to see available sources
> QITH
The command inputted was not recognized (Enter "help" to see a list of available commands)
> Help
Available commands for this system:
energy-since [tower | lounge] [date]:
Returns the energy used since the date (yyyy-mm-dd) to now.
current-power [tower | lounge]:
Returns the current power in kW for the associated tower or lou nge.
daily-energy [tower | lounge] [date]:
Returns the energy in kWh used by the tower or lounge for the specified date (yyyy-mm-dd)
rank-towers [start] [end]:
Returns a list in sorted order from least to most energy consumedbetween the [start] and [end] date (yyyy-mm-dd)
quit:
Terminates execution
Note: Hale Aloha towers are Mokihana, Ilima, Lehua and Lokelani
Lounges are the tower names followed by a "-" followed by one of A, B, C, D, E. For example, Mokihana-A.
⬆Overall the system works well, cant break it, it works with good inputs VERY USEFUL !
⬇ You need a UserGuide.
DeveloperGuide:
⬆Indicate whatever quality assurance standards are being followed for this project
⬆How a new developer can ensure that any code they might write adheres to these standards
⬆coding standards?
⬆Are these documented?
⬆Development process that is being followed aka Issue-driven?
⬆explains the way that the developers for this project have implemented this process?
⬆provide a link to the CI server associated with this project?
⬇ explain how to generate JavaDoc documentation?
- system says verify will run java docs bust doesn't explicitly explain how to and then where to find the documentation for the system
⬆Project Checkout
⬆Generate JavaDocs
⬆Well Written/ Clear.
⬆Thorough documentation.
The documentation seems well organized and well written, there is no confusion of what each class/package does. There seems to be no indication of information hiding. Overall good documentation.
⬆project builds
⬆Generate coverage

There is some missing coverage but upon inspection you can see that the missing code is all catch statements or error printouts. It seems at though all of the non error related code is exercised in the test cases.
⬆The testing methodology appears to be very thorough. Each teas class addresses a number of different inputs, correct and incorrect, for each class. Each class has an associated Test class to exercise it. From this inspection it looks well done. The amount and span of testing provided leads me to believe that if changes were made to the system that would cause the current system to fail, the test cases would catch it.
Code:
⬆coding standards are followed
⬆code is commented appropriately
easy to understand
- The code is commented appropriately and can be understood. there are a few places in the code that I would like some explanation on, but it should be noted that I like a lot of documentation in the code I write and read. Overall the documentation of the code is good.
Issues:
⬆Is it clear what parts of the system were worked on by each developer?
⬆could the Issues page be used to determine which developer would be the best person to ask?
⬇ Does the current system appear to result from approximately equal input from all of the developers
⬇ some developers appear to do much more than other developers
It seems to me like there is an unequal distribution of work within the team, which unfortunately happens, Mr. cshf...@gmail.com seems to have done a lot of the work, while the other team members contributed less.
CI server :
⬆corrected promptly
⬇worked on in a consistent fashion
⬇ commits associated with an appropriate Issue
A lot of builds were done today on the 29th, these most recent builds are not associated with issues. ⬆During what seems to be the core of the development phase all builds were associated with issues.
Overall we can see that this system is good, it is tested pretty well, it runs well, it is documented well except for a user guide. It passes the three prime directives.
⬇ = SOMETHING MISSING/WRONG
For this section I went to the home page, went to the downloads tab and downloaded the file. I then Unzipped the file and ran the jar file on the top level of the directory. after that I proceeded to use the system the following is what I found.
Review question 1: Does the system accomplish a useful task?
⬆I downloaded and ran the system without any troubles at all.⬆I ran a few initial tests to see if the basic commands worked, the outputs were as follows:
> daily-energy Ilima 2011-11-28
Ilima's energy consumption for 2011-11-28 was: 611.7 kWh.
> current-power Lehua-A
Lehua-A 's power as of 2011-Nov-29 17:49:06 was 6008 kW
> energy-since Ilima 2011-11-27
Total energy consumption by Ilima from 2011-11-27 to 2011-11-29 is: 1558.3 kWh.
> rank-towers 2011-11-27 2011-11-28
For the interval 2011-11-27 to 2011-11-28, energy consumption by towers were:
Ilima 1182.6 kWh
Mokihana 1186.2 kWh
Lehua 1205.8 kWh
Lokelani 1387.2 kWh
⬆ No Problems with the functionality as far as I can tell. when entering incorrect information an appropriate message is sent to the user:
The command inputted was not recognized (Enter "help" to see a list of available commands)
There is a typo in the error message, but no big deal.
⬆ when inputting incorrect arguments into the commands I found that the daily-energy repeats the error message in this instance, but again not really a big deal.
> daily-energy Ilima 212-334-4324
The date 212-334-4324 is invalid (Enter "help" to see command usage)The date 212-334-4324 is invalid (Enter "help" to see command usage)
⬆ I also found that that the system is case dependent, which is not necessarily good or bad.
Overall the system works great as far as I can tell, friendly and informative error messages are given to the user if an error occurs, and I was unable to break the system. It absolutely accomplishes one useful task.
For this section I did basically the same thing as I did above, but I looked into the documentation a bit more including the Wikiʻs that can be found under the wiki tab. After getting the system running once again I tried to put in bad input to break it.
Review question 2: Can an external user can successfully install and use the system?
⬆When Inspecting the home site, the project home page is informative and well written. the system is clearly described.
⬇At the time of inspection [Nov 29, 6 pm] there was No UserGuide present in the Google Projects website under the Wiki tab.
⬆There is a downloadable .zip file which contains the .jar file, very easy to download and run.
The download also has a version number, all is well with the distribution.
⬆As I did above here are some more example of exercising the system, All seems well:
> @#$%^&*(
The command inputted was not recognized (Enter "help" to see a list of available commands)
> 3412513 435345 345345
The command inputted was not recognized (Enter "help" to see a list of available commands)
> DaIlY-EneRgY IlimA 2011-11-27
The tower or lounge IlimA is invalid (Enter "help" to see available sources
> rank-touers 2011-11-27
The command inputted was not recognized (Enter "help" to see a list of available commands)
> current-power 2021-11-27
The tower or lounge 2021-11-27 is invalid (Enter "help" to see available sources
> current-power xxxx-xx-xx
The tower or lounge xxxx-xx-xx is invalid (Enter "help" to see available sources
> QITH
The command inputted was not recognized (Enter "help" to see a list of available commands)
> Help
Available commands for this system:
energy-since [tower | lounge] [date]:
Returns the energy used since the date (yyyy-mm-dd) to now.
current-power [tower | lounge]:
Returns the current power in kW for the associated tower or lou nge.
daily-energy [tower | lounge] [date]:
Returns the energy in kWh used by the tower or lounge for the specified date (yyyy-mm-dd)
rank-towers [start] [end]:
Returns a list in sorted order from least to most energy consumedbetween the [start] and [end] date (yyyy-mm-dd)
quit:
Terminates execution
Note: Hale Aloha towers are Mokihana, Ilima, Lehua and Lokelani
Lounges are the tower names followed by a "-" followed by one of A, B, C, D, E. For example, Mokihana-A.
⬆Overall the system works well, cant break it, it works with good inputs VERY USEFUL !
⬇ You need a UserGuide.
The following involves a lot of concepts such as testing, coverage, documentation and code standards, SVN checkouts, and issue-driven project management. If you are unfamiliar with any of these concepts and wish to learn mor about them I would read my previous blog posts because they cover most of the main concepts addressed in the following section. These are also basic concepts in software development so there is a lot of information out there about them.
Note: Jacoco is a coverage tool that this project used. It runs all of the test cases that are provided for the system and checks to see what percentage of the code was actually used, and which percentage was never used. remember coverage != good testing, good testing = good coverage.
Issue-driven management:
blog post on Issue-driven managementReview question 3: Can an external developer successfully understand and enhance the system?
DeveloperGuide:
⬆Indicate whatever quality assurance standards are being followed for this project
⬆How a new developer can ensure that any code they might write adheres to these standards
⬆coding standards?
⬆Are these documented?
⬆Development process that is being followed aka Issue-driven?
⬆explains the way that the developers for this project have implemented this process?
⬆provide a link to the CI server associated with this project?
⬇ explain how to generate JavaDoc documentation?
- system says verify will run java docs bust doesn't explicitly explain how to and then where to find the documentation for the system
⬆Project Checkout
⬆Generate JavaDocs
⬆Well Written/ Clear.
⬆Thorough documentation.
The documentation seems well organized and well written, there is no confusion of what each class/package does. There seems to be no indication of information hiding. Overall good documentation.
⬆project builds
⬆Generate coverage
There is some missing coverage but upon inspection you can see that the missing code is all catch statements or error printouts. It seems at though all of the non error related code is exercised in the test cases.
⬆The testing methodology appears to be very thorough. Each teas class addresses a number of different inputs, correct and incorrect, for each class. Each class has an associated Test class to exercise it. From this inspection it looks well done. The amount and span of testing provided leads me to believe that if changes were made to the system that would cause the current system to fail, the test cases would catch it.
Code:
⬆coding standards are followed
⬆code is commented appropriately
easy to understand
- The code is commented appropriately and can be understood. there are a few places in the code that I would like some explanation on, but it should be noted that I like a lot of documentation in the code I write and read. Overall the documentation of the code is good.
Issues:
⬆Is it clear what parts of the system were worked on by each developer?
⬆could the Issues page be used to determine which developer would be the best person to ask?
⬇ Does the current system appear to result from approximately equal input from all of the developers
⬇ some developers appear to do much more than other developers
It seems to me like there is an unequal distribution of work within the team, which unfortunately happens, Mr. cshf...@gmail.com seems to have done a lot of the work, while the other team members contributed less.
CI server :
⬆corrected promptly
⬇worked on in a consistent fashion
⬇ commits associated with an appropriate Issue
A lot of builds were done today on the 29th, these most recent builds are not associated with issues. ⬆During what seems to be the core of the development phase all builds were associated with issues.
Overall we can see that this system is good, it is tested pretty well, it runs well, it is documented well except for a user guide. It passes the three prime directives.