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






Thursday, June 27, 2013

Learning iOS Design: A Hands-On Guide for Programmers and Designers Book Review

This book is not what I was expecting it to be. I was expecting a book with a ton of screenshots explaining what was wrong with each one, and then providing a solution to the problem. I also expected screenshots of all the different controls you can use and for them to be shown in different states.

I am happy to report this book did not meet my expectations, it well exceeded them. Quite frankly, my expectation was well surpassed because the author does not just show you what to do and not to do, he explains why you should do things.

Part I: Turning Ideas into Software walks you through the phases of design. The first seven chapters of the book walks through the design process in detail. It points out the importance of following a design process. The chapters in Part I are listed below.

Part I: Turning Ideas into Software
1. The Outlines
2. The Sketches
3. Getting Familiar with iOS
4. The Wireframes
5. The Mockups
6. The Prototypes
7. Going Cross-Platform

Part II: Principles presents universal principles that apply to any design and that you should follow if you want to craft an effective app that people will appreciate and even love. To make sure your app works on every level, each chapter in this part is based on one of the three levels of cognition identified by psychologist Donald Norman. Many of these principles are applicable to all software design, but here they’re tailored to the strengths and challenges of iOS.

The paragraph above is straight out of the book. The author summarized Part II perfectly, so I thought I might as well use that summary. Part II really digs into some topics I have had to deal with in the past developing mobile applications and desktop applications.

The biggest problem we have had in the past was implementing perceived performance. We used a lot of behind the scenes syncing while the user was in one section of the app that would lead them to the section we were saturating with data. We also did a lot of local caching in order to make sure the transaction took place without having to tell the user to try again. This was a normal side effect of slow connections.

In more recent years network bandwidth has increased, but so have expectations in feature rich functionality and the users always seem to want more data.

The chapters in Part II really do a great job of covering the topics you need to understand in order to make your user interface feel like it is just an extension of the user.

Below are the chapters in Part II.

Part II: Principles
8. The Graceful Interface
9. The Gracious Interface
10. The Whole Experience

Part III: Finding Equilibrium contains some really great advice. It's chapters strive to keep your designs in balance. Balance is not something that just happens. If you want a balanced application, you need to think about what you are building. Emergent Design and Emergent Architect are for those that know what they are building because they have already built the same thing 2 dozen times with the same 6 teammates.

I prefer proof of concepts, prototypes, and the advice the author gives in Part III. I have listed the chapters below.

Part III: Finding Equilibrium
11. Focused and Versatile
12. Quiet and Forthcoming
13. Friction and Guidance
14. Consistency and Specialization
15. Rich and Plain

In chapter 3 the author covers controls. I think it is there that he mentions for the third time that you should read the iOS Human Interface Guidelines, and he is right. As he covered the controls in chapter 3 I had a copy of the iOS Human Interface Guidelines sitting by my side so I could read more about the control if I wanted to, or get a look at the control visually.

I found the author's writing style made this very easy to read. I didn't have to force myself to pick it back up, it was something I looked forward to.

The author has a collection of Photoshop and OmniGraffle resources available on the book's companion site.

All in all I found this a very refreshing read. My role as a Software Architect takes into consideration a lot quality attributes, and usability is always one near the top of the list. I will be keeping this book by my side so I can reference it.

If you are a programmer, you must read this book to so you can see how the guys and gals that make our user interfaces go about their process. Understanding the way they think also help to bridge the communication gap that is there sometimes.

Learning iOS Design: A Hands-On Guide for Programmers and Designers

posted by tadanderson at 8:26 PM 0 comments

Monday, June 17, 2013

Learning iPad Programming: A Hands-On Guide to Building iPad Apps, Second Edition Book Review

As I started to read this book my plan was to skim through the first 6 chapters and then really dig in starting with chapter 7 App Design. I figured with a year of iOS programming under my belt the first few chapters would just be regurgitating a bunch of stuff I already knew.

To some degree I was correct, but I did not count on the book's awesome layout and the authors' great writing style to keep pulling me into the chapter's topics, making this a much longer read than I had planned on. By the time I reached chapter 4 I had given up on skimming, since I wasn't really skimming anyway. I took 4 books on a weeklong dive trip, and found myself still reading this book when the plane bringing us home landed.

The book is massive, it covers a ton of topics, and it covers them in depth. The book is broken down into three parts. Part I Getting Started includes seven introductory chapters. The author does a great job in these beginning chapters getting programmers that are not familiar with iOS development up to speed on Xcode, interface builder, objective-C, Cocoa, the developer program (provisioning your iPad), and application design.

I have listed all three parts along with the chapters that they contain below to give you an idea of how many topics are covered in this book.

Part I: Getting Started
1. Your First App
2. Getting Started with Xcode
3. Get Started with Interface Builder
4. Getting Started with Objective-C
5. Getting Started with Cocoa
6. Provisioning Your iPad
7. App Design

Part II: Building PhotoWheel
8. Creating a Master-Detail App
9. Using Table Views
10. Using Collection and Custom Views
11. Using Touch Gestures
12. Adding Photos
13. Data Persistence
14. Storyboarding in Xcode
15. View Controllers and Segues
16. Building the Main Screen
17. Creating a Photo Browser
18. Supporting Device Rotation
19. Printing with AirPrint
20. Sharing with Others
21. Web Services
22. Syncing with iCloud
23. Producing a Slideshow with AirPlay
24. Visual Effects with Core Image
25. Going Universal

Part III: The Finishing Touches
26. Debugging
27. Distributing Your App
28. The Final Word

A. Installing the Developer Tools

The thing I like best about this book is the thing I thought I would dislike the most. That is Part II: Building PhotoWheel which is the meat and potatoes of the book, builds one application throughout the 18 chapters. I find most books that do that spend way too much time on explaining the purpose of the application and the business reasons for its modules and all the chatter gets to be too much. They lose their technical context and cross over to teaching you about a certain domain.

That is not the case with this book. The author did a great job of selecting an application that has a purpose that is simple to explain, but has a lot of technical needs to implement. The author does a great job of staying focused on technology. Throughout the process of building the application the authors cover Master-Detail Apps, Table Views, Collection Views, Custom Views, Touch Gestures, UIImagePickerController, Core Data, SQLite, Storyboarding, Segues, Printing, using web services and iCloud, and how to make your app a universal app.

That is a ton of topics! The best part of all the topics they cover is that they cover them in-depth, and then show you how they are used in a real-world application.

I liked how the authors introduced Core Data by showing you how to add it to an application that already exists. This is something I find myself doing a lot.

All the image manipulation in this book also came in very handy. One of the apps I am building needs to do a lot with images and this book was my lone source of getting done what I need to get done.

The book ends with a chapter on using the debugging tools, a chapter on disturbing your application , and a short appendix on how to install the development tools.

The book is in full color which makes it really nice to read and like I said in the begin the authors' great writing style makes it an easy read.

The downloadable code is organized by chapter. It is very usable and it is bug free. It just work which is really nice. The one thing you will have to do is load some photos onto the iPad simulator. To do that all you have to do is open Safari on the simulator and drag some photos onto safari. Once there you just hold down a click on the image and click save when the context menu comes up.

Although this book is written for iPad development, iPhone developers will benefit from reading it too. Almost all the core topics touched on apply both iPad and iPhone development. I highly recommend it to both.

Learning iPad Programming: A Hands-On Guide to Building iPad Apps (2nd Edition)

posted by tadanderson at 7:33 AM 0 comments

Monday, June 10, 2013

Mobile Strategy: How Your Company Can Win by Embracing Mobile Technologies Book Review

I am currently involved in helping nail down mobile application management and native application development plan which is part of a larger mobile strategy, so this book arrived at the perfect time.

There is a lot of hype about how difficult building and deploying native applications can be. That same type of hype drove businesses to spend millions of unjustified dollars during the dot-com boom. Companies were paying outrages amounts of money for simple brochureware web sites. The same thing is happening today with mobile application development.

There are a lot of companies offering to provide prebuilt customizable frameworks, others offering to build a custom solution, and yet others using code generation tools offering you faster time to market. Most if not all of these options lead to vendor lock-in and/or architectural lock in.

Frameworks built without taking into consideration a company’s unique architectural needs have a very low degree of modifiability and offer ridged solutions. The solutions usually end up costing much more to maintain and make changes too.

On the other side of the coin, I am not to saying native mobile applications are simple to build. Moving to a mobile client application development environment with a requirement for natural user interfaces using touch is much different than building web sites. The correct architecture is absolutely necessary and it usually needs to take advantage of data assets already in place.

The dot-com boom days produced a ton of garbage created by naive developers that thought software development was an outlet for their undeniable artistic talents that until then had been held captive. They were finally free to create… at least until their companies went bankrupt as a result of their artistic genius.

So what is the point of all that blather? The point is to set the context of our current state of connectivity as a society. The dot-com boom was the result of the internet bringing information to every home with a PC. It created a B2C and B2B world over night. It was unchartered territory, and a lot of people went flying into it with no plan at all.

We are now faced with information being delivered to every person, all the time, and usually in real-time. To blindly just blaze forward without a strategy will most likely land you in the poor house. You must approach the mobile world with a solid plan in place.

This book thoroughly covers all the areas that must be looked at when developing a mobile strategy. I have listed the chapters below included in the book to give you a look at the high level topics covered.

1. Introducing Mobile Enterprise
2. Defining Business Value
3. Mobile Business Challenges
4. The Mobile Framework
5. Mobile Development
6. Mobile Security and Management
7. Mobile Business Transformation
8. Planning a Mobile Project
9. SoCloDaMo (Social + Cloud + Big Data + Mobile)
10. International Considerations
11. Case Studies and Mobile Solutions
12. Moving Forward

Although we already had most of our mobile strategy in place it was nice to be able to double check that we were heading in the right direction. I wish I had this book a year ago, and I am really glad I have it now.

In chapter 4 the author introduces a framework that helps give a view of the entire mobile landscape. It is a visual representation followed by a detail description of each part of the framework. The framework does a great job of setting the context of the elements needed to create a mobile strategy. At a high level it includes Business Results, Mobile Tasks, Functional Patterns, Mobile Transformation, Mobile Development, and Mobile Security and Management.

The book has a ton of advice that will help you avoid going down the wrong path, and points out the things you should be thinking about. For example the book points out that "It can be overwhelming to start to develop a mobile strategy that takes into account business-to-consumer, business-to-enterprise, multiple device platforms, different application types (for example, native, web and HTML5, hybrid, and virtual), as well as bring your own device (BYOD). Developing a mobile strategy starts with answering a few key questions:", and then goes on to provide the list of questions to help you get started.

The book does a really good job of remaining unbiased. It covers the bad and the good of the different choices you need to make, which provides a balanced context for you to apply the recommendations to your own scenarios.

One of my favorite things about this book is the attention it gives to security. They devote a chapter to it in which they cover mobile's unique characteristics that impact security because they are used differently than pcs. The chapter includes enterprise security requirements, mobile security and management consideration, mobile device management and security, mobile network management and security, mobile application management and security, and the adaptive mobile security approach.

Chapter 8 does a great job of outlining a generic mobile plan that you can use to start with. It covers defining mobile team structure and leadership, defining value goals, what will drive value, defining value indicators and value measurements, what does the customer want, defining functional patterns and capabilities, assess gaps using the mobile framework presented in chapter 4, defining an overall roadmap and plans based on a mobile framework using the mobile framework presented in chapter 4, and adjusting approach to improve functional capabilities.

This book is an absolute must read for those looking to enter the mobile world. Even if you already have, this book is a great book to verify you have taken the right steps. It will help bring to light why you are having issues that could be cause by something happening up stream in your process.

I liked this book so much that I have 2 more on the way. One for my CIO and one for the Director of Enterprise Architecture at my company.

Every CEO, CIO, IT Director, Enterprise Architect, Software Architect, Business Analyst, and Developer should read this book from cover to cover.

Mobile Strategy: How Your Company Can Win by Embracing Mobile Technologies

posted by tadanderson at 3:46 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