Friday, May 16, 2014

Tools

Tools in software is designed to help developers create better software.  Some common software engineering tools is the git repository, Confluence wiki, and the Jira bug tracking software.  These tools are used to help developers collaborate on the projects. 




Git hub is a popular service for software development.  It uses the Git revision control system so that project members can check in and out code that they are working on [1].  GitHub has other features such as issue tracking and code review.  This tool helps developer keep track of their code changes in a single place so that other developers can view those changes.  It also lets multiple developers work on the same project and makes it relatively easy to merge the multiple changes that were made by multiple coders.

Another is the Confluence wiki.  A wiki is a great place to document the software such as: 
  • how to set up the development environment
  • what is the current architecture of the software.
  • what important changes were made to the software
  • etc...
The confluence wiki integrates with the Jira tracker.  The Jira tracker tracks bugs, issues, assignments etc... [3][4]  All of these tools are used to help developers track their projects so that they can develop better software.


[1]http://en.wikipedia.org/wiki/GitHub
[2]https://github.com/features
[3]https://www.atlassian.com/software/confluence?_mid=04703585bdc248e20d2cfcea35b01f8d&gclid=CKeElr6lsr4CFU5afgod2QgAGQ
[4]https://www.atlassian.com/software/jira

Android



Android is a Linux kernel based operating system that is used on smart phones and tablets  The user interface has the basic touch screen action such as pinching, swiping, tapping, reverse pinching.  Initially the operating system was developed by Android, inc., which was backed by Google who eventually bought the company in 2005 [1].
Android robot.svg

Like all modern operating system, the Android operating system has a layered architecture where the Application is the top layer of the stack and the Linux kernel is the lowest layer.  All Android devices ship with a set of core application, email client, SMS program, calendar, maps, browser, contacts, and other features.  All of the application is written in Java.  The architecture is designed to simplify and re-use the application components.  For example, say that you created a small note taking application and you have an address written down in the note application, you can have your application directly access the map application instead of having the user switch to the map application.  The Android operating system has C/C++ libraries that can be accessed through the application framework. [2] 

How Android works: The big picture

Figure 1.  Android component stack

As you can see from the Android component stack in Figure 1.  The lowest layer is the Linux kernel.  The Library Layer contain the different C/C++ libraries while the very top layer is the Application layer.

As of 2011 Android has the largest install base for mobile devices.  There were more android devices sold in 2013 than Windows, iOS and Mac OS devices combined.  Also as of July 2013 there were 1 million android apps published and 50 billion apps downloaded.  Currently Google is working on putting the android operating system on other devices such smart watches and Google glasses. [2]

[1]http://en.wikipedia.org/wiki/Android_%28operating_system%29
 
[2]Developers, Android. "What is android." http://developer. android. com/guide/basics/what-is-android.html 2 (2011).

Beta Testing

One of the most important process in developing a software product is beta testing.  During this process, the product is released to a few customer for use in the real world.  This evaluation gives developer information on whether or not the software is ready for production release.  It also allows a company to effectively “listen” to the customer.  No other process in development can effectively gauge what the customer is thinking [0].      

Beta testing also helps to find out what the customer want and need and also helps determine or confirm the target market.  By providing these customer needs, it shows that you care and value the customers opinion.  By building this relationship with the customer also builds a good reputation in the product and the company.

In order to build a good reputation, the customer must have a positive perception of the product.  Perception is important because whether the problem is true or false the perception makes it true.  For example, During the 1990's, cheetah modem cooperation was releasing their fastest modem yet which was 20% faster than the competitors.  However during beta testing process, the customer felt that the modem was slower than the competitors because it took longer for it to connect.  Although the modem was faster once it connected the customer perception was negative because the slow connection.  They perceived it to be slower because it started off slow.  The company fixed the problem by improving the connection speed.

Figure 1 an old pci cheetah modem. [1]

Beta testing is an important step in the software development model.  It helps the company find out what the customer actually thinks of the product before it is released for sale.

[0]Beta Testing for Better Software by Michael R. Fine
[1]http://www.epartsandmore.com/images_products/hp-56k-cheetah-internal-pci-92463lar.jpg