Monday, December 10, 2007

33.PrimeDirectivesRedux

PD1: The system successfully accomplishes a useful task.

PD2: An external user can successfully install and use the system.

PD3: An external developer can successfully understand and enhance the system.


1. Interactive Development Environments (Eclipse, VisualStudio, etc.)


PD1: IDEs satisfy the PD1, because one of the properties that IDEs have called “Integrated stepwise execution (debugger) can help programmers to detect errors.

PD2: IDEs satisfy the PD2, because an external user can install and use IDEs on his/her local working environment when he/she follows the IDE installation guide carefully.

PD3: IDEs satisfy the PD3, because IDEs support for coding, testing, debugging, and refactoring. Hence, an external developer who is familiar with IDEs can understand, correct and improve software systems faster.


2. Coding Standards and Coding Standards Compliance Tools (Checkstyle, etc.)


PD1: Coding Standards and Coding Standards Compliance Tools satisfy the PD1, because they can help programmers improve the code readability, understandability and maintainability. When using the Checkstyle tool, a report would be generated to inform programmers whether violations are existed or not in the code.

PD2: Coding Standards and Coding Standards Compliance Tools do not satisfy the PD2, because an external user does not need to know any program code. Since users only care about whether the software they use are running smoothly or not. If not, users can simply call programmers to fix the software. Hence, PD2 is not in this scope.

PD3: Coding Standards and Coding Standards Compliance Tools satisfy the PD3, because when a software system follows the coding standards, an external develop can understand the software system faster. Then, the external developer can improve the software system efficiently.


3. Build Systems (Ant, Make, etc.)


PD1: Build Systems such as Ant (Java-based), and Make (C, C++ based) satisfy the PD1, because the build systems help programmers compile all files with one line of code. If one of the files is changed by a programmer, the build systems would only compile that file and the rest of files stay the same. It saves compiling time.

PD2: Build Systems satisfy the PD2, because an external user can run a software system with a line of code. For example, ant webspider.jar. Build Systems enable users to use the software system other than IDEs.

PD3: Build Systems satisfy the PD3, because an external developer can understand a software system by reading the build file which the external developer can easy know what files are involved when running the build systems. Moreover, the external developer can enhance the software system by adding other different tools in the build systems.


4. Automated Quality Assurance Tools (PMD and FindBugs, etc.)


PD1: Automated Quality Assurance Tools such as PMD, FindBugs satisfy the PD1, because PMD helps programmers improve the code design, and FindBugs helps programmers pay attention on byte code than source code. For example, consider using equals( ) instead of = = when comparing two strings.

PD2: Automated Quality Assurance (QA) Tools do not satisfy the PD2, because an external user does not need to know the QA of a system when running the system.

PD3: Automated Quality Assurance Tools satisfy the PD3, because these tools help external developers understand the code qualities. When the external developers understand the code qualities, they can then enhance the system.


5. Black and White Box Testing


PD1: Black and White Box Testing satisfy the PD1, because the Black Box Testing helps programmers understand whether an input generates the expected output, and the White Box Testing helps programmers understand which line, block, method and class have not been covered by testing.

PD2: Black and White Box Testing do not satisfy the PD2, because an external user does not

PD3: Black and White Box Testing satisfy the PD3, because black box testing helps external developers understand whether an input generates the expected output, and the white box testing helps external developers understand which part of code have not been tested yet. By doing the white box testing, the external developer can write more testing cases for untested code. It is to make sure that the system has a better quality.


6. Automated Testing Tools (JUnit, HttpUnit, etc.)


PD1: Automated Testing Tools satisfy the PD1, because these tools help programmers understand whether or not a system generates a correct result which programmers expect.

PD2: Automated Testing Tools do not satisfy the PD2, because an external user does not need to know any test cases to install and use the system.

PD3: Automated Testing Tools satisfy the PD3, because an external developer can understand and enhance a system by applying these testing tools. If one of testing fails, the external developer can read a automated generated report to fix the error.


7. Configuration Management (CVS, SVN, etc.)


PD1: Configuration Management satisfies the PD1, because it would identify errors and track all relevant elements of the configuration of a system.

PD2: Configuration Management satisfies the PD2, because an external user can install and use the system. For example, a user can checkout a system when using the SVN.

PD3: Configuration Management satisfies the PD3, because an external developer can understand a system, modify the system then commit the system back to trunk for the enhancement of the system.


8. Issue Driven Project Management


PD1: Issue Driven Project Management satisfies the PD1, because every issue is meant to be improved. Hence, a programmer can try to improve the system by following the issues.

PD2: Issue Driven Project Management satisfies the PD2, because an external user can view the issue page to understand the status of a system. Of course, the issue page is needed to be updated regularly.

PD3: Issue Driven Project Management satisfies the PD3, because an external developer can read these issues to improve a system.


9. Use Cases


PD1: Use Cases satisfy the PD1, because any use cases describe the result of certain action.

PD2: Use Cases satisfy the PD2, because an external user can expect the result if he/she reads the description in the use cases.

PD3: Use Cases satisfy the PD3, because an external developer can get information from these use cases to realize whether a system is generating an output as described in the use cases. If not, the external developer can enhance the system by modifying the code.


10. Software Review


PD1: Software Review satisfies the PD1, because a tester tests the software to find out whether or not the software accomplishes what it is supposed to do.

PD2: Software Review satisfies the PD2, because an external user can follow an installation guide to install and use the system successfully.

PD3: Software Review satisfies the PD3, because an external developer can follow an installation guide to install the system. If the installation guide is not well written, the external developer can write his/her feedback about it and suggest how to re-write the installation. If the installation guide is well written, the external developer can improve the system.


11. Agile Methods (XP, Scrum, etc.)


PD1: Agile Methods satisfy the PD1, because agile methods make sure that each member understands every part of the code. Hence, every system would accomplish a useful task.

PD2: Agile Methods do not satisfy the PD2, because an external user does not have to know whether each member understands or not a system.

PD3: Agile Methods do not satisfy the PD3. Since Agile Methods seek once and only once, these methods come and go fast well. It might not be a good way to let an external developer to join the project. If the external developer starts at the beginning of the project, it might work well.


12. Open Source Licenses (GPL, CPL, etc.)


PD1: Open Source Licenses satisfy the PD1, because they are not discriminated to certain people, free redistribution and available for business use. Hence, a system can be modifies frequently by many people. The system accomplishes a useful task.

PD2: Open Source Licenses satisfy the PD2, because an external user can freely install and use the system any time and any place.

PD3: Open Source Licenses satisfy the PD3, because an external developer learns more about open source licenses through discussion board or from the installation guide. Then, the external developer can spend time on improving the system.


13. Online Hosting Services (Google Project Hosting, SourceForge, etc.)


PD1: Online Hosting Services satisfy the PD1, because the online hosting services are for both owners and viewers. Only owners can modify the services. Viewers can view the services and get feedback through discussion board. Hence, the services are tested by many people. Then, the system is able to accomplish a useful task.

PD2: Online Hosting Services satisfy the PD2, because an external user can install and use the system by reading the installation guide and the discussion board.

PD3: Online Hosting Services satisfy the PD3, because an external developer can read the online hosting site to understand a system. Then, the external developer can write some feedback about the system. Finally, owners of the online hosting services can modify the system. With this way, the external developer enhances the system indirectly.

Sunday, December 9, 2007

MyIsern-Onyx-2.0 Review

  • Team Pink decided to distribute the review assignment into four parts.
  • Reviewee: Team Onyx
  • Installation Review:
    • I was able to download the zip file (myisern-onyx-2.0.1205.zip) from the team Onyx google hosting project site (http://code.google.com/p/myisern-onyx/).
    • In the zip file, team Onyx provides a readme file which has a great detail about how to install their system and view their web application.
  • Code Format and Conventions Review:
  • Quality Assurance Tools Review:
    • "CREATE TABLE " appears 8 times.
    • "tbl_RESEARCHER" appears 4 times.
    • "INSERT_INTO " appears 6 times.
    • "VALUES (" appears 6 times.
    • "'," appears 6 times.
    • "FROM " appears 4 times.
    • Most of warnings are about the "nonconstant string passed to execute method on an SQL statement." Consider using a prepared statement instead.
    • Some warnings are about using the plus sign (+) to add string together in a loop. Consider using a StringBuffer or StringBuilder in Java 1.5.
    • A few of warnings are about unread field. Consider removing them.
  • Testing Tools Review:
    • There are no derby unit tests.
  • Test Case Review:
    • After involving "ant -f emma.build.xml", the emma coverage had shown as below.
    • Team Onyx misses a few test cases for class such as LogoutActionBean, SanityCheckErrorItem, SanityCheckErrorMessage, and MyIsernXMLSaver.
  • Summary:
    • I believe that most groups focus on how to use the database with their web application. Hence, some groups might have neglected to take care of the code qualities and testings. I will suggest team Onyx to take a look at our review reports on four different parts of their project. Hopefully, these reports will provide a great help for them to improve their project.