Monday, December 10, 2007

33. Prime Directives Redux

The Three Prime Directives are:
1. The system accomplishes a useful task.
2. An external user can successfully install and use the system.
3. An external developer can successfully understand and enhance the system.

1. Interactive Development Environments (Eclipse, VisualStudio, etc.)
PD1: This prime directive is fulfilled as it allows developers to develop a system more efficiently by providing syntax check, debugging etc which saves time and allow the developers to focus on implementing the system instead of handling minor repetitive errors.
PD2: This is generally fulfilled as external users (developers in this case) are able to download them from their site or purchase them and then set up the IDE accordingly.
PD3: This is generally fulfilled, provided the IDE concerned is open source where the source code of the IDE is available for download. Otherwise, developers generally cannot make much change to the copy-righted IDE and enhance it.

2. Coding Standards and Coding Standards Compliance Tools (Checkstyle, etc.)
PD1: These tools fulfill the first Prime Directive by making the codes follow a conventional format and make it easier for developers to understand the code.
PD2: This Prime Directive does not apply to the users as users generally do not need to know the coding standards and the Compliance tools in order to use the system.
PD3: This Prime Directive can be fulfilled for the Coding Standards Compliance tools by having the source code available so that developer can enhance the system. Very often, developer guides are also available to aid developers with understanding the system.

3. Build Systems (Ant, Make, etc.)
PD1: This Prime Directive is fulfilled as these build systems make it easier for developers and users to build the system by automating the tasks required.
PD2: This Prime Directive is also fulfilled as users can download these systems and utilize them to facilitate the build process of other applications.
PD3: This Prime Directive is also fulfilled as developers can enhance the systems according to their own needs for specific projects.

4. Automated Quality Assurance Tools (PMD and FindBugs, etc.)
PD1: These tools fulfilled the first Prime Directive by making sure that the code is bug free by avoiding some coding practices that are likely to cause bug later on.
PD2: The second Prime Directive is also fulfilled as users can use these systems and run them over other systems to make sure they are bug-free.
PD3: Similar to the case of build systems, his Prime Directive is also fulfilled. Developers can enhance the systems accordingly to fit their own needs for their code.

5. Black and White Box Testing
PD1: This prime directive is fulfilled as they help developers find out the bugs, for example run-time errors which are not catch by QA tools, in the program.
PD2: This prime directive does not directly apply as users generally are not concerned with the testing of the program that they are using. However, if the system is thoroughly tested it would generally facilitate the user with installing and using the system.
PD3: This prime directive is fulfilled as developers can enhance the testing to fully cover their code to ensure they are working properly.

6. Automated Testing Tools (JUnit, HttpUnit, etc.)
PD1: This is fulfilled as they are useful tools that automated and simplified the process of testing the codes and thus make sure the codes are working up to expectation by finding out the bugs.
PD2: This Prime Directive is also indirectly fulfilled as users can have an easier time installing and using the system if the system has been tested thoroughly with these testing tools.
PD3: This Prime Directive is fulfilled as developers can utilize them to test other systems by enhancing them accordingly.

7. Configuration Management (CVS, SVN, etc.)
PD1: They fulfilled the first Prime Directive by providing a repository that allows developers to work on the same code at the same pace while solving the problem of simultaneous update.
PD2 & PD3: Both Prime Directives are fulfilled as developers can use the configuration management to work on a project together and thus enhance the system.

8. Issue Driven Project Management
PD1: It fulfills the first Prime Directive as it facilitates the software development process by breaking down a project into smaller parts. This allows programmers to have a better idea of what works are left to done and also helps divide the work among the team.
PD2: It does not apply to the second Prime Directive as users are not involved in the software development process.
PD3: It fulfills the third Prime Directive as it allows developers to better divide the work and keep track of where they are in the software development process, thus enhancing the system produced.

9. Use Cases
PD1: This prime directive is fulfilled as use cases allow developers to better understand how their systems will be used and thus have a clearer direction in designing their systems.
PD2: This prime directive does not apply as use cases are users are not concerned with the use cases scenario of the system they are using.
PD3: This prime directive is fulfilled as developers can come up with use cases according to the system concerned.

10. Software Review
PD1: This prime directive is fulfilled as they allow developers have to their systems reviewed by someone else. With such reviews, they can obtain constructive feedbacks in different areas such as installation procedures, code formatting,
PD2: This prime directive does not apply as software review should be done before the software is released for users to download and use.
PD3: This prime directive is fulfilled as it allows developers to get a better idea of how their programs are doing and enhance it accordingly.

11. Agile Methods (XP, Scrum, etc.)
PD1: This prime directive is fulfilled as Agile Methods allows programmers to work together in team more effectively.
PD2: This prime directive does not apply as Agile Methods are practice of software programming.
PD3: This is fulfilled as developers can enhance the system by practicing these methods to produce higher quality code.

12. Open Source Licenses (GPL, CPL, etc.)
PD1: These fulfilled the first Prime Directive by allowing developers to share their products with everyone freely.
PD2: This prime directive is fulfilled as they allow users to freely download and use programs distributed under them.
PD3: Similarly, this prime directive is fulfilled as they allow developers to freely contribute to the codes and make changes to the system.

13. Online Hosting Services (Google Project Hosting, SourceForge, etc.)
PD1: This prime directive is fulfilled as these online hosting services provide an easy mean for developers to post and share their projects as well as to searcher for other projects. This facilitates the process of posting and sharing projects with each others.
PD2: This prime directive is fulfilled as users can download programs from these hosting services.
PD3: This prime directive is fulfilled as they provide a place for developers to share and search for projects.

No comments: