Software Engineering in Mobile Computing

Slides:



Advertisements
Similar presentations
Operating Systems Components of OS
Advertisements

CS 443 Advanced OS Fabián E. Bustamante, Spring 2005 Resource Containers: A new Facility for Resource Management in Server Systems G. Banga, P. Druschel,
Chapter 19: Network Management Business Data Communications, 4e.
.NET Mobile Application Development Distributed Application Design.
1 ITC242 – Introduction to Data Communications Week 12 Topic 18 Chapter 19 Network Management.
Chapter 13 Embedded Systems
Introduction to Databases Transparencies
Systems Analysis and Design in a Changing World, 6th Edition 1 Chapter 6.
Course Instructor: Aisha Azeem
Passage Three Introduction to Microsoft SQL Server 2000.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
B USINESS LAYER SAMANVITHA RAMAYANAM 4 th MARCH 2010 CPE 691.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Chapter 9 Elements of Systems Design
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
CHAPTER TEN AUTHORING.
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Architectural Patterns Support Lecture. Software Architecture l Architecture is OVERLOADED System architecture Application architecture l Architecture.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Processes Introduction to Operating Systems: Module 3.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
11 CLUSTERING AND AVAILABILITY Chapter 11. Chapter 11: CLUSTERING AND AVAILABILITY2 OVERVIEW  Describe the clustering capabilities of Microsoft Windows.
VMware vSphere Configuration and Management v6
Introduction to Interactive Media Interactive Media Tools: Authoring Applications.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Systems and User Interface Software. Types of Operating System  Single User  Multi User  Multi-tasking  Batch Processing  Interactive  Real Time.
9 Systems Analysis and Design in a Changing World, Fifth Edition.
Mary Ganesan and Lora Strother Campus Tours Using a Mobile Device.
Computer System Structures
Chapter 19: Network Management
Module 3: Operating-System Structures
Software Architecture
Netscape Application Server
Database System Concepts and Architecture
The Development Process of Web Applications
Distributed Shared Memory
Self Healing and Dynamic Construction Framework:
OO Methodology OO Architecture.
Software Design and Architecture
Distribution and components
Part 3 Design What does design mean in different fields?
Introduction to Operating System (OS)
Web Engineering.
Chapter 18 MobileApp Design
Ch > 28.4.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Chapter 3: Operating-System Structures
Introduction to Databases Transparencies
Lecture 1: Multi-tier Architecture Overview
Systems Analysis and Design in a Changing World, 6th Edition
Chapter 6 – Architectural Design
Analysis models and design models
Threads Chapter 4.
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 2: Operating-System Structures
MORE ON ARCHITECTURES The main reasons for using an architecture are maintainability and performance. We want to structure the software into reasonably.
Chapter 5 Architectural Design.
Design Yaodong Bi.
Chapter 2: Operating-System Structures
CMPE419 Mobile Application Development
Chapter 6: Architectural Design
Software Development Process Using UML Recap
Software Architecture
Presentation transcript:

CS 352: Software Engineering-3 Mobile Software Engineering Mobile Applications Architecture & Design

Software Engineering in Mobile Computing Introduction This unit describes concepts related to mobile apps architecture and presents design guidelines for key architecture components. By the end of this unit, a student should be able to create architecture that meets “best practices”; minimizes costs and maintenance requirements; and promotes usability and extendibility. Software Engineering in Mobile Computing

A typical mobile app architecture Stacked Layers: User interface Business logic Data access Cross-cutting concerns: Security Communication Logging Caching Software Engineering in Mobile Computing

Software Engineering in Mobile Computing User interface layer User Interface (UI) Components Specify overall Layout and individual UI controls Allow users to interact with the application Render and format data for users Acquire and validate data input by users UI Process Components Synchronize and orchestrate user interactions Useful if UI is complicated Separate user process components for common user interaction patterns allow reusability in multiple UIs Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Business logic layer Application Façade (optional) Combines multiple business operations into a single message- based operation The application façade can be accessed from the presentation layer using different communication technologies Business Components Provide business services, such as processing business rules and interacting with data access components For example, a business component can implement a transaction script pattern, which executes multiple operations to manage a transaction Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Business logic layer Business Entities used to pass data between business components The data can represent real-world business entities, such as products and orders, or database entities, such as tables and views scalar values can be considered as business entities business entities can also be implemented using data structures such as DataSets and Extensible Markup Language (XML) documents Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Business logic layer Business Workflows Multiple steps that must be performed in the correct order and orchestrated Define and coordinate long-running, multi-step business processes Workflow styles: Sequential - enforces a certain sequence of actions State-machine - remains in a given state and waits till an event occurs before transitioning to another state Data-driven - the workflow is dependent on data values which is specifically for document approval workflows Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Data access layer Provides access to data stored in a server or cached at a client Data is not necessarily relational. It may be JSON or XML data accessible via web services Creating the data access layer is largely automated using data access frameworks Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Data access layer Data access logic components Abstract the logic necessary to access underlying data stores Centralizes data access functionality, which makes the application easier to configure and maintain Data helpers / utilities Consist of specialized libraries and/or custom routines especially designed to maximize data access performance and reduce the development requirements of the data access logic components and service agent parts of the layer Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Data access layer Service agents Manages the semantics of communicating with an external service which is accessed when a business component uses functionality exposed by this service Isolate user application from the details of calling diverse services Provide additional services such as basic mapping between the data format exposed by the external service and the data format required by the application Software Engineering in Mobile Computing

Mobile app key architectural design principles Separation of concerns: an app should be broken into disjoint components as overlapping functionalities should be avoided Single responsibility: a component should be responsible for only one specific functionality Principle of least knowledge: a component should not know about internal details of other components Don’t repeat yourself: the functionality should not be duplicated in any more than one component Software Engineering in Mobile Computing

Mobile app key architectural design principles Avoid doing a big design upfront: especially, if the requirements are incomplete, unclear or still evolving. Favor composition over inheritance: to avoid dependency among components; inheritance increases dependency between parent and child classes, thereby limiting the reuse of child classes Keep cross-cutting code abstracted from the application business logic as much as possible: mixing code with business logic can lead to a design that is difficult to extend and maintain Software Engineering in Mobile Computing

Mobile user interface guidelines Support multiple mobile-specific input mechanisms such as touch screens, stylus pens and voice recognition Take into consideration variability in screen specifications such as screen size, resolution, supported color depth and other screen-specific parameters. The user interface should support both landscape and portrait orientations. Software Engineering in Mobile Computing

Mobile user interface guidelines The app should be able to retain and restore a navigation state for two reasons: switching between apps occurs unpredictably due to events such as receiving a call or a text message mobile apps usage sessions tend to be short (2 to 9 minutes) leading to frequent opening and closing of a given app. User experience (UX) must be completely addressed the richness and ease of use of the user interface is a prime deciding factor for many users a great deal of effort should be spent on interviews, surveys and usability studies to determine common user expectations Software Engineering in Mobile Computing

Cross-cutting concerns Security Communication Configuration Caching Logging Power management Performance Porting Exception handling Software Engineering in Mobile Computing

Caching considerations Cache static data, and not volatile data. Caching sensitive data should be avoided. The fastest storage option should be used for caching. Cache access should be thread-safe. Cached data should be refreshed frequently. Software Engineering in Mobile Computing

Logging considerations Do not store sensitive information in log files Consider logging in compressed formats to minimize memory and storage impact when extensive logging is carried out on the device Use platform features such as health monitoring on the server, and mobile device services on the device, to log events Whenever network connectivity is available , synchronize between the mobile database logs and the server database logs to maintain audit capabilities on the server Decide what constitutes unusual or suspicious activity on a device, and log information based on these scenarios Software Engineering in Mobile Computing

Power management considerations UI is not updated while the application is in the background Communication methods that use the least amount of power are used Power profiles are implemented to increase performance when device is plugged into external power Power consumption is considered when using the device CPU, wireless communication, screen, or other power-consuming resources while on battery power Device functionality is allowed to be powered down when not in use or not needed Software Engineering in Mobile Computing

Performance considerations Support configurable options to allow the maximum use of device capabilities Consider using lazy resource acquisition to optimize for mobile device resource constraints Optimize the application to use the minimum amount of memory. The app may release uneeded memory when memory is low Balance performance requirements with power consumption requirements Software Engineering in Mobile Computing

Deployment Concerns & Patterns When choosing a deployment pattern: Understand the target physical environment for deployment Understand the architectural and design constraints based on the deployment environment Understand the security, performance, quality of service impacts of your deployment environment Software Engineering in Mobile Computing

Deployment Concerns & Patterns Server vs. Client Server: Requires reliable network connection Business and data layers are placed on the server Mobile device power consumption is not optimized due to permanent connectivity to server Software Engineering in Mobile Computing

Deployment Concerns & Patterns Client: Mobile app permits local processing and allows an occasionally-connected state Business and data layers are embedded in the mobile app Complicated app development specially for different mobile application platforms that must be targeted Caching should be used to gracefully handle disconnections Hard to maintain as modifications of business or data layers must be propagated to all users Keeping business data on a mobile device entails a security risk Software Engineering in Mobile Computing

Distributed vs Non-distributed Deployment Software Engineering in Mobile Computing

Scale Up vs Scale Out after deployment When scaling your application, choose from and combine two basic choices: Scale Up: Get a bigger box add hardware such as processors, RAM, and network interface cards (NICs) to existing servers to support increased capacity Scale Out: Get more boxes add more servers and use load-balancing and clustering solutions protects against hardware failures via replication Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Web Farm Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Load Balanced Cluster Software Engineering in Mobile Computing

Software Engineering in Mobile Computing Fail Over Cluster Software Engineering in Mobile Computing

Software Engineering in Mobile Computing References Chapters 1, 2 and 8 - J.D. Meier, Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr and Akshay Bogawat , “Mobile Application Architecture Guide,” Application Architecture Pocket Guide Series, Microsoft Corporation 2008. Software Engineering in Mobile Computing

Thank you for your attention.