2.5 Summary and Discussion
3.1.1 Elements of Development Approaches
After a thorough review of some of the existing systems used to create mobile applications, a set of common elements were extracted. These elements however, may encompass and can be applied not only to mobile application development, but also for other domains and platforms as well.
Methods and Techniques
Methods and techniques refer to the activities involved in order to accomplish the creation of a certain software artifact [Fug00]. This may include the following: programming, scripting, visual programming, modeling and authoring.
Programming is defined to be the act of writing a computer program which is composed of a list of instructions that causes a computer to act a certain way. There are other types of programming aside from the usual typing of source code (e.g. visual programming). However, for explanation purposes, the term programming will be used to refer to this traditional way of creating programs.
Scripting is another method used to create programs by typing in source code. It differs from traditional programming in a way that scripting makes use of already existing components and combines them together in order to create an application [Ous98]. Another difference is, scripted programs are usually interpreted while traditionally written programs are compiled. Examples of scripting languages are Perl, Python, Unix shells and JavaScript. Scripting is a bit more high level and is often easier to learn as compared to programming [Ous98]. In the recent years though, the borderline between scripting and programming has more or less disappeared.
Modeling in the context of software development involves the creation of models in order to describe certain aspects of a software application and get insights of the real appli- cation through abstraction in order to reduce complexity. Models can be expressed through graphical (e.g. UML1), mathematical (e.g. OptimJ2) or textual form (e.g.
using markup languages such as XML).
Visual Programming is another type of programming which uses graphics to aid in the process of creating, debugging and understanding computer programs [Mye86].
1http://www.uml.org/
Authoring is a method usually employed by users who have little or no experience in programming in order to create software artifacts (e.g. application, document, ser- vice). It may combine different methods such as visual programming or scripting. One example in the education domain is the Intelligent Tutoring System (ITS) which is a computer-based instructional system and is usually created by educators with the help of authoring tools [Mur99] (e.g. Mobile Author from Virvou et al. [VA05]). Programming-by-Example also known asProgramming by Demonstration uses exam- ples to simplify programming. This is done by letting users demonstrate a spe- cific behavior and having these actions as inputs in order to create a complete pro- gram [Mye86]. This approach is mostly applied in the field of robotics for teaching robots new behavior through physical demonstration of tasks.
Development Technology
Development Technology refers to any type of technological support used to create a soft- ware artifact and used to "accomplish software development activities" [Fug00]. We have surveyed the different types of development technologies currently available which can be integrated into the following general groups: Application Frameworks, Integrated Develop- ment Environments (IDE), Modeling Tools, Authoring Tools and Graphical User-Interface (GUI) builders.
An Application Framework is a "generic structure that can be extended to create a more specific sub-system or application" [Som04]. It may consist of application pro- gramming interfaces (APIs) which can be used to create applications (e.g. Java APIs), or could be an approach or pattern for creating a software artifact (e.g. Model- View-Controller approach to GUI design) [Som04]. One problem with frameworks is that they are inherently complicated and the learning curve in order to learn how to use them is steep [Som04].
An Integrated Development Environment (IDE) is an application that integrates a set of development tools (e.g. code editor, debugger, compiler/interpreter, version control, etc.) that can be used to create computer programs.
A Modeling Tool is an application that may be used to create models of software design, process and/or implementation. These models can be expressed in a variety of ways such as graphical, textual or even mathematical.
An Authoring Tool is an application that enables users to easily build software artifacts and requires less technical knowledge (i.e. programming skills) to use. Complete ap- plications or their prototypes may be created by combining objects together, defining object relationships or setting particular properties.
A Graphical User Interface (GUI) Builder is an application that enables users to design and create graphical user interfaces for software applications through drag- and-drop means. They are usually WYSIWYG Editors which may be stand alone programs or integrated into a development environment.
Generated Artifact Completeness
Generated artifacts refer to parts of an application being generated when employing a certain type of method or technique. For example, a generated artifact for programming may be a set of source codes, while a generated artifact for modeling may be a set of graphical or textual representations of the model. A generated artifact may be a fully functional application, or may only be a part of an application such as the graphical user interface.
In evaluating the current approaches for mobile application creation, we concentrate not on the generated artifacts themselves, but on thecompleteness of the generated application. We classify them into three types of output base on completeness namely: complete, partial and unit (see figure 3.1 for examples).
(a)Complete (b) Partial (c) Unit
Figure 3.1: The examples illustrate the differences between the output completeness.
Complete Output refers to a complete set of compiled source code that can already be deployed on a device. The output may be prototype versions of the final application, however only minimal work has to be done (e.g. application aesthetics) in order to complete it. One example would be a fully functional"Chat Application" which can readily be installed and used on a mobile device.
Partial Output refers to a partially completed application that still lacks other function- alities in order to complete the application. It may be able to run by itself (i.e. standalone) or needs to be incorporated to another application in order to be fully functional.
Unit Output refers to an output that is only one part of an application. An example of this would be a description file that contains the design and layout of the user interface for a certain application but does not yet contain the necessary application logic.
Level of Technical Expertise
One of the factors that is essential in deciding what approach is ideal for the purpose of this research is the target user’s (i.e. creator) technical expertise. In this context, we refer to thetechnical expertise as the ability to create program code or the level of programming knowledge and experience. It is quite challenging to assess each person’s technical expertise and classification cannot be binary (i.e. programmer or non-programmer). However, for our purpose, we try to classify the level of expertise by using the concept of personas.
A Persona as described by Blomkvist [Blo02] is an archetypical representation of real or potential users that represent certain patterns of behaviors, goals and motives which are integrated into one fictional description of an individual. When creating personas, one must take note of the goals, skills, attitudes and working environment of each of these personas [Goo01]. The use of personas in order to design systems has been a common practice in the development of software systems. Dotan et al. [DMLG09] for example, used personas for redesigning the user interface of a system that supports informal learning in the workplace. Personas were represented based on their role in the organization (senior or junior employee) and on their work processes (rigid or flexible). Another example is from Allen et al. [ASW05], who also tried to apply the technique of using personas in order to build effective modeling tools to support domain experts in verification, validation and testing. The personas were based on whether they create the models themselves or used models already created by someone else, and also according to which processes they were doing (e.g. modeling checking, verification or validation).
For this research, the personas will be named based on their technical skill level. These names are based on the Benner’s Stages of Clinical Competence3 [Ben82] which were
adapted from the Dreyfus Model of Skill Acquisition4 [DD80]. From Benner’s stages,
we will only use three of the stages as the basis for our personas namely: the Novice, the Competent and the Expert. For each of the personas, the goals, skills, attitudes and working environment will be discussed.
The Novice’s goal is to create a software artifact which may be a fully working applica- tion (see section 3.1.1 for output completeness), that he can use for his own needs in
3 Benner classified the different stages as: novice, advance beginner, competent, proficient and ex-
pert [Ben82].
4 The Dreyfus Model of Skill Acquisition postulates that: "in acquiring a skill by means of instruction
and experience, the student normally passes through five developmental stages which we designate novice, competence, proficiency, expertise and mastery". In order to facilitate advancement, the skill training procedure must be based on how skills are acquired for every stage [DD80].
Figure 3.2: The personas and their possible skill levels.
his own specific domain. He has no experience whatsoever in programming and has difficulty in expressing what he wants in a logical manner. For example, he might have some idea what he wants to have in his application, but does not know where to start and what to do in order to achieve this. "Constant monitoring and feedback should also be given" [DD80] in order to assist thenovice in improving his skills (e.g. using the tools).
The Competent have the same goals as the novice. He has some knowledge of program- ming and has ability to write simple programs. This competency could be "acquired when considerable experience have been acquired. These experiences may be in the form of a clear set of examples in order for a person to get meaningful patterns from real situations" [DD80]. For example, he may have some basic experience in scripting languages, and is able to write simple application logic through pseudocodes.
The Expert also has the goal of creating fully working applications, and may be driven to create such applications for his own purposes or for others. He has the ability to design, develop (i.e. write code), debug and deploy applications with the use of any development technology (e.g. IDEs). He may not have the domain expertise for that certain type of application, but is able to extract the necessary information from domain experts in order to create the application. The expertise acquired by this persona comes from a "a vast repertoire of experiences in the past which allows him to intuitively associate a certain action in a specific situation" [DD80].
An example of this is when he is creating a web-based business application for a certain company. He may not have enough knowledge about the company itself and the type of business the company has, but he has some idea on where to start, what information he needs to collect and what to do in order to complete this project.