Thursday, November 10, 2011

Week 12 MIST 7500 - Mobile App Development

It seems like everyone nowadays has a mobile app.  There are hundreds of thousands of them that reside in the Android Marketplace and the AppStore...and the lists grows daily.  Everything from Games to Productivity software is covered, you can really find an app out there for just about everything.

So what goes into making an app?  Is there a process around it?  What tools are used to develop these? Apple vs. Android?

We had a guest speaker, Chuck Hudson, explain to us some of the ways that his company (and his previous companies) are putting these apps out on the market).  Below is a summary of that guest lecture:

1)  What goes into making an app? Is there a process? Making a mobile app is really no different than making a non-mobile application.  The same kind of thought process should be put into it.  Prototyping, Design, Requirements, Testing, etc.  All of these are critical components that need to be thought out.  Chuck stressed the importance of Prototyping or Storyboarding.  Even if it's just mapping out screens on napkins, Chuck says this is a critical part of the process.  And keep screens down to a minimum (10 - 15 max).  The less complex the better.  He also stressed getting your app out onto the market as soon as possible.  Better to put out a less than ideal app soon, than wait for something with all the bells and whistles.  Another motto he spoke of was "make sure your app does one thing very well."  So rather than have a "jack-of-all-trades" type app, seek to get something that will really excel at one thing, and then uses future releases to build on that and add additional functionality.  Finally, he stressed the importance of sound testing.  He stressed the use of Beta Testing, getting the app in the hands of your consumers for their opinions.  This is really the best kind of feedback you can get, and will help you make better apps.

2)  What tools are used?  Android or Apple?  Developer kits have been created that make the process of creating apps much simpler.  It's like working with templates instead of starting from scratch.  It keeps development time down, and you have an established set of parameters and protocols that you have to follow.  Chuck mentioned the importance of testing your apps with an actual device however, instead of relying on the simulators that come with the Dev Kits.  These kits are free for both Android and Apple, so literally anyone can build and app and publish it to the appropriate market/store.  Android vs. Apple?  Well Chuck was a bigger fan of Apple since they were first to market with the iPhone back in 2007.  But Android has made some great strides the past few years.  He mentioned fragmentation and how Android has some work that needs to be done with regard to that (too many different kinds of Android).  Android has a faster certification process, and Apple's is a little more stringent.  Ultimately, in this market, you almost have to create your app for both OS's, so prepare for that.

Mobile Development is definitely taking off, and it's a very exciting discipline.  I'm excited to get started with our own app development in the program.

Week 12 MIST 7500 - Web Services







So what exactly is Web Services?  According to WC3 the definition of Web Services is:

A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.

Sounds rather complex, but when you think about it simply, it's basically one machine talking to another without human intervention over some medium. 




One of the things we have been doing this semester is using Amazon's Web Services (or their Cloud technology).  No longer do we need physical machines to house our apps or databases, we can store all of them on the cloud and they can easily speak to one another through the necessary protocols. 

So what is Big Web Services?

Big web services use XML messages that follow the Simple Object Access Protocol (SOAP) standard, an XML language defining a message architecture and message formats. Such systems often contain a machine-readable description of the operations offered by the service, written in the Web Services Description Language (WSDL), an XML language for defining interfaces syntactically.

SOAP is mostly used for Enterprise applications to integrate wide types and no. of applications and another trend is to integrate with legacy systems, etc. On the Internet side of things — Google is consistent in implementing their web services using SOAP, with the exception of Blogger, which uses XML-RPC.

What is REST?
 
REST defines a set of architectural principles by which you can design Web services that focus on a system's resources, including how resource states are addressed and transferred over HTTP by a wide range of clients written in different languages. If measured by the number of Web services that use it, REST has emerged in the last few years alone as a predominant Web service design model. In fact, REST has had such a large impact on the Web that it has mostly displaced SOAP- and WSDL-based interface design because it's a considerably simpler style to use. 

Differences between the two:

The main advantages of REST web services are:
  • Lightweight – not a lot of extra xml markup
  • Human Readable Results
  • Easy to build – no toolkits required
SOAP also has some advantages:
  • Easy to consume – sometimes
  • Rigid – type checking, adheres to a contract
  • Development tools

For consuming web services, its sometimes a toss up between which is easier. For instance Google’s AdWords web service is really hard to consume, it uses SOAP headers, and a number of other things that make it kind of difficult. On the other hand, Amazon’s REST web service can sometimes be tricky to parse because it can be highly nested, and the result schema can vary quite a bit based on what you search for.

Bottomline:  Choose Wisely!