Thursday, October 28, 2010

User Stories

Introduction

     This week's work includes creating user stories for the Solar Decathlon for Team Hawaii. User Stories are one or more sentences that captures what the user wants to achieve. It is an informal and quick way of handling customers' requirements, features and functionality of a project that can be implemented. The user stories are written by the customers for a software project and are their main instrument to influence the development of the software.
     Solar Decathlon is a competition that was created by U.S. Department of Energy that challenges 20 collegiate teams around the world. The teams were challenge to design, build, and operate solar-powered houses that are cost-effective, energy-efficient, and attractive. The winner of the competition is the team that best blends affordability, consumer appeal, and design excellence with optimal energy production and maximum efficiency. For more information about the Department of Energy Solar Decathlon click here and for Team Hawaii click here.


User Stories

      Based on the Team Hawaii's presentation and question and answer portion of it, below are the user stories that I thought occupants of the house may require on the management system:

1. As a home occupant, I want to be able to monitor both the energy that my house produces and the energy that the house consumes. 

2. As a home occupant, I want the system to do calculation and some kind of notification if my house's produced energy will be not enough for the current house's consumption for the rest of day.

3. I want the system to give me the summary of the energy consumption of each electrical appliances/equipment, specifically which one consumes the most. The system will also suggest which of these appliances should I turn off or unplug to be able to save energy.

4. As a home occupant, I want to be able to see my house's current temperature. In this way I would be able to tell whether the cold and warm air valve is working properly, if not, then I would be able to do necessary adjustments. This would keep my house very comfortable during hot summer or cold winter.

5. As a home occupant, I want to use LED lights all over the house and be able to control everything wherever I am in the house. This would make it very easy and convenient for me. This would also help save energy by immediately turning the lights off when not used.

6. To conserve even more energy, I would also like that the LED lights would turn whenever I'm around. By using IR and motion sensor, an array of LEDs would turn on and follow me wherever I go in the house. This also has to work with multiple occupants in the house.

7. To fully make my house self sustained, I want to utilize the new technology in growing food called Aquaponics. I want to be able to control and monitor the acidity and chemical level the Aquaponics system. This would make it very convenient to oversee and maintain the food growing system.

8. For entertainment, I want the existing LED lights installed in the whole house to be able to function as a visual effects on the playing music. The lights would need to dance base on the music that is currently playing. This would not only add cool points but would also keep my guests busy and entertained.

9. I want all functions and requirements above integrated if not in one system then in one device like a tablet, PC or smart cellphone or both. I want the interface to be easy to understand and easy to use, portable and convenient.

10. Because of the systems functionality, I want the whole system to be  secure especially from outside interference that may pose threat to the safety of the system and the house. I want to utilize the existing hardware that comes with the system to function as security device/alarm not only inside the house but also on its perimeter. My house would not only be very convenient and comfortable to live in but would also be safe and secure.





Tuesday, October 26, 2010

Website Usability

Introduction

     Website usability is this week's topic for our class. It is defined as the ability of a website to provide a well-designed user interfaces that targets the ease-of-use for its users. Usability itself is defined as the study of ease of use, of how quickly a user learns to use a particular human interface. It is defined in five different components:
  • Learnability: The ability of a product to enable users to quickly learn how to use it.
  • Efficiency: The ability of a product to enable users to how quickly can they perform tasks.
  • Memorability: The ability of a product to enable users the ease reestablishing proficiency.
  • Errors: How many errors do users make, how severe are these errors, and how easily can they recover from the errors?
  • Satisfaction: How pleasant is it to use the design? 
   Usability is very important not only to website but also in designing different products. If a website is giving a user a hard time to use, it is pretty much useless. The same thing with different products, if the users can't figure out how to use it, he or she will trash or returned it, therefore results into lost of clients/customers.

Examples of websites that have satisfactory usability:

 


     The homepage of this website pretty much tells you everything about this product and it all fits in your screen without scrolling up and down. It tells you what the product is, why use it and how to download it, and this is only on the first page. All in all, this is a very straight forward page. You don't have to visit other parts/links of the website to find out what the product is all about unless you actually interested in it.




     SpeedTest.net is a website that tests both the download and upload speed of your internet connection. As soon as you go to the site (1st pic), it automatically finds your location.  The only step that you need to take is click on the "Begin Test" and off you go. After testing, it'll show you the results (2nd pic) nicely and easily. The use of this product is very straight forward and effortless.

Examples of websites that have unsatisfactory usability: 


     Although the site and product is really straight forward (just type the location or bus stop and go), it doesn't handle typos very well. A missing single letter on a location will immediately return an error or no result. This will be very frustrating for users who are not familiar or having problem remembering street names here in Hawaii. Not very tourist and elderly friendly.




      This whole website is pretty simple, too simple that is. The homepage is just one big advertisement, which I'm guessing a PDF file from the company's weekly newspaper ad. All the pages here are static. It doesn't give you ability to search for products. It gives you some categories, but it only list different types of product and that's it, nothing specific about the products available.

Wednesday, October 13, 2010

RoboHosting

     Version Control and Configuration Management is the topic for this weeks class. To learn further on this topic, we had to download an SVN client which is a a revision/version control software. It is used to download, edit and commit changes on a project from an open source subversion host. Speaking of a subversion host, we used Google Code to create our own project host. Below are the tasks that we had to do and I completed.
  • Download and install an SVN client. Since I'm using a Mac, I had to download and install SmartSVN which is  an open source and free to download. I was surprised that the installation of this program went pretty quickly and smoothly.
  • Checkout/modify/commit an existing system hosted at Google Projects. We had to download the existing robocode program from our professor's project, modify it and commit the changes. Since the whole class is doing the same thing on the same project, we had to make sure that the program is successfully build using "ant -f verify.build.xml" after it was downloaded from the host and before I commit changes and upload back into the host.

  •  Create a new system hosted at Google Projects. This part of the task was pretty easy but there's a lot of work. I created an account  in Google Code to host my own project - robocode-ert-SpamMusubi. Additional tasks includes creating a discussion board (Google group), create a User Guide, Developers Guide, and add Committers into my project. All this were accomplished.
     I can see this newly acquired knowledge very very useful especially to classes that require group work on a programming class. Come to think of it, this is what exactly I need at work. This will help us to control and track the changes that we created on our company project.
Link:
Robot SpamMusubi Google Project 

Friday, October 8, 2010

RoboTesting

For this week's assignment, we were to create JUnit test cases for our Competitive Robot that we created (see previous post). We were to create different test cases such as behavioral and acceptance tests.

 The Easy Tests

The acceptance test is the easiest to create due to the sample code that was provided to us. This test checks how good or bad your robot is against other robots like the ones in the sample robots. I tested my robot against SittingDuck robot and should win a 100 percent of the time. I also tested my robot against Tracker, but for some reason it is giving me some confusing resultss. I built my robot to win against Tracker atleast 80 percent of the time, and it has been proven when I run it using Robocode. For some reason on the JUnit test, my robot can only win once at the most so the test case that I made keeps failing. I decided to choose another robot that I can compete with mine. Embarrassingly I can't beat any other robots so  I chose Target as my next test case which is pretty much like Sitting Duck.

The Hard Tests

The behavioral test was probably the hardest for my robot since my robot doesn't have any specific movement to follow unlike the Walls robot. My robot follows and moves parallel to its enemy this makes it hard to create a test for this specific behavior. It also moves into the center when it gets near corner. This particular behavior is the only clear and easiest test that I've created. I also created a test case the checks if my robot hits the wall and move on the opposite way. The hardest that I test case that I created is testing the fire power used by my robot. Depending on the its distance against the other robot, it fires a certain bullet power.  

Jacoco Coverage

The Jacoco revealed 96% coverage for my program. The other 4% were "if" cases in my main robot code that was not used upon running the program.

Conclusion

I feel that I could have done better in choosing test cases for my robot. Also my robot needs lots of improvements so it can easily be tested. I need to improve the way my robot moves and fires as it can only beat the stationary robot. Maybe create more predictable or patterned movements so it is easy to create behavioral test cases.

Below is the current distribution of my robot.

Download: RiceMusubi