SOFTWARE ENGINEERING PROCESSES FOR MOBILE APPLICATION DEVELOPMENT



Similar documents
Application of software product quality international standards through software development life cycle

Automated testing for Mobility New age applications require New age Mobility solutions

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER

From Traditional Functional Testing to Enabling Continuous Quality in Mobile App Development

NIST Cloud Computing Program Activities

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

(Refer Slide Time: 01:52)

Chapter 9 Software Evolution

Application Development Best Practices

Middleware- Driven Mobile Applications

Cisco Network Optimization Service

Digital Asset Manager, Digital Curator. Cultural Informatics, Cultural/ Art ICT Manager

Surveying and evaluating tools for managing processes for software intensive systems

Project Type Guide. Project Planning and Management (PPM) V2.0. Custom Development Version 1.1 January PPM Project Type Custom Development

An Enterprise Framework for Evaluating and Improving Software Quality

A Framework for Adaptive Process Modeling and Execution (FAME)

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Exploratory Testing Dynamics

Development, Acquisition, Implementation, and Maintenance of Application Systems

Software Engineering. So(ware Evolu1on

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

Testing in a Mobile World

for Oil & Gas Industry

An Analysis of the B2B E-Contracting Domain - Paradigms and Required Technology 1

Extend the value of your core business systems.

!!!!! White Paper. Understanding The Role of Data Governance To Support A Self-Service Environment. Sponsored by

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

MANAGEMENT SUMMARY INTRODUCTION KEY MESSAGES. Written by: Michael Azoff. Published June 2015, Ovum

Supporting Workflow Overview. CSC532 Fall06

The Case for an External Digital Strategy For Payers

Develop enterprise mobile applications with IBM Rational software

A Case Study of the Systems Engineering Process in Healthcare Informatics Quality Improvement. Systems Engineering. Ali M. Hodroj

TeleScope Digital Asset Management Solution Overview. Campaigns Can Only Move as Fast as Their Content

A Research Study of US Marketers

System/Data Requirements Definition Analysis and Design

SOFTWARE TESTING TRAINING COURSES CONTENTS

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

WHITE PAPER Analytics for digital retail

Applying CMMI SM In Information Technology Organizations SEPG 2003

Mobile Application Development Meets the Mainstream

I D C T E C H N O L O G Y S P O T L I G H T. E n a b l i n g Quality I n n o va t i o n w i t h Servi c e

Cisco Unified Communications and Collaboration technology is changing the way we go about the business of the University.

A Study on Software Metrics and Phase based Defect Removal Pattern Technique for Project Management

SharePoint 2013 Migration Readiness

B2B Marketing Automation Vendor Selection Workbook

A guide to enterprise mobile device management.

Microsoft Solutions for Security. Delivering the Windows Server 2003 Security Guide

Consumerization. Managing the BYOD trend successfully. Harish Krishnan, General Manager, Wipro Mobility Solutions

Connect Renfrewshire

Masters in Information Technology

SAP White Paper Enterprise Mobility. Best Practices for a Mobility Center of Excellence Keeping Pace with Mobile Technology

WEB & MOBILE ANALYTICS. Marketing Software Survey 2014

MethodAdopt for MBS Partners. MethodAdopt. for. Microsoft Business Solutions Partners. September RubyTurtle Consulting Page 1 of 17

An Introduction to. Metrics. used during. Software Development

Exploratory Testing Dynamics

Sample Exam Foundation Level Syllabus. Mobile Tester

Nova Software Quality Assurance Process

Master Data Management Architecture

REVIEW ON THE EFFECTIVENESS OF AGILE UNIFIED PROCESS IN SOFTWARE DEVELOPMENT WITH VAGUE SYSTEM REQUIREMENTS

CDC UNIFIED PROCESS JOB AID

Review of Mobile Applications Testing with Automated Techniques

Service Providers and WebRTC

Bridging the Gap Between Acceptance Criteria and Definition of Done

Tablets: Will They Replace PCs?

Understanding the Financial Value of Data Quality Improvement

Mobile Center of Excellence

Customer relationship management MB-104. By Mayank Kumar Pandey Assistant Professor at Noida Institute of Engineering and Technology

TDWI strives to provide course books that are content-rich and that serve as useful reference documents after a class has ended.

Classical Software Life Cycle Models

top tips to develop a successful enterprise app Industry insights Whitepaper #05

Procurement Programmes & Projects P3M3 v2.1 Self-Assessment Instructions and Questionnaire. P3M3 Project Management Self-Assessment

Mobile Application Test Automation Best Practices for Best Results. A white paper from Mobile Labs, Inc.

Increasing Development Knowledge with EPFC

Lean vs. Agile similarities and differences Created by Stephen Barkar -

HTML5 : carrier grade

The 9 Pillars of Enterprise Mobility

Best Practices for Building Mobile Web

NSF Workshop: High Priority Research Areas on Integrated Sensor, Control and Platform Modeling for Smart Manufacturing

Keywords Software Engineering, Software cost, Universal models. Agile model, feature of software projects.

Mobile Testing Automation

How To Develop Software

Accelerating Business Value by

Software Development Process

To introduce software process models To describe three generic process models and when they may be used

How To Manage Project And Portfolio Management In Microsoft Office 2010

The App Store Model Comes to The Enterprise

PARCC TECHNOLOGY ARCHITECTURE ARCHITECTURAL PRINCIPLES AND CONSTRAINTS SUMMARY

White Paper IT Methodology Overview & Context

Software Engineering Question Bank

MNLARS Project Audit Checklist

Technology White Paper Capacity Constrained Smart Grid Design

Building Software in an Agile Manner

3C05: Unified Software Development Process

_experience the commitment TM. Seek service, not just servers

P3M3 Portfolio Management Self-Assessment

Measurement Information Model

Five Strategies for Performance Testing Mobile Applications

Survey of more than 1,500 Auditors Concludes that Audit Professionals are Not Maximizing Use of Available Audit Technology

Transcription:

TECHNICAL REPORT SOFTWARE ENGINEERING PROCESSES FOR MOBILE APPLICATION DEVELOPMENT William McIver, Jr., Ph.D. NSERC Industrial Research Chair in Mobile First Technology Office of Applied Research and Innovation New Brunswick Community College 26 Duffie Drive Fredericton, NB E3B 0R6 Canada http://nbcc.ca/mobi Version: 2015-11- 20 19:20:35 New Brunswick Community College 26 Duffie Drive, Fredericton, NB E3B 0R6 Canada tel: +1 (506) 238-1210 fax: +1 (506) 453-7944 email: bill.mciver@nbcc.ca nbcc.ca

Software Engineering Processes for Mobile Application Development 2 ABSTRACT Mobile platforms are now among the most important targets for software development. The use of mobile platforms by consumers has surpassed that of desktop and laptop computers over the past decade by a number of measures. Mobile platforms have also become prevalent within many enterprise architectures. The term mobile platform refers in this report to a mobile hardware device, its associated operating system, software development framework, and service frameworks. Smartphones, tablets, and wearable devices, such as smart watches and fitness trackers, are currently the most prevalent types of mobile devices. The evolution of mobile platforms has introduced form factors, approaches to user interaction, usage contexts, and other characteristics that are significantly different from desktop and mainframe platforms. Such differences have translated into significant challenges for software engineering teams. This technical report presents a survey of research on software engineering challenges, heuristics, and methods for mobile platforms. This survey draws mainly from the academic and industrial research literatures. It also incorporates input from industrial software engineers. Unique software engineering challenges are presented along with associated considerations for the software engineering team. Open research questions are identified. This report concludes with a discussion of a general approach to configuring a software engineering process to a given mobile application development effort. 2

Software Engineering Processes for Mobile Application Development 3 Table of Contents 1 EXECUTIVE SUMMARY 5 2 PREFACE 10 2.1 ACKNOWLEDGEMENTS 11 3 INTRODUCTION 12 4 FRAMEWORK FOR ANALYSIS 14 5 OVERVIEW OF UNIQUE CHALLENGES 17 6 ELEMENTS, CHALLENGES, PRINCIPLES, AND HEURISTICS 19 6.1 BUSINESS MODELING WORKFLOWS 19 6.1.1 MOBILE BUSINESS CASES AND MODELS 19 6.1.2 CUSTOMER SATISFACTION 21 6.1.3 PROJECT COST ESTIMATION 22 6.2 REQUIREMENTS WORKFLOWS 24 6.2.1 VOLATILE REQUIREMENTS 24 6.2.2 FEATURE INTERACTIONS 25 6.2.3 USER- DRIVEN REQUIREMENTS GATHERING 26 6.2.4 CROSSCUTTING REQUIREMENT CATEGORIES 26 6.3 ANALYSIS & DESIGN WORKFLOWS 28 6.3.1 DISCOVERING POSSIBLE ACTIONS: AFFORDANCE PERCEPTION 28 6.3.2 USAGE CONTEXTS 30 6.3.3 CONTEXT- AWARENESS 31 6.3.4 ACCESSIBILITY 32 6.3.5 USER INTERFACE DESIGN 34 6.3.6 DATA STORAGE 36 6.3.7 DATA COMMUNICATIONS 37 6.3.8 DEVICE POWER CHARACTERISTICS 38 6.3.9 SECURITY 38 6.3.10 DESIGN PATTERNS 40 6.3.11 THIRD PARTY RESOURCE DEPENDENCY RISKS 40 6.3.12 PRODUCT LINE ENGINEERING 40 6.3.13 MOBILE DEEP LINKING 41 6.3.14 SELF- ADAPTIVE APPLICATIONS 41 6.4 IMPLEMENTATION WORKFLOWS 41 6.4.1 FRAGMENTATION AND HETEROGENEITY 42 6.4.2 CROSS- PLATFORM DEVELOPMENT 43 6.4.3 CROSS- PLATFORM SOFTWARE REUSE OR CODE SHARING 47 6.4.4 CROSS- PLATFORM DEVELOPMENT FRAMEWORKS 47 6.5 TEST WORKFLOWS 47 6.5.1 TESTING METHODS 47 6.6 DEPLOYMENT WORKFLOWS 48 6.6.1 DISTRIBUTION 48 6.6.2 MARKETING 48 6.7 PROJECT MANAGEMENT WORKFLOWS 49 6.7.1 AGILE PROJECT MANAGEMENT WORKFLOWS 50 6.7.2 CONSIDERATIONS IN USING AGILE APPROACHES WITHIN THE PROJECT MANAGEMENT WORKFLOW 51 6.8 CONFIGURATION & CHANGE MANAGEMENT WORKFLOWS 51 3

Software Engineering Processes for Mobile Application Development 4 6.8.1 LIFECYCLE MANAGEMENT 51 6.8.2 USER FEEDBACK 52 6.9 ENVIRONMENT WORKFLOWS 52 7 OPEN RESEARCH ISSUES IN MOBILE SOFTWARE ENGINEERING 53 7.1 PROJECT MANAGEMENT WORKFLOWS 53 7.2 ENVIRONMENT WORKFLOWS 53 7.3 ACCESSIBILITY AND UNIVERSAL DESIGN 53 7.4 SOFTWARE METRICS 53 7.5 SOFTWARE PRODUCT LINE ENGINEERING 54 7.6 FEATURE INTERACTION 54 7.7 SOFTWARE PROJECT COSTING 54 8 CONCLUSIONS: TOWARD AN ADAPTIVE MOBILE SOFTWARE ENGINEERING PROCESS 55 8.1 THE BADA MOBILE SOFTWARE ENGINEERING PROCESS 55 8.2 A COMPREHENSIVE MOBILE SOFTWARE ENGINEERING PROCESS 57 8.3 DECISION- ORIENTED PROCESS FOR ADAPTING THE MOBILE SOFTWARE ENGINEERING PROCESS 58 9 BIBLIOGRAPHY 59 10 NOTES 67 4

Software Engineering Processes for Mobile Application Development 5 1 EXECUTIVE SUMMARY SOFTWARE ENGINEERING PROCESSES FOR MOBILE APPLICATION DEVELOPMENT William McIver, Jr., Ph.D. NSERC Industrial Research Chair in Mobile First Technology Office of Applied Research and Innovation New Brunswick Community College 26 Duffie Drive Fredericton, NB E3B 0R6 Canada http://nbcc.ca/mobi Version: 2015-11- 20 19:20:35 PREFACE PG. 10 Mobile platforms are now among the most important targets for software development, whether for product development or projects within the enterprise. The term mobile platform refers in this report to a mobile hardware device, its associated operating system, software development framework, and service frameworks. The term mobile device is used in this paper to refer to the spectrum of hardware platforms that are in Gartner s taxonomy glanceable, pocketable, grab and go, or portable, the most common of which are smartphones, tablets, and smart watches. Mobile- specific software engineering processes are warranted for two major reasons: Unique software engineering challenges: Mobile platforms present software engineering teams with unique challenges relative to other types of targets, such as desktop software. Brittle relationships between users and mobile apps: The burden of responsibility on the software engineering team for producing and implementing good designs is arguably higher in certain ways than it is for other types of targets because the relationship between a user and a mobile app is more brittle than it has been with desktop software. The onus is on the designers and software engineers who develop applications for mobile devices to account for the technical, cognitive, environmental, quality of service, and other issues that might impact user experience. Most users will be unaware of such factors and will, therefore, blame the design of the mobile application rather than the underlying technologies and services. INTRODUCTION PG. 12 This report identifies critical issues in the engineering of software for mobile platforms, commonly referred to as mobile apps; and it identifies software engineering principles and methods, and design heuristics that have been adapted to the development of mobile apps. This report is designed for those who manage or engage software engineers, and software engineers themselves. Accordingly, the coverage of topics is hierarchical, with overviews followed by expanded discussions. 5

Software Engineering Processes for Mobile Application Development 6 This report is based primarily on a survey of academic research and industrial literature. The study also incorporated extensive input from industrial software engineers. FRAMEWORK FOR ANALYSIS PG. 14 To identify the scope of software engineering topics to cover in this study, a generic, comprehensive framework for analysis was synthesized from current software engineering methods, including main software engineering workflows and supporting workflows. Many current software engineering approaches, such as Agile, can be mapped into the topics represented in the framework presented here. The relationships between the main and supporting software engineering workflows, as well as the relationships between phases and iterations are depicted in Figure 1. All of the workflows are iterative in the sense that they be revisited within or even across phases. The main workflows are more specific to the phases of a project, while the supporting workflows provide foundational services throughout the project. OVERVIEW OF UNIQUE CHALLENGES Figure 1. Framework for Analysis in this Study PG. 17 The literature surveyed for this study strongly suggests that there are unique challenges in mobile software engineering arising from several sources: new technologies or affordances offered by mobile platforms; and the tight coupling between user experience and device capabilities. Overall, mobile apps are more sensitive to the impacts of processing power, screen space available to 6

Software Engineering Processes for Mobile Application Development 7 display information, user interaction methods, and battery life on users than in software engineering efforts for traditional desktop applications. Software engineering challenges that were identified as unique to the development of software applications for mobile devices in the literature survey are summarized as follows: Business Modeling workflows: Challenges within Business Modeling workflows that are unique to mobile software engineering involve the tight coupling that often exists between mobile applications, business models, and application distribution models on customer satisfaction. Requirements workflows: Research suggests that requirements gathering in mobile software engineering projects may be more episodic and frequent, and the requirements themselves may be more volatile than in other types of software engineering projects. Analysis & Design workflows: Unique challenges within Analysis and Design workflows for the engineering of mobile software, include (but are not limited to) the following: o A greater need to ensure that the actions made possible by the mobile application called affordances - - can be perceived correctly by the user; o The need to design for a wide range of conditions in which the app will be used; and, o The need to adapt traditional user interface design heuristics to mobile platforms; Implementation workflows: A challenge within Implementation workflows that is somewhat unique to mobile software engineering is the frequent fragmentation of a given mobile platform into multiple models and versions, thereby introducing various forms of heterogeneity. Test workflows: A mobile software engineering team must consider a wider range of testing methods and real- world conditions than would be used for other types of software engineering projects according to the literature surveyed for this study. Deployment workflows: A mobile software engineering team must take into account distribution methods that may be unique to mobile applications. This is an area that may be overlooked by a team that is new to mobile application development. Oversights here can add significant time and cost to a project. Project Management workflows: Agile software engineering methods are advocated by many researchers for mobile app development; however, some prominent software engineering researchers have cautioned against the use of certain aspects of common Agile approaches. Configuration & Change Management workflows: Mobile software engineering teams need to accommodate the short lifecycles that many mobile applications have. ELEMENTS, CHALLENGES, PRINCIPLES, AND HEURISTICS PG. 19 A mobile software engineering methodology must be adaptive, allowing constraints to be balanced along several dimensions: Scalability of the theoretical process vs. requirements, budget, and time. Abstract software engineering processes versus the real- world requirements, budget, time, and other constraints; 7

Software Engineering Processes for Mobile Application Development 8 Device constraints and capabilities versus project objectives; and Requirements for the mobile platform versus requirements for an overall system of which the mobile software is only a part. The key principles of mobile software engineering according to the literature surveyed for this study emphasize the following: Attention to user interface design, Attention to context awareness, Attention to uncertainty in usage contexts, and Software reuse throughout the software engineering process. OPEN RESEARCH ISSUES IN MOBILE SOFTWARE ENGINEERING PG. 53 There were some workflows and topics that did not appear in the research literature on mobile software engineering surveyed for this report. All of these remain open research topics: Project management workflows: The management of mobile software engineering projects did not appear in the literature survey performed for this report. Environment workflows: The definition and construction of software development processes and tool chains specific to mobile software engineering did not appear in the literature survey performed for this report. Accessibility and universal design: The design of mobile software to address accessibility and universal design principles did not appear in the literature survey performed for this report. Over 15% of the world s population requires some form of accessibility. Software metrics: Software metrics are quantitative measures of a software engineering process or the software that it produces. It is felt by proponents that software metrics enable teams to improve the effectiveness of processes and the quality of code. Software product line engineering: A study of approaches to reusing software tailored to mobile software engineering projects using product line engineering is warranted. Product line engineering would enable mobile apps to be factored into manageable sets of features. Feature interaction: Feature interaction occurs when a feature or features modify or influence another feature in defining overall system behaviour. Potential interdependencies between features intentional or otherwise and their incremental implementation lead to the feature- interaction problem. The study of feature- interaction in mobile software engineering appears to be nascent in the literature survey performed for this report. Software project costing: The study of software project costing in mobile software engineering appears to be nascent in the literature survey performed for this report. An in- depth study of the application of principles and methods of software project costing in mobile software engineering projects should be performed. 8

Software Engineering Processes for Mobile Application Development 9 CONCLUSIONS: TOWARD AN ADAPTIVE MOBILE SOFTWARE ENGINEERING PROCESS PG. 55 The literature collectively suggests that the mobile software engineering processes have the following characteristics: Adaptive processes to manage rapidly changing requirements; Use of Agile- Scrum or similar types of processes; Use of early and frequent prototyping; Involvement of authentic users; Involvement with marketing, business models, and distribution plans early in the project; Use of Stage- Gate processes to shut down bad projects early; Multi- stage testing: emulation, in- lab, and in situ with authentic users; and Iteration of all of the above. We propose a decision- oriented process for adapting the comprehensive mobile software engineering process using the principles, heuristics, and other issues surveyed in this study as inputs. The resulting software engineering process would be adapted to the specific needs and constraints of the team for the given project. 9

Software Engineering Processes for Mobile Application Development 10 2 PREFACE This study was initiated at the request of an industrial partner of the New Brunswick Community College Mobile First Technology Initiative. Their goal was to understand how existing software engineering methods should be adapted to support software development for mobile platforms. Mobile platforms are now among the most important targets for software development, whether for product development or projects within the enterprise. The term mobile platform refers in this report to a mobile hardware device, its associated operating system, software development framework, and service frameworks. The term mobile device is used in this paper to refer to the spectrum of hardware platforms that are in Gartner s taxonomy glanceable, pocketable, grab and go, or portable, the most common of which are smartphones, tablets, and smart watches. 1 Mobile- specific software engineering processes are warranted for two major reasons: Unique software engineering challenges: Mobile platforms present software engineering teams with unique challenges relative to other types of targets, such as desktop software. The evolution of mobile platforms has introduced form factors, approaches to user interaction, usage contexts, and other characteristics that are significantly different from desktop and mainframe platforms. Such differences have translated into significant challenges for software engineering teams. Software engineering teams should, therefore, have mobile- specific principles, heuristics, and methods for responding to these challenges well in hand if they are to be effective. Brittle relationships between users and mobile apps: The burden of responsibility on the software engineering team for producing and implementing good designs is arguably higher in certain ways than it is for other types of targets because the relationship between a user and a mobile app is more brittle than it has been with desktop software. The easy- to- use distribution channels, low costs, and numbers of mobile apps available make it challenging for software developers to cultivate loyal customers. If a customer becomes unhappy with a mobile app, they can likely find an alternate one very easily through the associated app store for a given platform. The mobile software engineering team should, therefore, be motivated to adapt their processes to address the unique challenges presented by mobile platforms if they are to produce successful mobile apps. Mobile platforms have become important software development targets, in part, because the use of mobile platforms by consumers has surpassed that of desktop and laptop computers over the past decade by a number of measures. The Internet analytics firm comscore, Inc. reported the following in its review of the Canadian digital market place for 2014: 2 As of December 2014, approximately 81% of Canadian mobile subscribers were using smartphones, an increase of 6% since December 2013. Canadians who own smartphones reported using mobile Web apps on their devices more frequently than native apps for almost every category of retail activities, including purchasing goods and services (14% vs. 8%) and found store location (28% vs. 10%). Canadians owners of smartphones or tablets spend more than 80% of their time on their devices using mobile apps as opposed to mobile Web browsers. Mary Meeker reported the following on mobile usage characteristics in her 2015 Internet Trends presentation: 3 10

Software Engineering Processes for Mobile Application Development 11 Mobile data traffic increased by 69% in 2013 2014. Of the time smartphone owners spend with digital media, 51% is on mobile devices, as compared to 42% on desktops or laptops. Most smartphone owners ages 18 to 34 indicated that their lives were centred on the use of their smartphones. Mobile platforms have become important software development targets for enabling innovation within enterprise architectures. According to Meeker mobile information and communication technologies (ICT) are being used to re- imagine the enterprise. Such re- imaginings are seen as enabling more than efficiency innovations, as in the past. Mobile ICT are now being used to fundamentally restructure existing work processes across a wide range of areas in the enterprise. 4 2.1 Acknowledgements The study that this report documents was conducted in collaboration with Accreon, Inc. The study was made possible by a grant from the National Sciences and Engineering Research Council (NSERC) Industrial Research Chair for Colleges and financial and in- kind support from IGT, Inc.; Accreon, Inc.; T4G; Technology Ventures Corporation; and Stellar Learning Strategies. The author acknowledges the extensive feedback on various drafts of this report from Mary Goggin, David Drost, and Aaron Scott of Accreon, Inc.; and Tauhira Hoossainy of Milwaukee Electric Tool Corporation. Various discussions with software engineers from Big Nerd Ranch were influential in shaping various sections of this study. The author also acknowledges feedback on excerpts of this report from anonymous reviewers of CASCON. Finally, the author acknowledges the support of the NBCC Office of Applied Research and Innovation and of the students, faculty, and staff involved in the New Brunswick Community College Mobile First Technology initiative. A LIVING DOCUMENT This is a living document. Please send comments to Bill.McIver@nbcc.ca. 11

Software Engineering Processes for Mobile Application Development 12 3 INTRODUCTION This report identifies critical issues in the engineering of software for mobile platforms, commonly referred to as mobile apps; and it identifies software engineering principles and methods, and design heuristics that have been adapted to the development of mobile apps. The study on which this report is based was motivated by the real- world experiences and needs of industrial partners of the New Brunswick Community College Mobile First Technology Initiative. The field of software engineering covers a broad range of issues and techniques. The following is a useful definition of software engineering drawn from the literature: 5 [Software engineering is] a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software, that is, the application of engineering to software. In the software engineering approach, several models for the software life cycle are defined, and many methodologies for the definition and assessment of the different phases of a life- cycle model. The following is a useful definition of mobile software engineering drawn from the literature: 6 Mobile software engineering is the adaptive process of designing, implementing, and maintaining a software product for a mobile platform. By this, the process must take into account the specific characteristics of mobile usage to deliver the required quality. This report is designed for those who manage or engage software engineers, and software engineers themselves. Accordingly, the coverage of topics is hierarchical, with overviews followed by expanded discussions. Information is presented in the form of considerations rather than prescriptions. The objective through this type of presentation is to aid the mobile software engineering team in adapting the perspectives presented in this report to their own needs. It is recognized that software engineering methodologies must be adaptive, in general, to the software requirements and constraints of each project. No one collection of methods or way of structuring workflows will be suitable for all projects. The results of this study suggest that this is particularly true for mobile software engineering. This report is based primarily on a survey of academic research and industrial literature. The study also incorporated extensive input from industrial software engineers. A framework of software engineering topics was developed to guide the analysis the academic and industrial literature identified in the study. This framework of topics draws on a comprehensive set of software engineering workflows that are represented in various ways within current software engineering processes, such as the Unified Process and the various Agile/SCRUM processes. High quality articles were then sought that addressed each aspect of this framework. Articles were identified primarily through searches of the ACM Digital Library and IEEE Xplore Digital Library, the two primary bibliographic and full- text databases of articles for computer science. Conjunctive keyword searches were performed in these databases using various combinations of the terms software engineering, mobile app, mobile app development, and methodology. Analysis of the resulting articles lead to identification of keywords and citations from a number of established sub- areas of software engineering, such as software testing, software cost estimation, and software reusability. Further analysis within the growing collection identified additional keywords and citations in other areas of computer science, software engineering, and telecommunications systems design, such as user interface design, user- centered design, and feature interaction. Some industrial literature was identified through the searches described above. Other industrial 12

Software Engineering Processes for Mobile Application Development 13 literature was identified through authoritative sources for the major mobile device and platform vendors, including the developer Web sites for Apple, Google, Microsoft, and Samsung. Software engineers and project managers in Accreon, Inc., an international consultancy with established lines of business in enterprise software development and mobile app development, reviewed various drafts of this report. Additional feedback was received from mobile software engineers in other organizations. Section 4 discusses the framework of software engineering topics that guided the analysis of literature identified for this study. Section 5 provides an overview of challenges that are unique to mobile software engineering. Section 6 presents the main results of the study. Each sub- section covers one element of the framework for analysis, providing an in- depth discussion of mobile software engineering challenges with respect to that element of the framework, and then providing an in- depth discussion of principles, heuristics, and other issues that the mobile software engineering team should consider in tackling that element of the framework. Section 7 discusses a number of issues that existing research has not addressed adequately, if at all. This report concludes in section 8 with a discussion of how mobile software engineering processes can be adapted to the specific needs of a given project. 13

Software Engineering Processes for Mobile Application Development 14 4 FRAMEWORK FOR ANALYSIS To identify the scope of software engineering topics to cover in this study, a generic, comprehensive framework for analysis was synthesized from current software engineering methods, in particular the Unified Process and some of its variations. 7 Note: This study is not advocating (or recommending against) the use of the Unified Process. It is using it only as a basis for identifying the scope of software engineering topics to cover in this study. Many current software engineering approaches, such as Agile, can be mapped into the topics represented in the framework presented here. 8 The framework for analysis used in this study is organized into two categories of workflows: those that are directly involved in the production of the software deliverable, and those that offer support to the overall software engineering process. In this framework, the former category is called main software engineering process workflows, and the latter category is called supporting software engineering workflows. The following are the main software engineering workflows: 9 Business Modeling workflows: A Business Modeling workflow is used to identify the business objectives that must be met by the system that is being engineered and to select or design a business model that can meet those objectives. The resulting business model should identify processes and roles that are required to meet the business objectives. Requirements workflows: A Requirements workflow is used to enumerate detailed functional and non- functional requirements that the system must satisfy, taking into account the input of all stakeholders. Analysis & Design workflows: An Analysis and Design workflow is used to produce a design that demonstrates the architecture and functions that will be necessary to satisfy the requirements produced in the previous workflow. Implementation workflows: An Implementation workflow is used to produce the software and hardware components that are required to satisfy the outputs of the requirements, and analysis and design workflows. Test workflows: A Test workflow is used verify that the outputs of the Implementation workflow to identify defects in the implementation relative to the requirements and design; and identify defects in the requirements, design, or analysis. The former objective is often referred to as verification and the latter objective is often referred to as validation. Deployment workflows: A Deployment workflow is used to release the software product and deliver it to end- users. The following are the supporting software engineering workflows: Project Management workflows: A Project Management workflow is used to administer an iterative software development process, including planning, staffing, and monitoring project status. Configuration & Change Management workflows: A Configuration and Change Management workflow is used to manage software builds, manage software versioning, and to track and implement change requests and bug reports. 14

Software Engineering Processes for Mobile Application Development 15 Environment workflows: An Environment workflow is used to define and build the software development processes and tool chains that are required to support the software engineering project. The workflows, described above, are organized into the following units of work: Cycles: Each cycle is a unit of work that produces a new version of the system being engineered. A software engineering project may have multiple cycles. Phases: Each phase is a unit of work within a cycle that focuses on achieving a specific type of milestone by performing tasks in one or more workflows. The Unified Process defines the following types of phases: o Inception phase: Create or refine on a project charter specifying the initial problem statement, objectives, project scope, requirements, plan, and business model of the system to be implemented. o Elaboration phase: Create or refine designs, requirements, business rules, and other specifications that can collectively guide the construction of a system that satisfies the project charter. o Construction phase: Use the outputs of the Elaboration phase to implement or refine a system that satisfies the project charter. o Transition phase: Deliver the system implemented in the Construction phase to those who will use it. Iterations: Each iteration is a repetition of tasks within a workflow or phase that seeks to change or refine a milestone and the system overall. A new iteration is triggered by new knowledge. A new requirement from a key stakeholder would trigger a new iteration within the Implementation workflow, and likely within other workflows to check dependencies related to the new requirement. The dissatisfaction of users with a prototype would signal the need for iterations on any workflows required to address their concerns. Milestones: A milestone represents the end of a phase, the outputs of that phase, the achievement of objectives for the phase, and a review point. The review point is a place in the process for the software engineering team to decide on the next activities in the process, whether, for example, to proceed to the next phase or to iterate on the current one. The relationships between the main and supporting software engineering workflows, as well as the relationships between phases and iterations are depicted in Figure 2. All of the workflows are iterative in the sense that they be revisited within or even across phases. The main workflows are more specific to the phases of a project, while the supporting workflows provide foundational services throughout the project. The effort of work may vary within each workflow across phases depending on the nature of the software deliverable. The Requirements Workflow, for example, usually requires greater effort during the inception phase of the project; however, it may be necessary to perform multiple iterations of requirements gathering throughout the other phases of the process depending various factors, such as the results of usability or performance testing. Each type of workflow can conceivably have multiple iterations, both within a given phase and throughout the software engineering process. 15

Software Engineering Processes for Mobile Application Development 16 Figure 2. Framework for Analysis in this Study 16

Software Engineering Processes for Mobile Application Development 17 5 OVERVIEW OF UNIQUE CHALLENGES The literature surveyed for this study strongly suggests that there are unique challenges in mobile software engineering arising from several sources. One subset of challenges arises from efforts to effectively leverage specific new technologies or affordances offered by mobile platforms. The literature suggests that a significant subset of challenges in mobile software engineering arises from the tight coupling between user experience and device capabilities. This coupling is more sensitive to the impacts of processing power, screen space available to display information, user interaction methods, and battery life on users than in software engineering efforts for traditional desktop applications. 10 The onus is on the designers and software engineers who develop applications for mobile devices to account for the technical, cognitive, environmental, quality of service, and other issues that might impact user experience. Most users will be unaware of such factors and will, therefore, blame the design of the mobile application rather than the underlying technologies and services. Software engineering challenges that were identified as unique to the development of software applications for mobile devices in the literature survey are mapped into the framework in Table 1. The industrial collaborators in this research identified several additional challenges that they have faced in their work that are also included in the table. Section 6 discusses the challenges identified in the literature survey for each of the areas identified in Table 1. 17

Software Engineering Processes for Mobile Application Development 18 Table 1. Unique challenge areas in mobile software engineering. Software Engineering Workflows Areas 1. Business Modeling 1.1. Business models 1.2. Customer satisfaction 2. Requirements 2.1. Volatile requirements 3. Analysis & Design 3.1. Affordance perception 3.2. Usage contexts 3.3. User interface design 3.4. Location- dependent information retrieval 3.5. Data storage 3.6. Connection quality and bandwidth issues 3.7. Device power characteristics 3.8. Security issues 4. Implementation 4.1. Heterogeneity and fragmentation 5. Test 5.1. Testing methods 6. Deployment 6.1. Distribution 6.2. Marketing 7. Project Management 7.1. Mobile device evolution 7.2. Scope management 7.3. Skilled human resources 8. Configuration & Change Management 8.1. Lifecycle management 9. Environment No specific challenges unique to mobile software engineering were found. 18

Software Engineering Processes for Mobile Application Development 19 6 ELEMENTS, CHALLENGES, PRINCIPLES, AND HEURISTICS A mobile software engineering methodology must be adaptive, allowing constraints to be balanced along several dimensions: 11 Scalability of the theoretical process vs. requirements, budget, and time. Abstract software engineering processes versus the real- world requirements, budget, time, and other constraints; Device constraints and capabilities versus project objectives; and Requirements for the mobile platform versus requirements for an overall system of which the mobile software is only a part. The key principles of mobile software engineering according to the literature surveyed for this study emphasize the following: Attention to user interface design, Attention to context awareness, Attention to uncertainty in usage contexts, and Software reuse throughout the software engineering process. 6.1 Business Modeling workflows Challenges within Business Modeling workflows that are unique to mobile software engineering involve the tight coupling that often exists between mobile applications, business models, and application distribution models on customer satisfaction. 6.1.1 Mobile business cases and models CHALLENGES The fundamental challenges here are to increase demand by leveraging the unique capabilities of mobile platforms to create new revenue streams or enhancing existing ones. Mobile applications are often tightly coupled with a business model, requiring new considerations and approaches for business case analysis than in previous types of software engineering projects. Mobile application lifecycles are also often shorter than other types of software, which may need to be factored into the business case development and the associated business model that is chosen. CONSIDERATIONS A mobile software engineering team should consider a range of mobile- specific business models in building the business case for the project; and, ultimately, in designing a business model associated with the mobile application that will meet the business objectives of a project. Mobile- specific business models have been developed and continue to evolve through the unique capabilities made possible by the synthesis of mobility, efficient mobile computing platforms, and complementary network elements and services. These capabilities include, but are not limited to, mobile Web technologies, the collection of mobile usage and social networking data in real- time, dynamic analyses of those data, and real- time location- awareness. 19

Software Engineering Processes for Mobile Application Development 20 Information and communication technology (ICT) business models include following categories: 12 Business- to- consumer (B2C), Business- to- business (B2B), Consumer- to- consumer (C2C), Government- to- citizen (G2C), Business- to- government (B2G), and Government- to- government (G2G). B2C models seek revenue through the delivery of products or services to consumers. B2B models seek revenue through the delivery of products or services to other businesses. Most of the other business model types can be applied in B2C or B2B contexts. The following is a taxonomy of business models for mobile applications synthesized from several sources: 13 Free app: This is a special case: a retail app that does not derive revenue directly or indirectly. It is free to download and use in perpetuity. Freemium app: This type of app is free to download and use, but is designed to entice the buyer into purchasing premium features that enhance the functionality of the free app. Paid app: This type of app is obtained for a price. No freemium entry point is offered. Paid enhancements may also be available. App as an advertising platform: The primary revenue strategy for this type of app is to collect payments for advertisements delivered to the consumer within the app. It is common to entice consumers to download such apps by offering them for free. App as a service platform: The primary revenue strategy for this type of app is to collect payments for services delivered via the app. It is common to entice consumers to download such apps by offering them for free. Subscription- based app: These are paid apps that have expiry dates, after which a new version of the app must be purchased. App as a paid content delivery platform: The primary revenue strategy for this type of app is to collect payments for content that can be used within the app. Examples include audio books. It is common to entice consumers to download such apps by offering them for free. App development for hire: Many organizations commission apps from third party software development firms. The objectives of such apps are usually to enhance the value of an existing business line by adding a mobile channel. Common app development strategies include converting an existing Web presence into a mobile- friendly site and leveraging the social- local- mobile capabilities of mobile ICT to create new consumer experiences. Data marketing (consumer- to- business- to- business): The revenue strategy for this type of app is to collect payments for the use of data that are generated by consumers through use of an app. This revenue strategy may not be exclusive of other techniques, such as advertising or services. It is the context in which the data are generated that gives them value. Correlating a consumer s location, activities, and social relationships can help a company analyze their behavior and, thereby, tailor its marketing to that person. This business model depends on distributing an app to a wide range of users; thus, they are often free. 20

Software Engineering Processes for Mobile Application Development 21 Third party service provider (business- to- business- to- consumer): This model involves providing backend services to a business that it integrates into services provided to consumers. An example would be location information services or mapping services that a mobile app vendor obtains from a third party, such as Apple s use of Skyhook. 14 Mobilizing transactions: This involves enabling existing transaction types, such as purchasing or administrative functions, via a mobile channel. This category includes native mobile applications or mobile Web applications that provide a new means of interfacing with a business s operational system. The following are cross- cutting issues found in the literature that a mobile software engineering team might consider in the selection or design of a mobile business case or business model: Balancing mobile services with other forms of delivery: It is important that enterprises adopt mobile technologies; however, they may need to continue to offer traditional service delivery models for those who cannot use mobile technologies. 15 Cultural alignment: More designers are becoming sensitive to the need to take approaches that anticipate alternate markets in other regions and tailor designs accordingly. The evolution of the business model of Ignighter.com provides an example of an initial cultural impedance mismatch and successful correction. 16 Heritage brands: Heritage brands will continue to demand customized designs independent of standardized user interface frameworks. 17 6.1.2 Customer satisfaction CHALLENGES The unique nature of app stores with their large inventories of apps makes the dynamic for dissatisfied users of consumer applications significantly different than other software and product domains. Consumers of a non- enterprise mobile applications who become dissatisfied with it can often rapidly locate and acquire an alternate app at little or no cost using the app stores that are available for their platform. In contrast, users who are dissatisfied by a mobile enterprise application mandated by their employer may have little flexibility in switching to an alternate application. Customer satisfaction is, therefore, far more critical to the lifecycle of a mobile application than it might be for other types of software. A mobile software engineering team must, therefore, be more sensitive to the volatile impacts of consumer attitudes toward the mobile application they are developing. This goes beyond the business model design workflow. Any workflow outcome that can impact user experience is implicated in customer satisfaction. CONSIDERATIONS A mobile software engineering team can minimize design choices that engender customer dissatisfaction by employing user- centred design throughout the software engineering process. User- centred design should involve authentic users, which are people who are most representative of the types of end users envisioned for the system. Members of a mobile software engineering team will not normally be ideal authentic users. The design and testing of an auto repair app, for example, should involve the types professionals or hobbyists expected to use the app. An authentic user can serve the following purposes: 21

Software Engineering Processes for Mobile Application Development 22 Provide insider perspectives: Authentic users can potentially identify gaps in functionality, constraints, and other issues that may not be obvious from the perspectives of those on the mobile software engineering team who are not intimately familiar with the domain. This purpose is particularly useful during the Business Model and Requirements workflows. Provide unbiased perceptions: Members of a mobile software engineering team will be biased in evaluating their own designs: they are both technically savvy and privy to the actual affordances and user interaction methods offered by the system they are designing. The perspective of an authentic user toward an interface will be relatively unbiased, helping the mobile software engineering team to identify aspects of a design that are likely to present problems for customers. This purpose is particularly useful during the Analysis and Design, and Implementation workflows. Overcoming functional fixedness: Functional fixedness is the inability of a person to imagine ways of using a technology that are different from the ways in which they normally use it. Von Hippel has documented the phenomenon of functional fixedness and shown how it can hinder problem- solving processes. 18 The expert knowledge held within a mobile software engineering team can engender a type of functional fixedness whereby members may not be able to develop novel design patterns when the patterns that are familiar to them will not solve their problems. The outside perspectives of authentic users or designers may help teams overcome this phenomenon. It is recognized that the involvement of authentic users presents challenges in an industrial context. One industrial partner pointed out the following with regard to the involvement of authentic users in their software engineering process: This is potentially challenging, but do- able. The use of authentic users is not often seen from the enterprise application perspective that I've been involved with. One project had focus groups that were organized to give feedback on new products, but I haven't seen this used for a piece of software. Most enterprise apps only have enterprise users and therefore a sample can be engaged. The use of authentic users is an excellent consideration for situations where we extend a new mobile channel to non- enterprise users (e.g., registration systems, sales order systems, claims submission systems, etc.). Mobile apps allow for rating and comments in the app store as a partial means - - though already public - - to obtain feedback. Surveys may help as well, but would be post- deployment. 19 The use of Agile software engineering methods may lend themselves more readily to the use of authentic users. Most of the research literature on mobile software engineering surveyed for this report recommended the use of some form of Agile software engineering process in mobile software engineering. Such processes are inherently user- centred and iterative. They provide many opportunities for the involvement of authentic users throughout the workflows within a software engineering process. Note: There are concerns about so- called Agile approaches, which are discussed in section 6.7. 6.1.3 Project cost estimation CHALLENGES The literature survey performed for this study found little information about project cost estimation specific to mobile application development. Nitze et al present an analogy- based approach to estimating mobile software engineering project costs based on attributes of the 22

Software Engineering Processes for Mobile Application Development 23 system to be delivered. 20 Their framework is not significantly different from those used in practice for other types of software engineering deliverables, according to industrial partners consulted for this report. A mobile software engineering project may introduce additional cost categories beyond traditional costing approaches, as suggested by other challenges presented in this report. The approval process to get a mobile app into a given app store may present a somewhat unique cost estimation challenge in mobile software engineering. Anecdotal evidence suggests that teams often find that the approval process is often longer and more complex than they expect. CONSIDERATIONS Analogy- based costing approaches uses existing projects whose costs are known as analogies for estimating the cost of a new project. This is considered a form of case- based reasoning. Analogy- based costing is easy to understand and is comparable in accuracy to conventional algorithmic- based costing approaches. 21 Nitze et al adapted analogy- based costing to mobile software engineering by characterizing the target application in terms of its software type and complexity combined with unit based costing of components that are expected to be required in the software. Software type in this context would include native, Web, and hybrid applications. Complexity would range from simple to complex. One industrial partner sees analogy- based approaches as risky in some contexts. 22 Analogy- based costing may be more complicated when enterprises are first getting into mobile development, as there are no good local analogies to be used. Outside resources, like consultants, will be bringing their own experiences, but how these work out organization- to- organization likely vary. In the consulting world, using analogy- based costing only would bring additional risks, I would think. Using analogy- based costing in conjunction with a parameterized- costing approach would be much more common. Now, for an internal team being tasked with building a mobile app, this might make more sense. Parameterized costing is an alternative approach used by many consultancies, according to one industrial partner. 23 Project costs are estimated using regression techniques applied to the values of parameters based on empirical data from past projects. The COCOMO II model is an example of parameterized costing. 24 Cost categories may be introduced that are associated with the unique mobile software engineering challenges discussed in this report, including, but not be limited to, the variety of testing methods discussed in section 6.5.1, the need to perform cross- platform development as discussed in section 6.4.2, the array of Requirements, Analysis, and Design issues discussed in sections 6.2 and 6.3, and the costs incurred in seeking approval for an app by a given app store. Useful analogs in certain types of technology certification processes might be useful in this latter cost category. One industrial partner described a specific implementation of this approach as follows. 25 Typically, our firm will break up the activities required to build a system into work packages based on functional areas and tasks (e.g., design, development, test, etc.). We will then assign effort estimates to complete each task. Estimates are made using a grid organized into (1) levels of complexity, such as very simple, simple, medium, complex, and very complex; (2) the types of resources needed, their costs, and the possible variance in the number of resources. The result of this approach gives us an estimate of the overall duration and effort required to complete a project. 23