Monday, October 22, 2007

21.MyISERN-1.2

  • MyISERN-1-Orange team members:
    • Ivan Wu
    • Chiao-Fen Zielinski-Liu
    • Michal Zielinski
  • What was difficult about this assignment?
    • Besides the test cases, this assignment was pretty straightforward. Basically, the program first follows user's input. If the name is in the system, users can only edit the existing information. Otherwise, we consider it a new information. Then, one or more Xml files will be updated according to users' decision.
    • Since this assignment needs user's input, I find the most difficult about this assignment is to write test cases for adding and editing. This is why our emma coverage report for blocks and lines show only 45% and 55 %.
  • What problems were encountered in organizing the group and carrying out the work?
    • Last Wednesday afternoon we spent five hours together to discuss the assignment and we also wrote a method together for adding researchers. The main purpose of writing the first method together was to let every member in MyIsern-Orange follow the coding format according to the method that we created together. Therefore, our users can easily perform tasks when using our system.
    • We did not really have serious problems when completing this assignment. We divided the assignment evenly to each member and we also assigned the due dates for each small section of the system. Then, other members could update the system by using SVN. On Sunday, we gathered together to run the system and to make sure the system works successfully. If problems occur, three brains are always better than one brain. Then we can easily remove bugs from our system.
  • Were all aspects of the milestone completed?
    • Yes, we completed all tasks for this assignment. For task2, we did our best to enter all data to test our program. Luckily, our system did not have any unexpected errors when inserting information. Everything is under our expectation.
  • What will I do differently during the next milestone to improve the process and the products of your efforts?
    • Weekdays, we really do not have much time to get together except Wednesday afternoon. If we could spent more time and get together more often on weekdays, I am pretty sure that we would complete every assignment before weekend comes, because we can think fast and code fast. This is the only thing that I can think of.

19.UseCaseSpecification

  • Summary:
    • A voice recorder would be very helpful on Wednesday, October 10 while I was trying so hard to take notes down from the professor who lectured on use cases for the MyIsern project.
    • I did not know that there are a lot of restrictions when writing use cases until I read those articles about use cases. When we wrote the use cases, we tried to follow the use case modeling tips on the IBM website. For example,
      • use active voice
      • write from the point of view of users
      • write scenario text
      • alternate courses of action
      • think the user interface
    • The use cases we wrote help me understand features of the system because use cases provide basic and alternate courses from the point of view of users. This is what we have to concern when we code MyIsern.
    • One article says that use cases should be written before a system is created. I agree with this statement because a good use case shows a real situation that a user can face when using the system. Therefore, software developers can code better programs.

Tuesday, October 16, 2007

22.MyISERN-1.1.Review

  • Reviewer: Chiao-Fen Zielinski-Liu
  • Author:Shaoxuan Zhang
  • Installation Review:
    • I have successfully downloaded the "MyIsern-Ivory" zip file into my workplace from the author's blog and I was able to run the software by using "java -jar". There were no difficulties to figure out how to run MyIsern-Ivory's code. In other words, I am getting more confidence in reviewing and testing other classmates' code. After running the "verify" target, there were no errors or warnings. Moreover, the system was able to generate a nice formatted table when entering a correct command line argument. Overall, the whole process of installation review was smooth and successful.
  • Code Format and Conventions Review:
    • When reviewing MyIsern-Ivory's code format and conventions, it was hard to find violations which were very serious. MyIsern-Ivory's code contains a very reasonable amount of comments which explain what a particular block of code is doing. Therefore, their code format and conventions are pretty well written and focused.
  • Test Case Review:
    • Black box perspective:
      • When thinking only in terms of the specification for this assignment, MyIsern-Ivory did pass black box testings because the test file contains test cases for true and false inputs as well as null input. In addition, the expected outputs were shown after entering the queries specified on the "18.MyISERN-1.1" assignment sheet.
    • White box perspective:
      • Emma Coverage Summary
        • class: 100% (12/12)
        • method: 89% (65/73)
        • block: 87% (2648/3091)
        • line: 85% (452.5/532)
      • When looking at the "Emma Coverage Summary", the overall coverage is quite high. In order to get more detail on the coverage, I decided to run the emma target to see a report. After reviewing the "Emma Coverage Report", I found that the only method that has no coverage is the "listOrganizations()" method in the XmlQuery class. However, I do see the "testListOrganizations()" method. Hence, I wonder whether or not the "testListOrganizations()" method tests the "listOrganizations" method. So, I would suggest MyIsern-Ivory to check both methods for the next milestone.
    • Break da buggah:
      • I have found a few ways to crash the system. The command lines are listed below and the exception for these three cases.
        • >java -jar myisern-ivory.jar -describe -researcher Marvin Zelkowitz
        • >java -jar myisern-ivory.jar -describe -researcher Marvin-Zelkowitz
        • >java -jar myisern-ivory.jar -describe -researcher Marvi
Exception in thread "main" java.lang.NullPointerException at edu.hawaii.myisern.ivory.xmlloader.XmlLoader.getResearcherDescription(XmlLoader.java:485)
at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.printDescriptions(XmlQuery.java:106)

at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.print(XmlQuery.java:64)
at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.main(XmlQuery.java:50)

        • >java -jar myisern-ivory.jar -describe -organization University_of_Boston
        • >java -jar myisern-ivory.jar -describe -organization UniversityofBoston
        • >java -jar myisern-ivory.jar -describe -organization University of Hawaii
Exception in thread "main" java.lang.NullPointerException at edu.hawaii.myisern.ivory.xmlloader.XmlLoader.getOrganizationDescription(XmlLoader.java:456)
at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.printDescriptions(XmlQuery.java:103)

at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.print(XmlQuery.java:64)
at edu.hawaii.myisern.ivory.xmlloader.XmlQuery.main(XmlQuery.java:50)
  • Summary and Lessons Learned:
    • After running "java -jar myisern-ivory.jar", I could see a list of acceptable queries and a link ,"http://code.google.com/p/myisern-1-ivory/wiki/UserGuide", about how to run this system in detail. One of these acceptable queries is "-listCollaboraitons -researcher ". Obviously, the word "Collaboraitons" has wrong spelling. Therefore, I have learned that the instructions of how to use a software are very important because this is the first thing that a novice will follow to run the software. Furthermore, if users are given wrong instructions on how to use a software, they will never get the outputs they want.

Monday, October 15, 2007

18.MyISERN-1.1

  • MyISERN-1-Orange team members:
    • Ivan Wu
    • Chiao-Fen Zielinski-Liu
    • Michal Zielinski
  • What was difficult about this assignment?
    • I found the most challenge part of this assignment was to use SVN to commit the project, because most of time I would have to update my project since the version of my project was out-of-dated since the last time I checked out. In order to commit the whole project, I would have to understand what changes were made from my team members and the differences between those changes and my changes. Before committing the whole project , the project must pass the verify target.
    • When committing the project, we encountered an error every time. The error was about "conflicting." Hence, we made a copy of our latest project each time before we committed the project. Somehow we still feel not safe about SVN.
    • When we received this assignment, we decided to schedule a time to read through this assignment together. After reading it together, we had different understandings about some of requirements. The big disagreement was about the "UniqueID". If this assignment could be written more explicit, we could avoid those disagreements.
  • What problems were encountered in organizing the group and carrying out the work?
    • Last week we all had other assignments from other classes and we worked at different places and different schedules. Hence, we spent a short time together to discuss the assignment during the weekday. We also assigned a part of assignment for each member to work. Since we could not meet on Friday, we decided to work our part of assignment individually. Then, we could combine all together on Saturday.
    • On Saturday, we could only meet 2 hours, so we discussed what had been done since last time we met. After discussing the next step, we went home and worked on the assignment. We pretty much did most of the assignment before Sunday.
    • Since we were free on Sunday, we met again at 12 pm. We spent time to add more stuffs in our project hosting group, write more test cases, and try to solve the "conflicting" problem when committing the project through SVN.
  • Were all aspects of the milestone completed?
    • Yes, we completed all aspects of the milestone. I am so proud of all of us because we all know that each of us has to go to work and do other homework. Finally, we are able to complete this project on time. This is a very nice group experience.
  • What will I do differently during the next milestone to improve the process and the products of your efforts?
    • I think the first thing that I will do is to practice more on SVN since the "conflicting" issue had delayed our progress during this assignment.
    • Since we were able to meet almost every day, I hope that we can keep this good habit because these meetings really keep me updated about our project. Therefore, I will still try to have some free time with my team members to discuss our project.

Monday, October 8, 2007

16.MyIsernReview

  • Reviewer: Chiao-Fen Zielinski-Liu
  • Author:Randy Cox
  • Installation Review:
    • I have successfully downloaded the "myisern-xml-1.0.1007" from Randy's blog, and the installation process was very successful. I was not able to run the system with "java -jar". However, After I ran the system with Eclipse, I saw three very nice formatted table outputs . In addition, I did not see any errors or warnings after I ran the verify target. Hence, the whole installation process was very smooth. I am glad that the code that I reviewed for printing out tables is so different than the code I did with my team members. Therefore, it is more interesting to me.
  • Code Format and Conventions Review:
    • After running the CheckStyle target, there were no warnings on code format and conventions. Then, I decided to read through the code. I found that Randy and his team member did a very good job on writing comments, naming variables and how they organized their code. Hence, I could only find the violations as given below.

File
Line(s)
Violation
Comments
MyIsernUtil.java
7,15
EJS-48
"Utility to" can be omitted.
HelloWorld .java
38
EJS-7
Extra white space

  • Test Case Review:
    • Four test classes:
      • TestHelloWorld.java
      • TestMyIsernPrintTables.java
      • TestMyIsernUtil.java
      • TestMyIsernXmlLoader.java
    • Black box perspective:
      • After running the "TestHelloWorld.java" class, three tables were generated and they were the same as when I ran the program in Eclipse. When tracing these test classes, I found the each test class contains methods to test the correspondents in non-test class. However, black box testing is to test a given input and check the output which should be exact the same as documented. Since tables generated by running the HelloWorld.java and tables generated by running the TestHelloWorld.java are the same, I would say that Randy's code passes black box testing.
    • White box perspective:
      • After running the Emma target, the result of the class, the method, the block and the line coverage were all 100%. White box testing is to see the internal structure of the system. 100% coverages tell us that all codes have been traced by these test classes. Hence, I believe that Randy's test cases cover white box testing.
    • Break da buggah:
      • I could not do anything to cause the system to crash or return an incorrect answer after thinking and trying a few hours. I guess I still need to think harder because somehow I believe that there must be a way to cause a system to crash.
  • Summary and Lessons Learned:
    • I am glad that I review Randy's code because his code makes me think how I should improve my code and the structure of my programs. For example, his test cases are clear and simple. This helps me to understand more about what I should do when I need to write test cases.
    • I realize that when reviewing a better coding style, it gives me a chance to improve and enhance my way of writing a program, but when reviewing a careless coding style, it warns me not to make the same violations or mistakes.

15.MyISERN-1.0

  • MyISERN-1-Orange team members:
    • Ivan Wu
    • Chiao-Fen Zielinski-Liu
    • Michal Zielinski
  • Group Software Development:
    • Since we knew we would work as a team and our professor has suggested us to meet every day to discuss this assignment and also get to know the team members, all of us decided to spend some time to meet together from Wednesday (Oct 03) to Sunday (Oct 07). If you are interested in more details of our meetings, you can visit our Wiki page. It was a nice experience to work as a team because it seemed to me that we all knew what the next step was to complete all the tasks for this assignment. I am looking forward to work as a team again.
  • Lessons Learned:
    • Luckily, our professor provides us a nice zip file contains all the source codes, XML documents, and tools we need for this assignment. My first step was to read all the source codes and all three XML documents. After reading them, it reminded me the Abstract Data Type (ADT) that I learned from ICS211. If I would like to use the codes efficiently, I would have to understand how JAXB and XML schemas work with each other. They are like a jigsaw puzzle game. All we have to do is to know how to construct related pieces together. This was my first thought after reading the zip file.
    • What a complicated name "Java Architecture for XML Binding (JAXB)"! After reading more about JAXB, I find that JAXB is a very interesting topic to learn as a computer science student. From the readings, there are two discrete sets of activities that JAXB involves and they help me to understand the process of JAXB.
      • Generate and compile JAXB classes from a source schema, and build an application that implements these classes.
      • Run the application to unmarshal, process, validate, and marshal XML content through the JAXB binding framework.
    • After opening the "examples" folder from the myisern-xml-1.0.1003.zip file, there are three XML documents. These XML documents are in nice format, so they are easy to follow. However, I did not know how to define them. After reading the "Introduction to XML Schemas", I have learned how to define elements and attributes in a document, which elements are child elements, the order of child elements and the number of child elements. Therefore, in order to get values from these XML documents, it is like to go through one layer to another layer. Then, using index to retrieve the values. This is how we figured out to get all the values.

Sunday, October 7, 2007

14.CM.Practice

I have completed all three tasks. Details are given below.
  • Install an SVN client:
    • When I tried to download the SVN client from the TortoiseSVN Download, I was confused because I was not sure I should download the SVN from 32 bit application or 64 bit application. Even though my intuition was to download from 32 bit application, I could not make the final decision for it because I was not sure what system my computer is. Therefore, I took a few minutes to figure out the system of my computer. Finally, I followed the steps such as start->my computer (right click) ->properties->Advanced->Environment Variables->System variables->ComSpec (System32) to find out the system of my computer. This is how I completed the task 1.
  • Modify an existing Google Project:
    • This task was fun to me because I did it with my team member together. Both of us followed the instructions in the SVN lecture, so we checked out the "Stack-Johnson" project at the same time into our individual workplace. Then, I made a small change in the project from my local workplace, and my team member also made some changes in the project from his local workplace. After we ran and made sure our projects pass the verify target, my team member committed his changes to the repository without any error. Then, I committed my changes to the repository but I encountered some errors. After some time of studying the errors, we found out that I could not commit my changes to the repository because my version of the "Stack-Johnson" was not the most updated version since my team member submitted earlier than me. Hence, I would need to update my version of the "Stack-Johnson" to the most updated version. Then, I could commit my changes to the repository. It was fun because we followed the instructions for task 2. My team member did not have any problem but I did. It is always good to learn experience. This is how I completed the task 2.
  • Create a new Google Hosting Project:
    • I followed the instructions in the SVN lecture to create "webspider-chiaofen" google project. This task is very straightforward because the "Stack-Johnson" project is a good example to compare to my "webspider-chiaofen" project. Hence, I did not encounter any complicated issues, so I completed the task 3.