Sunday, December 9, 2007

33.PrimeDirectivesRedux

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

For the first Prime Directive, an IDE helps to develop a system on the code level. It checks the syntax and eliminates repetitive procedures so that a developer can efficiently release a product that accomplishes a useful task. It really serves no purpose for an external user so it does nothing for the second PD but for the third PD, an IDE is great for developers because coding style can remain consistent throughout the code. It also allows an external developer to quickly make sense of the source code and efficiently edit the code because the IDE lets them develop code on an environment customized to their preference.

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

Coding standards satisfy the first and third PD because it helps to keep code easy to read and edit. If everyone was to code in their own way, then external developers would have a difficult time making sense of the code and would waste that much time and the motivation to actually work on the code. Compliance tools help to keep code bug free and to assure that the quality of the code is at release level.

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

Build systems are a great tool for saving time. They basically do the job of compiling all code and keeping version control. They check to make sure that all code that has been edited is recompiled when needed and make it simple to build and pack a project. It is also helpful because different IDEs can work together on the same code. This is a great benefit to all developers old and new so it satisfies all PD. Users will most likely benefit from the fact that either the program comes packaged and ready to go or compiling the program and running it is a one step process.

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

These tools help to keep code bug free and running smoothly. Thus they affect the first PD because those tools make sure that the task being accomplished is actually done right. External developers benefit from these tools as well because they can make sure that the code they edit is at the same level of quality and as bug free as when they started. External installers don't really benefit much other than knowing that the code works. Maybe not completely bug free but most common errors are weeded out.

5. Black and White Box Testing

Black and White Box testing help developers find bugs that might come up in their code. Black box testing try to categorize user inputs and runs tests to see if those inputs will break the system. White box testing shows developers which lines of code are executed during tests. This ensures that certain methods are called when they need to be called. This satisfies the first PD because it ensures that a task is accomplished successfully. This also satisfies the third PD because external developers can also ensure that their code is doing what they think its doing. Installers don't really worry too much but users will want a program to do what it’s supposed to do. So it satisfies all three PD.

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

Automated testing tools make it easy for all developers to create tests. Tests ensure that a program works the way it is intended thus it affects all three PD. It helps to develop a quality program that will accomplish a useful task, then users can install and use a program as it is intended, lastly external developers can enhance the code and run more tests. These test show that the original functions work as well as the new functions.

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

Configuration Management helps groups of developers to work on a program without having to worry about trampling over each other’s code. These programs help to ensure that code written in one file from one developer can be merged with code that was written by another developer at the same time. Thus files can be edited without worrying about it being out of sync with the rest of the files. This helps out all developers but does little for users and installers because they will probably never use these tools.

8. Issue Driven Project Management

Issue Driven Project Management allows all the work that must be done on a program to be divide into “issues” that can be resolved to form a milestone. This helps to keep developers up to date on the difference between versions and the evolution of the program itself.

9. Use Cases

Use Cases are an example of just how the program works to accomplish a task. This sets up the design process so that developers can model the code after this case. It shows the developer how to make the code. The end result is a program that works the way is was intended leaving users satisfied.

10. Software Review

Software review helps developers look through their code and ensures that the code is following the design. It begs developers to ask other developers to look at their code so that both developers can become better developers. They can show each other how things could be implemented better or more efficiently. It also shows a developer that he can make mistakes but learn from them. This is essential for all PD because although developers are the ones carrying out this process, users benefit with a robust program.

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

The agile methods change the way code is being developed. Instead of wasting time looking and waiting for requirement, two or more programming can just get cracking on some code and incrementally build a better system. In the end, the code almost always turns out better, which also leads to happy users.

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

These licenses help to develop and grow the open source community by protecting what they have developed. Each license has it own set of restrictions and while some are very tight, others are very loose and viral. This helps out the whole open source community because they can step on the shoulders of giants and release ever better code. Although the whole situation can be convoluted at times, there is proof that this works. We have to look no further than Linux itself.

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

Online hosting services help out the development community by working along with things like the open source licenses. Online hosting services makes it easy to access source code so that other developers can add to or learn from it. In the end, it helps to generate better code and program

Team Yellow MyIsern 2.0 Review

Installation Review:

Right off the bat, I was able to download the distribution file but I had difficulty opening it. I used window XP's default unzipping tool but that didn't work. Finally after the whole team gave it a try, we found that if you used winRar to open the file, then it would uncompress.

There was also no installation guide so I had to resort to using the developer's guide which was barely helpful. I was able to download XAMPP and Symfony with no problem. I also extracted both with ease. I was also able to setup XAMPP easily using the developer's guide. But when it came to installing symfony, I was confused as to what to do. I didn't know how to install symfony and the webpage provided was also confusing and set for a unix user. The symfony site asks to uncompress the symfony download into the root web directory of the server yet I have no idea what folder that is. The developer's guide basically assumes that you can install this program easily, which I couldn't do.

The main errors that occurred were getting PEAR to work. I tried all the commands provided on the symfony site: pear install symfony/symfony, pear config-show, and pear update-channels. I especially had trouble with pear update-channels because it just wouldn't do it. It found no channels. So I went ahead and tried, pear update pear and that gave me even more errors. I moved on to pear upgrade-all and it told me that there was nothing to update. I went back to beginning and tried all the commands again. pear update-channels finally worked! But then crashed in a horrid blaze of fire.

I tried to install phing after that and much of the same occurred. Entered a command, crash. Enter another command, crash. Go back to step 1 and semi-work then crash horribly. The entire team tried to run this application, at the same time, but we all had the same results. I actually got the furthest because for some strange reason XAMPP actually WORKED for me. Everyone else was stuck there.

Finally after two hours, I got pear install symfony/symfony to work. SUCCESS! Only to find that somehow my ad hoc ways of getting this program to install seriously screwed up my localhost page. Defeated, I wiped the tears off my face and hit the close all tabs button.

I actually googled (has google finally made itself a verb?) the subject earlier in the process only to find out that everyone shared much of the same problems as me. Apparent there really is no support for windows/xampp/php/symfony. Those that could get it to run used many ad hoc methods to change things here and there. There even a webpage that shared my sentiments.

http://trac.symfony-project.com/wiki/WindowsXPDevelopmentEnvironment

This person actually tells you to do something knowing that it will fail. Then he goes around and tells you how to fix it using heuristic methods. In the end, I still failed. I consider this a complete failure because it utterly defies Prime directive 2. There really is no easy way to install Symfony. Especially with the Prime Directive Redux questions to answer, finals to study for, and sleep deprivation. I'm actually angry right now.

I do not blame Team yellow for this. I blame Symfony for making it so hard to use. I'm sure once I spent a lifetime or two looking through the thousands of wikis that describe how to install symfony with this program or with this environment or any combination of the above mentioned items, all of which don't work in my opinioin, I might actually get it to run. Then maybe go on to review it.

I was also not able to contact Team Yellow for their help.

Code format and conventions review

We really don't know php at all so we can't really review the code format or the conventions.

Test case review

We could not get the page to run. At all. Therefore we cannot run the tests.

User Interface review

See above.

Summary and Lessons Learned

I've learned absolutely nothing. This was a waste of my time and very frustrating. I'm still angry. But I hope that I at least made this review a fun and delightful piece of reading. Enjoy, cheers!