* The system successfully accomplishes a useful task.
* An external user can successfully install and use the system.
* An external developer can successfully understand and enhance the system.
1. Interactive Development Environments (Eclipse, VisualStudio, etc.)
PD1: Does not really apply, since an IDE itself does not help the system to accomplish a useful task. But it helps a programmer to write, compile, and execute code. (could be done without an IDE)
PD2: Does not apply because a user should not need an IDE to successfully install and use a system.
PD3: Helps the external user to go and read through the code because an IDE typically has a root project hierarchy window listing that is easy to navigate through.
2. Coding Standards and Coding Standards Compliance Tools (Checkstyle, etc.)
PD1: Helps, the developer to verify that the code he or she is writing will execute successfully by eliminating some bugs.
PD2: Does not apply, since a user should be able to install a system without the knowledge of any standards.
PD3: When a common standards are enforced for projects then it is easier for other members who may take over the project to work on it. They can assimilate and understand the code faster. In addition, it is easier to maintain.
3. Build Systems (Ant, Make, etc.)
PD1: Helps the developers to concentrate on code implementation instead of on how to build the system. Developers write a small portion of code and can test it by building the system painlessly.
PD2: Build systems allow users to build the system without using an IDE. It also ensures that the system can be build universally.
PD3: A build system should allow an external developer to build the system using any IDE of choice. Therefore, making the process of understanding and enhancing the system quicker. In addition, build system is easy to modify and fit to many different needs and projects.
4. Automated Quality Assurance Tools (PMD and FindBugs, etc.)
PD1: Helps the developer to ship a relatively bug less system that will accomplish the task it should.
PD2: Does not apply to PD2, because the user should not need to care about QA tools in order to install the system of choice.
PD3: QA tools help the external developers, since they can verify if the system is relatively well written before they start enhancing it. It also allows them to produce code with high quality.
5. Black and White Box Testing
PD1: Black and White box testing is especially crucial to making a task work. It is important to test the increment to the program before it is released.
PD2: Only applies to the asspact that the user can successfully use the system, because if the system is tested well enough then it will work when an external user uses it. However, a user does not need to know about testing to install the system.
PD3: Let's the external developer know the correct outputs to the given inputs. Therefore, it is easier for the developer to understand what the system supposed to do.
6. Automated Testing Tools (JUnit, HttpUnit, etc.)
PD1: Automated Testing Tools Help to ensure that the useful task produces the correct output.
PD2: Does not apply, since it is not necessary for the user to know about testing tools to correctly install and use the system.
PD3: If a system works well it is easier to understand. It is also easier to maintain and modify. An external developer can make sure that the system works well before he or she takes it over. Of course, only if the person before had a 100% testing coverage and that the tests where good tests.
7. Configuration Management (CVS, SVN, etc.)
PD1: Configuration management helps developers to work at the same projects at different times and using only one copy of the source. Therefore, building a system that accomplishes a useful task for effectively.
PD2: PD2 is satisfied since the user can dowload the latest release.
PD3: Using configuration management tools makes it easy for developers to get, change, and update copies of the actual project. The developer can easily go back to past versions to make improvements.
8. Issue Driven Project Management
PD1: Issue driven project management helps the system to accomplish a useful task because issues are reported with information on how to reproduce them, so that they can be eliminated by any developer without forgetting these issues.
PD2: At times, it might happen that a product was released but it cannot be installed on some environments. An issue can be created on how to overcome this problem. Therefore, updating issues can help the user to install and use the system.
PD3: It is also useful to the external developer to know what previous issues the system had and if they were fixed. This help the developer to understand and enhance the system the the issues are actual documentations.
9. Use Cases
PD1: Use cases help the developers to code the system the way it supposed to behave when it is released.
PD2: Use cases provide the user with documentation on how to use the system. Therefore, it is possible for the user to understand the system and know the expected behaviors.
PD3: An external developer can uses the use cases to understand the expected behavior of the system. Therefore, it is easier for him or her to test, and enhance the system further.
10. Software Review
PD1: As read in "The confession of a terrible programmer" it is useful to have another person review the code. Once reviewed, it is more likely that the system accomplishes the task it supposed to accomplish.
PD2: Does not really apply. However, since the reviewer have to install the software and use the installation guide, the external user can count on a better installation guide that should help to install the system quicker and easier.
PD3: The reviewer can give feedback on how easy it is to go through the code. therefor e, an external developer should benefit from this.
11. Agile Methods (XP, Scrum, etc.)
PD1: Since all members work on every part of the project, it should be quicker to accomplish PD1, then release it and get more feedback on how to enhance it.
PD2: Does not really apply, since it is a method for "code writing". However, there are many and frequent releases, so the installation guide should be well written and therefore a user should be able to install and use the system successfully.
PD3: Does satisfy PD3 if the external developer will join the team since the Agile method is designed for changing a system frequently.
12. Open Source Licenses (GPL, CPL, etc.)
PD1: Open source licenses do not apply to PD1 since they do not act on the functionally of the system.
PD2: Open source licenses allow users to download install, and use the system more freely.
PD3: Depending on the license, and external developer could freely download, install, use, and modify the system and redistribute it as a new product. Most of time, open source project have great documentation.
13. Online Hosting Services (Google Project Hosting, SourceForge, etc.)
PD1: Posting a project online to which a lot of people have access, makes the system more know, useful, and tested. Therefore, all people help it to accomplish a useful task.
PD2: Online hosting services will help users to download it and get the installation guide.
PD3: Online hosting services give an external developer easy access to the source code as well as to any documentation issued for the specific project.
Monday, December 10, 2007
33.PrimeDirectivesRedux
Posted by Michal Zielinski at 1:28 AM 0 comments
Sunday, December 9, 2007
MyISERN-Onyx-2.0 Review
Our team will perform this review as a team. Therefore, I decided to review team Onyx's project based on the three prime directives and finally give some comments on there web layout and design, as I think that this will help team onyx the most for the final assignment.
An external user can successfully install and use the system
The installation went smooth, but I could not verify the system with the verify target, therefore I strongly recommend team Onyx to fix the pmd errors. Also, I went to the installation guide, which seems to be pretty neat. One note on the installation guide. It tells the user the username and password for the web application, however I believe that the user must change the tomcat-users.xml file in the conf directory of the tomcat system, to fit the distributed username and password. The installation guide says that the server is running locally on the user's computer, which is right. One comment, which might be a little bit confusing. The web application for MyISERN-2.0 is enhanced with the derby database which is also running locally on the user's computer. Therefore, at this point of time it might also be a good idea to tell the user to install Derby onto there system. Otherwise, they won't be able to use the web application fully. Of course, only if a an external database is not yet set up.
The system successfully accomplishes a useful task
The log in with the provided username and password was good. But when I pressed the login button without any username and password, the system crashed. The add, edit, and list Researchers woks fine. The add Organization does not insert multiple items. Therefore, team onyx should still work on that. Because of this fault the edit and display works only partially. It was also possible for me to insert a collaboration with only a name and all other fields blank, but when I tried to edit it it gave me this error: Collaboration field blank (not very useful) and the display collaboration function displays only two fields. The name and the description.
An external developer can successfully understand and enhance the systemThe developers guide is satisfactory, but I would recommend to include the information on how to download httpUnit for testing the web application. We have used it through out the semester and it is critical to our project. One more thing, we also have used jaxb and it might be helpful for the developer to know how to install that tool too. Especially, when the developer wants to perform export data into XML files, which should be one of the option.
Summary
Overall, the system satisfies the three prime directives only partially for reasons mentioned above. As for the web application itself, the formatting flows seem to be equally on FF and IE. All the fonts seem to be too large. The drop down is nice, but not formatted correctly. The side navigation is good but I did not use it at all because of the drop down. There, it is better to decide between a drop down or a side navigation, but not both. The Welcome message is way too large. It takes almost all of the screen real estate away. Talking about screen real estate, the window have to be fully open at all times. Finally, when I tried to login without a username and password using IE it did not crash for some reason.
Posted by Michal Zielinski at 8:41 AM 0 comments