Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Tuesday, June 24, 2014

Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android Book Review

As an individual I can decide which platform I would like to target with my shiny new application, but when working for a company we have to target both industry leaders at the same time. Although I like a good challenge, I am really glad the mobile world now only consists of iOS and Android.

When I first started looking at building consumer applications, Blackberry was still in the picture. My enterprise mobile experience consists of all Microsoft technologies, but that was in a different lifetime using Windows CE, Pocket PC, and Windows Mobile.

This book is a great book for looking at how some of the most commonly used functionality compares across the Android and iOS environments. I have listed the table of contents below to give you an idea of what topics are covered.

Part I: Overview of Mobile App Development
1. Why Mobile Apps?
2. App Design Issues and Considerations

Part II: Developing the Android App
3. Using Eclipse for Android Development
4. Android Navigation and Interface Design
5. Persistent Data in Android
6. Lists in Android: Navigation and Information Display
7. Maps and Location in Android
8. Access to Hardware and Sensors in Android

Part III: Developing the iOS App
9. Using Xcode for iOS Development
10. iOS Navigation and Interface Design
11. Persistent Data in iOS
12. Tables in iOS: Navigation and Information Display
13. Maps and Location in iOS
14. Access to Hardware and Sensors in iOS

Part IV: Business Issues
15. Monetizing Apps
16. Publishing Apps

Part V: Appendixes
A. Installing Eclipse and Setup for Android Development
B. Installing Xcode and Registering Physical Devices
C. Introduction to Objective-C

The authors tell us in the beginning of the book that it "is not intended to be a comprehensive work on the subject. The book assumes programming knowledge. At a minimum you should have taken at least one college-level course in the Java or C programming languages." and "Experience with an IDE is a plus." I completely agree.

I think that you should also have some experience with Objective-C. Although the authors provide an introduction to Objective-C, I am glad I had prior experience. I also think you should have a decent grasp of Android concepts like Activities, Layouts, Fragments, and Intents. Neither are needed, while at the same time having both helped me.

What about Swift's impact? Swift put a big crinkle into a lot of people's learning plans. I know that as soon as it was announced a lot of people dropped out of training they had planned. While getting started in Objective-C may not 'seem' to make sense, continuing to learn the iOS libraries used to accomplish framework tasks does.

Also, I don't think it is going to be possible for an iOS developer to not know their Objective-C and C. In other words, I still think it makes sense to continue with your Objective-C learning plans. I have no plans to stop learning either one anytime soon. So the short answer is, that in my opinion, this book is as relevant now as it was the day before the Swift announcement was made.

The authors make the chapter's code samples available for download. I ran into several issues getting some of the projects to compile and run in both the Android and the iOS code. I got most of them running in a relatively short period of time. I didn't have the time, or the need, to get the rest of them working.

The quality of the book itself is great. It is printed on high quality paper, and it is in color. Color always makes reading the code easier and is much nicer when looking at screenshots of the apps, Eclipse, Xcode, or dialogs.

My favorite part of the book is being able to flip back and forth between the iOS and Android topics to see how each platform handles the implementation of the topic's functionality. The book has really come in handy with the current project I've just started. We are developing an Android and iOS client which will run against a RESTful service implemented with Microsoft's ASP.NET Web API framework.

All in all I think this is a great read for those that need to develop for both Android and iOS.


Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android

Learning Mobile App Development: A Hands-on Guide to Building Apps with iOS and Android

posted by tadanderson at 12:43 PM 0 comments

Sunday, June 15, 2014

Android for Programmers and Android How to Program (2nd Editions) Book Reviews

This review is for two books. It is for Android: How to Program (2nd Edition) and Android for Programmers: An App-Driven Approach (2nd Edition) . Why? Because Android: How to Program (2nd Edition) includes the entire Android for Programmers: An App-Driven Approach (2nd Edition) book.

Android: How to Program (2nd Edition) is in black and white and it also includes a Java language overview/reference. This book is great for the programmer coming from another language. Having the Java reference included as the second half of the book comes in really handy. Lately I have spent most of my time in Objective-C building client apps and C# building Web API RESTFul services. Having the Java reference handy was helpful.

Android for Programmers: An App-Driven Approach (2nd Edition) is the first half of Android: How to Program, 2nd Edition. It is a much nicer read because it is in color. This is the book for the experienced Java developer who wants to get up to speed on Android development.

The perfect book would have been Android: How to Program (2nd Edition) in color.

Below is the table of contents for Android for Programmers: An App-Driven Approach (2nd Edition) -

1. Introduction to Android
2. Welcome App
3. Tip Calculator App
4. Twitter® Searches App
5. Flag Quiz App
6. Cannon Game App
7. Doodlz App
8. Address Book App
9. Google Play and App Business Issues

Below are the chapters added to the second half of Android: How to Program (2nd Edition) -

A. Introduction to Java Applications
B. Introduction to Classes, Objects, Methods and Strings
C. Control Statements
D. Methods: A Deeper Look
E. Arrays and ArrayLists
F. Classes and Objects: A Deeper Look
G. Object-Oriented Programming: Inheritance and Polymorphism
H. Exception Handling: A Deeper Look
I. GUI Components and Event Handling
J. Other Java Topics
K. Operator Precedence Chart
L. Primitive Types

The projects cover a ton of functionality, but the best part about the projects is that the accompanying downloadable code compiles and runs with no tweaking. One thing I thought was weird though, is after going to the trouble to log on to the companion website, you find nothing but the source code there, which you can download without registering. It claims to have "Premium web chapters", but at the time I am writing this review there are none.

The projects section of the book does a great job of covering how to use Eclipse. The authors use the Graphical Layout Editor to build the app's GUI. This is a nice approach for those just starting with Android development. The book mentions Android Studio, but uses Eclipse, which is good. I have played with Android Studio, but it has a way to go before it is ready for primetime.

For the second half of the book I just use jEdit to play with the files. The examples come as *.java files that you can compile and run. I was just using terminal and TextEdit, but the syntax coloring in jEdit and the Console plugin helped make it a more pleasurable experience.

Another thing I liked about the book is that it covers Android 4.4 (KitKat). I have some other Android books I have been reading, but they have not been updated yet. The authors also point to other sites as resources to learn more about a topic, or to point out locations you will be able to find the latest info available on Android as updates are made to the OS.

Chapter 9, the last chapter before the Java overview section does a great job of introducing Google Play and pointing you to the information on the Android developer site. At the rate things change, that makes more sense than putting it in the book and the information being out of date in 2 months.

The book has an outstanding index. That may seem like a dumb thing to point out, but when you have a book with a crappy one, you learn to appreciate the good ones.

Like I said above Android for Programmers: An App-Driven Approach (2nd Edition) is the book for the experienced Java developer who wants to get up to speed on Android development. Android: How to Program (2nd Edition) is great for the programmer coming from another language. Having the Java reference included as the second half of the book comes in really handy.

Saying Android: How to Program (2nd Edition) is a great book, is saying they both are great books. I highly recommend one or the other.

Android How to Program (2nd Edition)









Android for Programmers: An App-Driven Approach (2nd Edition)



Android How to Program (2nd Edition)



Android for Programmers: An App-Driven Approach (2nd Edition)

posted by tadanderson at 9:22 PM 0 comments

Tuesday, June 10, 2014

Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps Book Review

Designing and developing natural user interfaces for touch and gesture on mobile devices is not the same as web and desktop UI design and development. Mobile devices are used in different contexts, and bring different personas to the table. Having web and desktop UI design experience does not make you a qualified mobile UI designer.

Although it was much worse back in the Dot Com Boom days, I still see publication and commercial print designers trying to design web sites the way they design a magazine. A lot of them finally figured out web design is different, and we are now dealing with getting them to realize web and desktop UI design experience does not make you a qualified mobile UI designer.

This book is a great place for them to start. It is the book for the beginner to get started with mobile interaction design. It is perfect for designers, developers, architects, project managers, and testers migrating from web and desktop application development to start with mobile interaction design.

It starts with an introduction to mobile interaction and sets up the context that the book's topics live in. The authors start at the very beginning of the mobile timeline and explain how we got to where we are today.

Chapter 1. A Look at Mobile and Its Main Players
Chapter 2. Design for Humans, by Humans
Chapter 3. Dynamic Differences in Mobile Design
Chapter 4. First Sketches of an App
Chapter 5. Finding the Right Design Flow
Chapter 6. Designing for Visual Appeal
Chapter 7. Working with Programmers
Chapter 8. Making Apps Usable by All
Chapter 9. Designing for Simplicity
Chapter 10. Gaining Valuable Feedback
Chapter 11. Refreshing a Design
Appendix A. Standout Apps
Appendix B. Apps for Designers
Appendix C. Artwork Requirements for Android and iOS

This book does a great job of pointing out the basics. Some times they use sidebars like this one- "When building applications, enable operating system features such as text-to-voice, color blindness controls, and enhanced zoom modes to see how your on-screen interactions work with these features…"

Sometimes I felt they got a little too basic. Like with this sidebar for example- "Don’t confuse the term “interface chrome” with the Google Chrome browser. Interface chrome is somewhat common computer software design slang used to describe buttons of an interface.…"

I actually laughed at that one because I thought it was just a joke. The second half of the tip clued me in. It wasn't a joke.

One of the coolest things this book did for me was push me to try Balsamiq Mockups. I have seen the tool used before, but I have been using SketchFlow and Storyboards in PowerPoint.

When I am in an environment where users believe a prototype and production release are the same thing, I go to extra lengths to delineate the two. Tools that present mockups that look like they have been sketched really help to get the point across.

Realistic mockups send the message that the app has screens, buttons, and if the screen changes when you clicked on the buttons, it must be done and ready to go. Users don't understand that they are just screens for vetting the UI and not working application screens.

The authors have a way of bringing to light things that are subtle and sometimes not so obvious. An example of that would be sandboxes and the way your applications now run within them. When designing mobile applications this needs to be taken into account.

The authors have created a website and have a page dedicated to each chapter of the book. Each page contains all the resources that they point out throughout the chapter. It is a very convenient way to get to the resources that they talk about.

If you are expecting a book with a ton of screenshots explaining what was wrong with each one, and then providing a solution to the problem, look elsewhere. It does have a ton of examples, but this book covers topics in a way that makes you think about them.

The last thing I will say about the book is that it is current. In the brutal world of mobile that says a lot about the book. I don't know how many book I have received on the day it was published only throw it aside because it is no longer current.

I highly recommend this book for every role on a mobile project. Everyone should understand mobile integration design at the level presented in the book.


Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps

Essential Mobile Interaction Design: Perfecting Interface Design in Mobile Apps

posted by tadanderson at 7:21 PM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger