You are previewing Mobile Applications: Architecture, Design, and Development.
O'Reilly logo
Mobile Applications: Architecture, Design, and Development

Book Description

Delivering high-value mobile applications-from start to finish

This is the definitive guide to building successful mobile applications. It covers every facet of development and deployment, including business issues, architectural design, integration with existing web and legacy applications, and the management of mobile application development projects. It also presents three application case studies that demonstrate best practices at work in real projects. Coverage includes:

  • Requirements, design, development, integration, testing, release, and maintenance

  • "Mobilizing" existing application architectures

  • Building effective user interfaces for mobile applications

  • Fat-client and thin-client scenarios

  • Managing client-server data transfer

  • Securing mobile applications: authentication, encryption, and data self-destruction

  • Full Microsoft .NET code examples for cell phones, Pocket PCs, and Tablet PCs

Mobile Applications is indispensable for everyone who needs to deliver robust, high-value mobile solutions: project managers, technical leaders, architects, and experienced developers alike.

Table of Contents

  1. Copyright
  2. Praise for Mobile Applications: Architecture, Design, and Development
  3. About Prentice Hall Professional Technical Reference
  4. Hewlett-PackardĀ® Professional Books
  5. Foreword
  6. Preface
    1. Intended Audience
    2. Acknowledgments
    3. Download Site
  7. 1. Introduction
    1. 1.1. What is Mobility?
      1. 1.1.1. Portability
      2. 1.1.2. Usability
      3. 1.1.3. Functionality
      4. 1.1.4. Connectability
    2. 1.2. Developing Mobile Applications
      1. 1.2.1. Umbrella Considerations
      2. 1.2.2. Fallacies About Mobile Application Development
    3. 1.3. Summary
  8. 2. Business Context
    1. 2.1. Who is Going Mobile?
      1. 2.1.1. Workers
      2. 2.1.2. Consumers
    2. 2.2. What Do People Want To Do?
      1. 2.2.1. Communication
      2. 2.2.2. Work
      3. 2.2.3. Entertainment
      4. 2.2.4. Education
      5. 2.2.5. Location
    3. 2.3. Why Mobilize Your Enterprise?
      1. 2.3.1. Pros
      2. 2.3.2. Cons
    4. 2.4. Summary
  9. 3. Mobile Application Architectures
    1. 3.1. Client-Server
      1. 3.1.1. Layers
      2. 3.1.2. Tiers
    2. 3.2. Client
      1. 3.2.1. Thin Clients
      2. 3.2.2. Fat Clients
      3. 3.2.3. Web Page Hosting
    3. 3.3. Server
      1. 3.3.1. One-Tier Architecture
      2. 3.3.2. Two-Tier Architecture
      3. 3.3.3. Three-Tier Architecture
    4. 3.4. Connection Types
      1. 3.4.1. Always Connected
      2. 3.4.2. Partially Connected
      3. 3.4.3. Never Connected
    5. 3.5. Synchronization
      1. 3.5.1. Continuous Communication
      2. 3.5.2. Store-and-Forward Synchronization
    6. 3.6. Interesting Architectural Patterns
      1. 3.6.1. Pattern Matrix
      2. 3.6.2. Zero-Layer, Three-Tier, Always Connected Architecture
      3. 3.6.3. Three-Layer, Three-Tier, Partially Connected Architecture
    7. 3.7. Good Architectural Design Tenets
      1. 3.7.1. Requirements
      2. 3.7.2. Technology Independence
      3. 3.7.3. High Performance and Availability
      4. 3.7.4. Scalability
      5. 3.7.5. User System Requirements
    8. 3.8. Summary
  10. 4. Mobile Infrastructure
    1. 4.1. Mobile Device Types
      1. 4.1.1. Pagers/RIM Devices
      2. 4.1.2. Cellular Telephones
      3. 4.1.3. PDAs
      4. 4.1.4. Tablet PCs
      5. 4.1.5. Laptop PCs
      6. 4.1.6. Hybrids
      7. 4.1.7. Capability and Cost Considerations
    2. 4.2. Mobile Device Components
      1. 4.2.1. CPU
      2. 4.2.2. Operating System
      3. 4.2.3. Memory
      4. 4.2.4. Disk
      5. 4.2.5. Batteries and Power
      6. 4.2.6. Connection Ports
      7. 4.2.7. Screen
      8. 4.2.8. Keyboard
      9. 4.2.9. Mouse, Stylus, Pen, and Voice
      10. 4.2.10. Peripherals
    3. 4.3. Connection Methods
      1. 4.3.1. Wired
      2. 4.3.2. Wireless
    4. 4.4. Summary
  11. 5. Mobile Client User Interface
    1. 5.1. User Interface
      1. 5.1.1. Device I/O
      2. 5.1.2. Keyboard
      3. 5.1.3. Mouse
      4. 5.1.4. Stylus, Pen, and Touch-Screen
      5. 5.1.5. Speech
      6. 5.1.6. Scanner
      7. 5.1.7. Screen
    2. 5.2. Application Content
      1. 5.2.1. Text
      2. 5.2.2. Images
      3. 5.2.3. Animation
      4. 5.2.4. Sounds
      5. 5.2.5. Movies
    3. 5.3. User Experience
      1. 5.3.1. Page Layout and Navigation
      2. 5.3.2. Personalization and Customization
      3. 5.3.3. Help
      4. 5.3.4. Search
    4. 5.4. Best Practices for Developing a User Interface
      1. 5.4.1. Consider Hardware Dependencies
      2. 5.4.2. Consider Software Dependencies
      3. 5.4.3. Consider Absolute and Relative Sizing and Positioning
      4. 5.4.4. Reduce Horizontal Scrolling
      5. 5.4.5. Use Text Extensively
      6. 5.4.6. Check Image Scaling
      7. 5.4.7. Reduce Image Size and Quantity
      8. 5.4.8. Reduce Animation
      9. 5.4.9. Reduce Input and Typing
      10. 5.4.10. Implement Separate Page Sets
    5. 5.5. Summary
  12. 6. Mobile Client Applications
    1. 6.1. Thin Client
      1. 6.1.1. Development Considerations
      2. 6.1.2. Architecture
    2. 6.2. Fat Client
      1. 6.2.1. Development Considerations
      2. 6.2.2. Common Use Cases
      3. 6.2.3. Architecture
      4. 6.2.4. Presentation Layer
      5. 6.2.5. Business Layer
      6. 6.2.6. Data Access Layer
    3. 6.3. Web Page Hosting
      1. 6.3.1. Development Considerations
      2. 6.3.2. Architecture
      3. 6.3.3. Presentation Layer
      4. 6.3.4. Business Layer
      5. 6.3.5. Data Access Layer
    4. 6.4. Best Practices
      1. 6.4.1. Consider Thin Versus Fat Versus Web Page Hosting
      2. 6.4.2. Increase Code Abstraction and Reusability
    5. 6.5. Summary
  13. 7. Client-Server Data Transfer
    1. 7.1. HTTP and HTML
    2. 7.2. WAP and WML
    3. 7.3. Synchronization Software
    4. 7.4. RDA and Merge Replication
    5. 7.5. SOAP and WEB Services
    6. 7.6. Message Queues
    7. 7.7. TCP/IP
    8. 7.8. Summary
  14. 8. Mobilizing Existing Application Architectures
    1. 8.1. Evolution of Enterprise Architectures
      1. 8.1.1. Client-Server Architecture
      2. 8.1.2. Web-Enabled Service-Centric Architecture
      3. 8.1.3. User-Centric, Single Sign-On Web Architecture
    2. 8.2. Anatomy of an Enterprise Web Architecture
      1. 8.2.1. Architecture
      2. 8.2.2. Logical View
    3. 8.3. Considerations When Mobilizing Existing Applications
      1. 8.3.1. Architecture
      2. 8.3.2. Users, Roles, and Entitlements
      3. 8.3.3. Presentation Tier
      4. 8.3.4. Application Tier
      5. 8.3.5. Database Tier
      6. 8.3.6. Existing Back-end Systems
      7. 8.3.7. Authentication
      8. 8.3.8. Enrollment
      9. 8.3.9. Administration
      10. 8.3.10. High Availability and Performance
      11. 8.3.11. Scalability
      12. 8.3.12. Security
    4. 8.4. Summary
  15. 9. Security
    1. 9.1. Mobilized Enterprise Web Architectures
      1. 9.1.1. Vulnerabilities
      2. 9.1.2. Threats
      3. 9.1.3. Mitigation
    2. 9.2. User-To-Mobile Client Security Issues
      1. 9.2.1. Authentication
      2. 9.2.2. Smart Cards
      3. 9.2.3. Biometric Authentication
    3. 9.3. Mobile Client Security Issues
      1. 9.3.1. Automatic Logout and Credentials Re-Entry
      2. 9.3.2. Data Destruction
      3. 9.3.3. Database Encryption
      4. 9.3.4. Code-Embedded Usernames and Passwords
    4. 9.4. Client-Server Communications Security Issues
      1. 9.4.1. Communication Encryption
    5. 9.5. Existing Web Architectures and Back-End Systems Security Issues
      1. 9.5.1. Firewalls and Tier Separation
      2. 9.5.2. Application Services and Port Lockdown
      3. 9.5.3. Communication Encryption
      4. 9.5.4. Database Authentication
      5. 9.5.5. Database Encryption
    6. 9.6. Summary
  16. 10. Mobile Application Development Management
    1. 10.1. Project Management
      1. 10.1.1. Management Models
      2. 10.1.2. Planning
      3. 10.1.3. Team Resources
      4. 10.1.4. Status Reports and Status Meetings
      5. 10.1.5. Financials
      6. 10.1.6. Environment
      7. 10.1.7. Version and Change Management
      8. 10.1.8. Training
      9. 10.1.9. Common Managerial Headaches
    2. 10.2. Requirements
      1. 10.2.1. Requirement Types
      2. 10.2.2. Gathering Requirements
      3. 10.2.3. Documenting Requirements
    3. 10.3. Design
      1. 10.3.1. Design Documentation
      2. 10.3.2. Design Considerations
    4. 10.4. Code Development and Integration
      1. 10.4.1. Coding
      2. 10.4.2. Unit Testing
    5. 10.5. Integration and System Testing
      1. 10.5.1. Testing Process
      2. 10.5.2. Testing Documentation
      3. 10.5.3. Testing Considerations
    6. 10.6. Deployment and Release Management
      1. 10.6.1. Mobile Client Production Releases
      2. 10.6.2. Server Production Releases
    7. 10.7. Re-Evaluation and Reiteration
      1. 10.7.1. Re-Evaluation
      2. 10.7.2. Reiteration
    8. 10.8. Operations and Maintenance
      1. 10.8.1. Day-to-Day Operations
      2. 10.8.2. Monitoring
      3. 10.8.3. Backup and Restoration
    9. 10.9. Summary
  17. 11. Mobile Museum Case Study
    1. 11.1. Use Cases
      1. 11.1.1. Use Case Actors
      2. 11.1.2. Existing Web Site Use Cases
      3. 11.1.3. Mobile Web Site Use Cases
    2. 11.2. Architecture
    3. 11.3. Client Detailed Design
    4. 11.4. Server Detailed Design
      1. 11.4.1. Existing Presentation Layer
      2. 11.4.2. Business Logic Layer
      3. 11.4.3. Data Access Layer
    5. 11.5. Mobilizing the Existing Application
      1. 11.5.1. Architecture
      2. 11.5.2. Users and Roles
      3. 11.5.3. Presentation Layer
      4. 11.5.4. Business Logic Layer
      5. 11.5.5. Data Access Layer
      6. 11.5.6. Authentication
      7. 11.5.7. Enrollment
      8. 11.5.8. Administration
      9. 11.5.9. Mobile Device Support
      10. 11.5.10. Presentation Layer Detailed Design
    6. 11.6. Discussion
    7. 11.7. Extensions
    8. 11.8. Summary
  18. 12. Mobile Biologist Case Study
    1. 12.1. Use Cases
      1. 12.1.1. Use Case Actors
      2. 12.1.2. Mobile Client Use Cases
      3. 12.1.3. Web Site Use Cases
    2. 12.2. Architecture
      1. 12.2.1. Overall Architecture
      2. 12.2.2. Process Flow
    3. 12.3. Pocket PC CLIENT Detailed Design
      1. 12.3.1. Presentation Layer
      2. 12.3.2. Business Logic Layer
      3. 12.3.3. Data Access Layer
    4. 12.4. Tablet PC CLIENT Detailed Design
      1. 12.4.1. Presentation Layer
      2. 12.4.2. Business Logic Layer
      3. 12.4.3. Data Access Layer
    5. 12.5. Server Detailed Design
      1. 12.5.1. XML Web Service
      2. 12.5.2. Presentation Layer
      3. 12.5.3. Business Logic Layer
      4. 12.5.4. Data Access Layer
    6. 12.6. Discussion
    7. 12.7. Extensions
    8. 12.8. Summary
  19. 13. Mobile Zoo Case Study
    1. 13.1. Use Cases
      1. 13.1.1. Use Case Actors
      2. 13.1.2. Existing Web Site Use Cases
      3. 13.1.3. Mobile Web Site Use Cases
    2. 13.2. Architecture
      1. 13.2.1. Overall Architecture
    3. 13.3. Client Detailed Design
      1. 13.3.1. Presentation Layer
      2. 13.3.2. Business Logic Layer
      3. 13.3.3. Data Access Layer
    4. 13.4. Server Detailed Design
      1. 13.4.1. XML Web Service
      2. 13.4.2. Presentation Layer
      3. 13.4.3. Business Logic Layer
      4. 13.4.4. Data Access Layer
    5. 13.5. Discussion
    6. 13.6. Summary
  20. A. Further Reading
    1. A.1. Books
      1. Bibliography
    2. A.2. Online Resources
  21. B. Pocket Web Host Design
    1. B.1. Architecture
      1. B.1.1. Hosting Web Pages
      2. B.1.2. Environment
      3. B.1.3. PWHCOMP
      4. B.1.4. PWHOST
    2. B.2. Development Procedure
      1. B.2.1. General Procedure
      2. B.2.2. Example
    3. B.3. Summary