240 likes | 431 Views
Doh !. Quality Attributes of cloud and mobile apps. http://www.flickr.com/photos/johanl/4934459020. Surely you have experienced this. " More than half (62%) of the 3400 applications installed by our users were uninstalled during the study . "
E N D
Doh! Quality Attributes ofcloud and mobile apps http://www.flickr.com/photos/johanl/4934459020
Surely you have experienced this • "More than half (62%) of the 3400 applications installed by our users were uninstalled during the study. " From "Tales of 34 iPhone Users: How they change and why they are different" by A. Rahmati et al., http://arxiv.org/ftp/arxiv/papers/1106/1106.5100.pdf
Install-uninstall, rinse, repeat • "Many applications have a short lifespan, e.g., 20% uninstalled within a single day and 31% within two weeks. This shows that users often try applications and uninstall them shortly after installation."
Really? • "Games and social networking exhibit a much shorter application lifespan, whereas reference and news have much longer lifespans." • The study authors speculate that people are prone to download lots of games and then see if they like them.
Oh, but it gets much worse • "We had expected paid applications to exhibit a much longer lifespan and lower uninstallation rate compared to their free counterparts. However, … slightly more paid applications were uninstalled. The large number of paid application with one day lifespan shows that users frequently purchase applications which they quickly determine they dislike, losing money in the process. "
So what can we do?!? • What can we do to… • Increase the number of people who try our apps? • Increase the number of users who continue using?
Consider going with a mobile web app • "Our results show that smartphone users are more comfortable exploring websites and web applications than downloaded applications" • Maybe you can get people to try out a mobile web app; then you can transition them to a native app
Enhance the user experience • "Smartphones still need improvement in order to deliver satisfying performance" • By "performance," the authors don't just mean CPU usage, but rather the holistic user experience • Including usability, reliability, etc.
Plan to target multiple phones • "Multiple mobile platforms with appropriately selected features are more likely to compliment the needs of different user groups" • This argues for a portable approach, maybe Titanium or something similar, for native apps. Or go with a mobile web app.
Recognize the need to integrate • Throughout the paper, the authors identify numerous external services that users wanted their apps to integrate with… Email, YouTube, Facebook, SMS, … … of course while maintaining privacy & security. • If you want to meet this need, you need to plan for interoperability with external services
Where does this leave us? • Importance of high quality attributes: • Portability • Usability • Reliability • Performance • Security • Interoperability
Portability • The same program runs properly on multiple platforms without changes to code. • Multiple versions of Android, iOS, Windows, etc., • Multiple versions of the hardware • Screen size, pixel density, keyboard, sensors, etc.
Usability • People can accomplish intended use cases quickly and correctly. • Minimal confusion • Minimal missteps • Minimal "clunkiness" • Note: Usability != aesthetics. Just because something is beautiful doesn't mean it's usable.
Reliability • The software doesn't just work correctly once; it works correctly over and over again. • Can be measured as the mean time between failures • Often described in terms of failure rates (a %) • Failure = a crash, lost data, phone lockup, etc
Performance • The software uses few resources for the amount of work done. • We mainly think in terms of CPU time • But the concept of performance also applies to memory, battery, network, and other resources • And it applies to both the client and the server • Bad performance on the server can cost you big $$$$!!
Security • The software keeps information confidential, available, and correct. • Assume your app will be under attack • Will users' data still be kept private? • Will users still be able to access their data? • Will the users' data integrity remain uncompromised?
Interoperability • The software can exchange data with other systems to provide benefits to users. • Many relationships are feasible… • Your app consumes data from other servers • Your app sends data to other servers • Your app does the same with other mobile apps • Implement standard protocols & interfaces
Concretely, what does all this mean? • Quality attributes… just a fancy idea with no real meaning at the level of code? • Nope: Lots of ways to structure and implement your app to get better quality
Quick examples related to usability • Mobile network connections are slow • Bad coding idea: if you do network operations synchronously, you will lock up the user interface • Good coding idea: Do everything you can to perform network operations asynchronously • Great coding idea: And minimize the number of times the user has to do network operations • E.g., have the user log in just once, and with the option to stay logged in for a week
Quick examples related to security • Mobile network connections and the devices themselves are insecure • Consider using https: all data are encrypted • Consider selectively encrypting some parameters • Be sure to encrypt any usernames or passwords that you store on the user’s device. • Or don't store any usernames & passwords at all
Wait, didn't you say to store usernames? • That's a tradeoff • Storing username on device, or staying logged in, improves usability • Storing username on device, or staying logged in, threatens security • Usability vs security … very common tradeoff
Another example of a tradeoff • Security vs performance • Encrypting data requires resources • No way to escape it So what do you do?
Consider the concept of utility • You have 100 gallons of milk & 1 cup of cereal. Would you buy more milk from the store? • Of course not. If anything, you would get cereal. • You have great performance & bad security.Would you worry about optimizing your code? • Of course not. You would focus on security. • Marginal utility: the value you get from having
So consider this unit to be advice(for the most part) • Suggested process • Create a very basic version of your app • Figure out which quality attributes are too low • Use the advice in this unit to improve the app • Exceptions (things to do right from the start) • Don't do things that will obviously harm quality • E.g., obviously bad usability issues, obvious security holes, etc.