4. Concept of Applications What constitutes an application? Design process Example Packaging applications Symbian OS application development Summary.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Using MapuSoft Instead of OS Vendor’s Simulators.
Android architecture overview
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
The road to reliable, autonomous distributed systems
TAC Vista Security. Target  TAC Vista & Security Integration  Key customer groups –Existing TAC Vista users Provide features and hardware for security.
Introduction to Operating Systems CS-2301 B-term Introduction to Operating Systems CS-2301, System Programming for Non-majors (Slides include materials.
INTRODUCTION OS/2 was initially designed to extend the capabilities of DOS by IBM and Microsoft Corporations. To create a single industry-standard operating.
Guide To UNIX Using Linux Third Edition
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Operating Systems.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Chapter 3 Software Two major types of software
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Introduction to Android Platform Overview
Case study 2 Android – Mobile OS.
Programming Handheld and Mobile devices 1 Programming of Handheld and Mobile Devices Lecture 22 Symbian Rob Pooley
Programming mobile devices Part II Programming Symbian devices with Symbian C++
Creating and Running Your First C# Program Telerik Software Academy Telerik School Academy.
Chapter 3.1:Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
SOFTWARE.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Operating Systems  A collection of programs that  Coordinates computer usage among users  Manages computer resources  Handle Common Tasks.
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
CHAPTER FOUR COMPUTER SOFTWARE.
Introduction to Interactive Media Interactive Media Tools: Software.
Why Java? A brief introduction to Java and its features Prepared by Mithat Konar.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Android for Java Developers Denver Java Users Group Jan 11, Mike
Presented By: Muhammad Tariq Software Engineer Android Training course.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
CHAPTER TEN AUTHORING.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
Programming mobile devices Part II Programming Symbian devices with Symbian C++ Environment and building applications.
Copyright © cs-tutorial.com. Overview Introduction Architecture Implementation Evaluation.
Software Prototyping Rapid software development to validate requirements.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Wireless and Mobile Security
Full and Para Virtualization
Thread basics. A computer process Every time a program is executed a process is created It is managed via a data structure that keeps all things memory.
Introduction TO Network Administration
Operating Systems Morrison / WellsCLB: A Comp Guide to IC 3 3E 1 Morrison / Wells.
Active X and Signed Applets Chad Bollard. Overview ActiveX  Security Features  Hidden Problems Signed Applets  Security Features  Security Problems.
OCR A Level F453: The function and purpose of translators Translators a. describe the need for, and use of, translators to convert source code.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
COMPARING CROSS-PLATFORM DEVELOPMENT APPROACHES FOR MOBILE APPLICATIONS Henning Heitkötter, Sebastian Hanschke and Tim A. Majchrzak Department of Information.
System Software (1) The Operating System
OPERATING SYSTEMS DO YOU REQUIRE AN OPERATING SYSTEM IN YOUR SYSTEM?
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
 This work confers an application which makes possible to use a Bluetooth enabled mobile phone to remote control home appliances such electric fan, LEDs.
Unit 3 Virtualization.
Applications Active Web Documents Active Web Documents.
Android Mobile Application Development
CMPE419 Mobile Application Development
Chapter 4.
Lecture Topics: 11/1 General Operating System Concepts Processes
Outline Operating System Organization Operating System Examples
Chap 1. Getting Started Objectives
CMPE419 Mobile Application Development
Plug-In Architecture Pattern
Presentation transcript:

4. Concept of Applications What constitutes an application? Design process Example Packaging applications Symbian OS application development Summary

So What Is an Application? In an abstract sense: –A piece of software that something specific and useful? –Set of programs? –Someting that gives device more capabilities? –Runs on top of underlying specific hardware and infrastructure software? Technically: –Bootstrap? –Simple main() ? –A class implementing certain predefined methods that override platform’s methods? –A collection of classes that form a complex configuration? –A combination of executables and other files (e.g. graphics, auxiliary data files, etc)? Something else, what?

Application and Software Stack Application Facilities - Applications - UI and application specific libraries Middleware - Communications stacks - Abstract access to lower-level facilities Low-level Software - Kernel - Device drivers App code App code App code App code

Or only simply….? Application Facilities - Applications - UI and application specific libraries Middleware - Communications stacks - Abstract access to lower-level facilities Low-level Software - Kernel - Device drivers App code

Concern: Depth of Integration Independent applications that share nothing are simple to implement Applications share data –Common format; should one app’s extensions be understandable by another app? Applications share (library) code –Common facilities can be reused relatively safely Applications are intertwined –E.g. a MMS can be sent from different applications –Common infrastructure interface; sometimes menu items that should be generated on-the-fly,... –Sometimes features can be difficult to associate with some particular application (themes, ringing tones,...) Complexity increases in both design and testing

Concern: Application priority Application priority determines how important a certain application is –Implemented with threads and thread priorities –Thread priority determines how responsive a thread is when it is running However, starting a thread can be slow –If rapid actions are needed, one must have the thread already running Keeping the most important applications (or related infrastructure) constantly running? –Especially if some resources are required, they can also be reserved in advance Saving data when an application is shut down? Or saving data more often so that applications can be shut down at any phase of the execution? Automatic shutdown of low-priority applications? Further testing challenges as more and more combinations enabled!

Concern: Usability Importance demonstrated by e.g. CACM theme issue (5 articles) –3 dedicated to usability, user experience, design involving users, etc. –2 with wider focus Consistency of user experience and differences to workstation usage patterns –Short duration –Focused actions –No long-lasting sessions –Complexity in interaction design Can be considered a design driver, at least indirectly –Adequate performance –Practical to perform common tasks, whereas rarely needed properties can be harder to perform –Also related to application priorities and depth of integration May be predefined for an independent application developer

Content and goals What constitutes an application? Design process Example Packaging applications Symbian OS application development Summary

Workflow Scoping Performance management UI design Memory layout and data structures Communication and I/O

Scoping Fundamental purpose of the application –What it does –What it does not For a mobile version of a workstation application, a subset of features to be selected Relative priority to be given to features; the priority will then guide the development iteratively –Priority should therefore be based on the importance of the feature to the user –Easiness of activities performed seldom can be compromized Scoping can be helped with paper protos, mock-ups, or running prototypes

Importance of Performance General responsiveness metrics needed (how fast an application starts, shuts down, opens file, etc) –Forces to consider sequences of events that occur when the user performs an action Test all assumptions with a real device; do not trust the emulator –Start with key features, then advance to less critical ones Assume that more will be expected in the future –Use e.g. an old hardware platform for less capable executions Focus on real bottlenecks, not on the ones that one can most easily find or fix –It is the overall performance that counts –Rule of thumb: Start with data structures, their layout in memory, algorithms, UI design

User Interface Design Study key use cases and features that characterize the application –Scoping as already discussed –Innovations that can be device or application specific –End-user productivity gained with the designed interface (ease-of- use) –End-user responsiveness (the feel of being in control) The device keeps the user informed and does not halt at random times Fooling the user Problems –Tendency to repeat actions if seemingly nothing happens –Device specific design of UI –Small screen, clumsy keyboard ”One size fits all” vs. application-specific features and devices

Data Model and Memory Concerns Data representation bears great significance to memory consumption –Disk or memory? –Static vs. dynamic? –Stack vs. heap? Implementation techniques can also have an effect to this –Dynamically linked libraries and the necessary loading facilities –Virtual machine and its implementation –Inheritance and virtual function table –Applied design patterns –Methodology used in the development –…

Communication and I/O Local (e.g. files) and remote resources (e.g. services offered by a server in a network) to be considered –Local access is usually relatively fast –Remote access commonly introduces a longish round-trip time Level of abstraction in communication significant –binary streams -> text streams -> XML forward only readers and writers -> XML document object model –Also affects development time Costs of a connection –Download a lot of data when WLAN is available, use local proxy when only GPRS can be used

Content and goals What constitutes an application? Design process Example Packaging applications Symbian OS application development Summary

Workflow Scoping Performance management UI design Memory layout and data structures Communication and I/O

Scoping

Scoping.... Cont’d Calendar entries Reminders Contacts Day-week-month view Import/export (synchronization) Lunar phase Connectivity/group features Time zones Repeated events Overlapping treatment Public holidays Automatic meeting coordination ”Date” operations

Performance Implementation of a mock-up First build for a real device –Also tested with the device

UI Design

Data Structure?

I/O and Communication Server Synchronization? On the fly update with e.g. SMS? Or only pull when the user has suitable connectivity access?

Content and goals What constitutes an application? Implementing applications Example Packaging applications Symbian OS application development Summary

Packaging Applications Mobile device Emulator Development workstation Emulator runnable Emulator compilation Device runnable Cross- compilation Device installable Device runnable Source code Packing Download + Auxiliaries

Problem: How to deliver? Users of mobile devices may not have a computer readily available –Delivery of applications should therefore not be based on loading an application from web to a host computer and then download it to the device Over-the-air delivery of applications –Long loading times –People may not realize the trustworthiness of the download site –What happens if the phone is flashed? Memory cards –What if the device type changes? Issues related to digital rights management –Can the application be copied? –How about auxiliaries?

Technical Implementation Platform-specific installation packages –Java: JAR; Midlet suite –Symbian: SIS –Windows: CAB –Linux: DEB Installation managers implemented in devices can control installation at installation-time –Certificates for controlling who is responsible for implementation –Signing programs common (e.g. Symbian Signed) –User can usually override Platform specific security schemes to prevent unauthorized access to device’s resources at run-time –Sandbox security (Java) –Capability based security (Symbian)

Content and goals What constitutes an application? Implementing applications Example Packaging applications Symbian OS application development Summary

Process Create project definition file Create makefile/ workspace Code Build for emulator Build for device Run ok? Debug Run ok? Done yes no

Application Structure CApaDocumentCApaApplication CCoeEnvCCoeControlCCoeAppUi AppArch UI Control Framework CExAppViewCExAppUICExDocumentCExApplication Application CEikonEnvCEikAppUICEikDocumentCEikApplication Eikon/Uikon

Device (type) Specific Features Ma ny, if not all, platforms define a wrapper layer that inherits CEik* and from which CMy* must be inherited –Series 60 -> CAkn* –Qkon -> CQkn* Can lead to confusing problems as forgetting the wrapping layer can result in compilable applications that fail in execution –Example: An application crashes when opening a menu Challenge: How to implement systems that are portable between devices offering similar yet different facilities

Sample Application

Auxiliary Files and Definitions Project Definition File Application Definition File Resource File –Version information –Default file name for saving application data –Menu structure of the application –Constant strings to ease localization UI and Panic related constants –*.HRH –*.PAN

DLL Entry Point // DLL entry point, return that everything is ok GLDEF_C TInt E32Dll(TDllReason /*aReason*/) { return KErrNone; } EXPORT_C CApaApplication* NewApplication() { return (new CQAApplication); }

… or an EXE (depending on Symbian version) LOCAL_C CApaApplication* NewApplication() { return new CQAApplication; } GLDEF_C TInt E32Main() { return EikStart::RunApplication(NewApplication); }

CQAApplication class CQAApplication : public CAknApplication { public: // from CApaApplication TUid AppDllUid() const; protected: // from CEikApplication CApaDocument* CreateDocumentL(); }; CApaDocument* CQAApplication::CreateDocumentL() { // Create QA document, and return a pointer to it CApaDocument* document = CQADocument::NewL(*this); return document; } TUid CQAApplication::AppDllUid() const { return KUidQAApp; // Return the UID }

CQADocument class CQADocument : public CAknDocument { public: static CQADocument* NewL(CEikApplication& aApp); static CQADocument* NewLC(CEikApplication& aApp); ~CQADocument(); CEikAppUi* CreateAppUiL(); CQAEng* Model(); private: void ConstructL(); CQADocument(CEikApplication& aApp); CQAEng * iModel; }; CEikAppUi* CQADocument::CreateAppUiL(){ CEikAppUi* appUi = new (ELeave) CQAAppUi; return appUi; }

CQAAppUi class CQAAppUi : public CAknAppUi { public: void ConstructL(); CQAAppUi(); ~CQAAppUi(); void HandleCommandL(TInt aCommand); // from CEikAppUi private: CQAAppView* iAppView; CQAEng* iModel; }; void CQAAppUi::HandleCommandL(TInt aCommand) { switch(aCommand) { case EQAAsk: iModel->Reset(); iAppView->DrawNow(); break; case EQAAnswer: iModel->Select(); iAppView->DrawNow(); break; case EAknSoftkeyExit: case EQAQuit: Exit(); break; default: User::Panic (_L("QandA"), EQABasicUi); break; }

CQAAppView class CQAAppView : public CCoeControl { public: static CQAAppView* NewL(const TRect& aRect); static CQAAppView* NewLC(const TRect& aRect); ~CQAAppView(); void SetModel(CQAEng * aModel); void Draw(const TRect& aRect) const; // from CCoeControl private: void ConstructL(const TRect& aRect); CQAAppView(); CQAEng * iModel; };

CQAEng class CQAEng : public CBase { public: static CQAEng* NewL(); // Two-phase constructor. ~CQAEng(); // Destructor. TPtrC Question(); // Reference to current question. TPtrC Answer(); // Reference to current answer. void Select(); // Allows one to answer to a question. TBool Used(); // Identifies whether the answer is visible. void Reset(); // Defines new question and and answer. protected: void ConstructL(); // Constructors. CQAEng(); private: // All questions and answers implemented as arrays. CDesCArrayFlat * iQuestions, * iAnswers; // Current question and answer are indices to the arrays. TInt iQuestion, iAnswer; TBool iUsed; // Identifies if the answer has been selected. };

Generating an Installation Package ; qanda-simple.pkg ; ;Language; standard language definitions &EN ; standard SIS file header; application name and id. #{"qanda-simple"},(0x01005b97),1,0,0 ;Supports Series 60 v 0.9 (0x101F6F88), 0, 0, 0, {"Series60ProductID"} ; Files to copy; Application and compiled resource file. "..\..\..\epoc32\release\armi\urel\qanda-simple.APP" -"C:\system\apps\qanda-simple\qanda-simple.app" "..\..\..\epoc32\release\armi\urel\qanda-simple.rsc" -"C:\system\apps\qanda-simple\qanda-simple.rsc"

Content and goals What constitutes an application? Implementing applications Example Packaging applications Symbian OS application development Summary

Application concept is fundamentally about connecting new (application specific) features to the existing device infrastructure Application priority is affected by –the importance of keeping the application in execution –the priority of threads used for implementing the application Five principal topics form the guideline for application design –Scoping –Performance –Proper UI design –Internal data representation –Communication model Symbian solution: Collection of matching classes