Cross-platform software development in practice. Object-Oriented approach.

Similar documents
Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Software Tools. Scott Klemmer Autumn 2009

Chapter 2. Operating-System Structures

Hands-On Workshop: 3D Automotive Graphics on Connected Radios Using Rayleigh and OpenGL ES 2.0

COMP390 (Design &) Implementation

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist

Introduction. A Brief Description of Our Journey

Principles of Computer Game Design and Implementation. Lecture 3

Python for Earth Scientists

Seminar report Software reuse

The ROI of UI Toolkit Standardization

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

Ch 1: The Architecture Business Cycle

COMP390 (Design &) Implementation

Learning to Provide Modern Solutions

Chapter 2: Operating-System Structures

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

Introducing Computer Programming

Red Hat Application Migration Toolkit 4.0

Element: Relations: Topology: no constraints.

COMP390 (Design &) Implementation

Introduction to Computers and Java

Case study on PhoneGap / Apache Cordova

REPORT MICROSOFT PATTERNS AND PRACTICES

Grand Central Dispatch

Dynamic Cuda with F# HPC GPU & F# Meetup. March 19. San Jose, California

Up and Running Software The Development Process

Test Driven Development. René Barto SES Agile Development - Test Driven Development

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition

Newspilot: A print focused, digital enabled, CMS for the news industry

Computer Basics 1/24/13. Computer Organization. Computer systems consist of hardware and software.

Chapter 2: Operating-System Structures

David DeFlyer Class notes CS162 January 26 th, 2009

Red Hat Application Migration Toolkit 4.2

Ruby on Rails Welcome. Using the exercise files

Maintaining accessibility through testing?

Approach to development in OTM projects

Introduction to Computers and Java

LEGACY SYSTEMS MODERNIZATION SERVICES.

These are exciting times for Macintosh users. When Apple unleashed Mac

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

In the Driver s Seat

Components and Application Frameworks

OS Structure. Kevin Webb Swarthmore College January 25, Relevant xkcd:

Software Development and Usability Testing

Principles of Programming Languages. Objective-C. Joris Kluivers

Organization of User Interface Software

Computer Basics 1/6/16. Computer Organization. Computer systems consist of hardware and software.

Marie Walsh ANZTB. Advancing Expertise in Software Testing. ANZTB Test 2013: Advancing Expertise in Software Testing. 6 June 2013

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and

Mobile Computing. Juha-Matti Liukkonen, Nov 17, 2010

Overcoming the Challenges of Reusing Software

The next generation of Google APIs

Efficiency of Java Code for Mobile Application Development

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?

A computer is an electronic device, operating under the control of instructions stored in its own memory unit.

Introduction to Scientific Programming in C++

Qt + Maemo development

ADD 3.0: Rethinking Drivers and Decisions in the Design Process

Hello, and welcome to another episode of. Getting the Most Out of IBM U2. This is Kenny Brunel, and

Chapter 2: System Structures

Like It Or Not Web Applications and Mashups Will Be Hot

Programming. Languages & Frameworks. Hans-Petter Halvorsen, M.Sc. O. Widder. (2013). geek&poke. Available:

But before understanding the Selenium WebDriver concept, we need to know about the Selenium first.

Building a Browser for Automotive: Alternatives, Challenges and Recommendations

ANDROID APPLICATION DEVELOPMENT COURSE Training Program

BUILDING AND LEVERAGING A CROSS PLATFORM VFX/ ANIMATION DEVELOPMENT ENVIRONMENT. by Colin Doncaster ( )

Lecture 6. Design (3) CENG 412-Human Factors in Engineering May

SOFTWARE LIFE-CYCLE MODELS 2.1

CREATE 2 Control Room Engineering Advanced Toolkit Environment

First To Market through Translation of Executable UML

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

CS 153 Design of Operating Systems

An Introduction to Software Engineering. David Greenstein Monta Vista High School

FROM MANUAL TESTING TO COGNITIVE TEST AUTOMATION

SEO: SEARCH ENGINE OPTIMISATION

arthur: a great programming language

Team-Based Collaboration in Simulink

Advanced Programming & C++ Language

GUI in C++ PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill. Faculty of Informatics, Masaryk University.

Copyright Khronos Group Page 1. Vulkan Overview. June 2015

Low fidelity: omits details High fidelity: more like finished product. Breadth: % of features covered. Depth: degree of functionality

GNOME 3.0 Accessibility: State of the Union. Alejandro Piñeiro

Economies of Scale in Hacking Dave Aitel Immunity

m-powered : A practical application of the iseries Developer Roadmap

JazzScheme: Evolution of a Lisp-Based Development System. Guillaume Cartier Louis-Julien Guillemette SFP 2010

The Joy of Software Development

Prototyping. Readings: Dix et al: Chapter 5.8 Marc Rettig: Prototyping for tiny fingers, Communications of the ACM, April 1994.

Website Design and Development CSCI 311

An overview of mobile and embedded platforms

Secure Development Processes

Software Engineering Principles

AT&T Flow Designer. Current Environment

CS240: Programming in C

Java Software Solutions for AP Computer Science 3rd Edition, Lewis et al. 2011

Cloud-Native File Systems

Architectural Design. Architectural Design. Software Architecture. Architectural Models

11/8/ th IEEE Requirements Engineering Conference 27-Sep to 1-Oct, 2010

Quick Reference Design Guide

Low Friction Data Warehousing WITH PERSPECTIVE ILM DATA GOVERNOR

Transcription:

Cross-platform software development in practice. Object-Oriented approach. Vitaly Repin Maemo Devices, Nokia Maemo March 25, 2010 (Maemo) Cross-platform software development. March 25, 2010 1 / 37

Outline 1 What are you talking about? 2 Why? 3 How? Step 4. Define the basic architecture 4 Real-life example. QMF (Maemo) Cross-platform software development. March 25, 2010 2 / 37

Abstract The basic foundations of your software are changing all the time. The real challenge: The only constant is change. How to be prepared for the changes? Is it possible to predict the future? Yes, to some extent... Don t be afraid! There are technologies around which will help you. But there is no silver bullet. Use your brain and common sense to win! Development of portable software is engineering work. This is not a piece of cake but software engineer CAN DO this work and enjoy it! Qt and C++ are your friends. But use them wisely. THERE IS NO SILVER BULLET. (Maemo) Cross-platform software development. March 25, 2010 3 / 37

Abstract The basic foundations of your software are changing all the time. The real challenge: The only constant is change. How to be prepared for the changes? Is it possible to predict the future? Yes, to some extent... Don t be afraid! There are technologies around which will help you. But there is no silver bullet. Use your brain and common sense to win! Development of portable software is engineering work. This is not a piece of cake but software engineer CAN DO this work and enjoy it! Qt and C++ are your friends. But use them wisely. THERE IS NO SILVER BULLET. (Maemo) Cross-platform software development. March 25, 2010 3 / 37

Abstract The basic foundations of your software are changing all the time. The real challenge: The only constant is change. How to be prepared for the changes? Is it possible to predict the future? Yes, to some extent... Don t be afraid! There are technologies around which will help you. But there is no silver bullet. Use your brain and common sense to win! Development of portable software is engineering work. This is not a piece of cake but software engineer CAN DO this work and enjoy it! Qt and C++ are your friends. But use them wisely. THERE IS NO SILVER BULLET. (Maemo) Cross-platform software development. March 25, 2010 3 / 37

Abstract The basic foundations of your software are changing all the time. The real challenge: The only constant is change. How to be prepared for the changes? Is it possible to predict the future? Yes, to some extent... Don t be afraid! There are technologies around which will help you. But there is no silver bullet. Use your brain and common sense to win! Development of portable software is engineering work. This is not a piece of cake but software engineer CAN DO this work and enjoy it! Qt and C++ are your friends. But use them wisely. THERE IS NO SILVER BULLET. (Maemo) Cross-platform software development. March 25, 2010 3 / 37

Abstract The basic foundations of your software are changing all the time. The real challenge: The only constant is change. How to be prepared for the changes? Is it possible to predict the future? Yes, to some extent... Don t be afraid! There are technologies around which will help you. But there is no silver bullet. Use your brain and common sense to win! Development of portable software is engineering work. This is not a piece of cake but software engineer CAN DO this work and enjoy it! Qt and C++ are your friends. But use them wisely. THERE IS NO SILVER BULLET. (Maemo) Cross-platform software development. March 25, 2010 3 / 37

Outline 1 What are you talking about? 2 Why? 3 How? Step 4. Define the basic architecture 4 Real-life example. QMF (Maemo) Cross-platform software development. March 25, 2010 4 / 37

What is happening there? (Maemo) Cross-platform software development. March 25, 2010 5 / 37

Definition In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms. Cross-platform software may be divided into two types; one requires individual building or compilation for each platform that it supports, and the other one can be directly run on any platform without special preparation. Wikipedia (Maemo) Cross-platform software development. March 25, 2010 6 / 37

Example For example, a cross-platform application may run on Microsoft Windows on the x86 architecture, Linux on the x86 architecture and Mac OS X on either the PowerPC or x86 based Apple Macintosh systems. A cross-platform application may run on as many as all existing platforms, or on as few as two platforms. Wikipedia (Maemo) Cross-platform software development. March 25, 2010 7 / 37

Outline 1 What are you talking about? 2 Why? 3 How? Step 4. Define the basic architecture 4 Real-life example. QMF (Maemo) Cross-platform software development. March 25, 2010 8 / 37

What are they doing there? (Maemo) Cross-platform software development. March 25, 2010 9 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

Why cross-platform? Write once, run anywhere The technologies around are changing very rapidly The basic foundations of your software are changing all the time. The real challenge: The only constant is change. Yes, Diogenes Laertius is very actual in the XXI century! e Money talks: it is all about the cost of application maintenance and development of the new features e Quality: it is cheaper (in terms of bugs) to port the existing code to the new platform than to write new application from scratch with the same functionality e Development speed: it is faster to port the existing code to the new platform than to write new application with the same functionality (Maemo) Cross-platform software development. March 25, 2010 10 / 37

You probably DON T need to develop cross-platform application if... Lifecycle of your application is really short The software you develop makes sense for the only and very unique hardware in the earth e Business decision: to develop only for the selected platform. No future is planned (Maemo) Cross-platform software development. March 25, 2010 11 / 37

You probably DON T need to develop cross-platform application if... Lifecycle of your application is really short The software you develop makes sense for the only and very unique hardware in the earth e Business decision: to develop only for the selected platform. No future is planned (Maemo) Cross-platform software development. March 25, 2010 11 / 37

You probably DON T need to develop cross-platform application if... Lifecycle of your application is really short The software you develop makes sense for the only and very unique hardware in the earth e Business decision: to develop only for the selected platform. No future is planned (Maemo) Cross-platform software development. March 25, 2010 11 / 37

You probably DO need to develop cross-platform application if... One of your business requirements is to support more than one computer platform The lifecycle of your application lasts longer than the technologies it is based on. You know that in 1 year from now the primary computer platform for your application will be different from the current one. Your application shall be prepared and investments of your company shall be protected by the engineering decisions you are making (Maemo) Cross-platform software development. March 25, 2010 12 / 37

You probably DO need to develop cross-platform application if... One of your business requirements is to support more than one computer platform The lifecycle of your application lasts longer than the technologies it is based on. You know that in 1 year from now the primary computer platform for your application will be different from the current one. Your application shall be prepared and investments of your company shall be protected by the engineering decisions you are making (Maemo) Cross-platform software development. March 25, 2010 12 / 37

Outline 1 What are you talking about? 2 Why? 3 How? Step 4. Define the basic architecture 4 Real-life example. QMF (Maemo) Cross-platform software development. March 25, 2010 13 / 37

OK. Let s hope these boys know where they are... (Maemo) Cross-platform software development. March 25, 2010 14 / 37

The tools Variety of tools is available: Java Scripting languages: perl, python, ruby,... Classical compilers: C, C++, Pascal, Haskell (GHC),... Let us focus on the third approach and discuss the C++ way in depth. (Maemo) Cross-platform software development. March 25, 2010 15 / 37

The tools Variety of tools is available: Java Scripting languages: perl, python, ruby,... Classical compilers: C, C++, Pascal, Haskell (GHC),... Let us focus on the third approach and discuss the C++ way in depth. (Maemo) Cross-platform software development. March 25, 2010 15 / 37

The typical steps (Maemo) Cross-platform software development. March 25, 2010 16 / 37

Step 1. e Define the business goals What is the business logic of your application? Define the (high-level) content, most important business requirements What features of the product you develop are unique compared with the competing products? What are the portability requirements? Is the business ready to invest resources into the portability? (Maemo) Cross-platform software development. March 25, 2010 17 / 37

Step 2. Technological market analysis What is available in the market (including open-source free market ) RIGHT NOW? What technologies are available to build the product? The main question which shall be answered in this step What can be reused in order to build the product without reinventing the wheel? The most dangerous risk here is to miss the existing technologies or products and reinvent the wheel. The end-result can be total loss of the money invested. And your own life time which is even more important! (Maemo) Cross-platform software development. March 25, 2010 18 / 37

Step 2. Technological market analysis What is available in the market (including open-source free market ) RIGHT NOW? What technologies are available to build the product? The main question which shall be answered in this step What can be reused in order to build the product without reinventing the wheel? The most dangerous risk here is to miss the existing technologies or products and reinvent the wheel. The end-result can be total loss of the money invested. And your own life time which is even more important! (Maemo) Cross-platform software development. March 25, 2010 18 / 37

Step 3. Select the technologies The helpful questions: What are the APIs my application will use? What tools (compilers, debuggers, documentation tools, toolkits etc) shall be used? How portable are the technologies my application will be based on? (Maemo) Cross-platform software development. March 25, 2010 19 / 37

Step 3. Select the technologies The helpful questions: What are the APIs my application will use? What tools (compilers, debuggers, documentation tools, toolkits etc) shall be used? How portable are the technologies my application will be based on? (Maemo) Cross-platform software development. March 25, 2010 19 / 37

Step 3. Select the technologies The helpful questions: What are the APIs my application will use? What tools (compilers, debuggers, documentation tools, toolkits etc) shall be used? How portable are the technologies my application will be based on? (Maemo) Cross-platform software development. March 25, 2010 19 / 37

Too far view can be misleading. But in the same time the distance is needed to see the big picture (Maemo) Cross-platform software development. March 25, 2010 20 / 37

Technological landscape analysis This phase is extremely important (and extremely difficult and risky) if your aim is to make an application which is prepared for the FUTURE. And this is the usual story in the modern word... What technologies are used? What APIs are used? What is going to be changed in the forecastable future? E.g., UI tends to change more often then backends. Typically. But everything depends on the project! Try to be Cassandra for the destiny of the technologies and APIs your application uses. What is their future? Use all the available information - insider s knowledge, expert s opinions, keep an eye on the researching projects. You shall be aware of the university activities in order to be prepared for the technology switch. Try to forecast. To predict the future. (Maemo) Cross-platform software development. March 25, 2010 21 / 37

Technological landscape analysis This phase is extremely important (and extremely difficult and risky) if your aim is to make an application which is prepared for the FUTURE. And this is the usual story in the modern word... What technologies are used? What APIs are used? What is going to be changed in the forecastable future? E.g., UI tends to change more often then backends. Typically. But everything depends on the project! Try to be Cassandra for the destiny of the technologies and APIs your application uses. What is their future? Use all the available information - insider s knowledge, expert s opinions, keep an eye on the researching projects. You shall be aware of the university activities in order to be prepared for the technology switch. Try to forecast. To predict the future. (Maemo) Cross-platform software development. March 25, 2010 21 / 37

Technological landscape analysis This phase is extremely important (and extremely difficult and risky) if your aim is to make an application which is prepared for the FUTURE. And this is the usual story in the modern word... What technologies are used? What APIs are used? What is going to be changed in the forecastable future? E.g., UI tends to change more often then backends. Typically. But everything depends on the project! Try to be Cassandra for the destiny of the technologies and APIs your application uses. What is their future? Use all the available information - insider s knowledge, expert s opinions, keep an eye on the researching projects. You shall be aware of the university activities in order to be prepared for the technology switch. Try to forecast. To predict the future. (Maemo) Cross-platform software development. March 25, 2010 21 / 37

Technological landscape analysis This phase is extremely important (and extremely difficult and risky) if your aim is to make an application which is prepared for the FUTURE. And this is the usual story in the modern word... What technologies are used? What APIs are used? What is going to be changed in the forecastable future? E.g., UI tends to change more often then backends. Typically. But everything depends on the project! Try to be Cassandra for the destiny of the technologies and APIs your application uses. What is their future? Use all the available information - insider s knowledge, expert s opinions, keep an eye on the researching projects. You shall be aware of the university activities in order to be prepared for the technology switch. Try to forecast. To predict the future. (Maemo) Cross-platform software development. March 25, 2010 21 / 37

Cross-platform enablers Divide the (future) application into the packages. Put the portability requirements towards every package. E.g., package A shall be portable to every system which has gcc and glibc, package B shall be portable to every system which has Qt core libraries, package C will be reimplemented for every system. APIs shall be carefuly designed. Keep in mind - stricter portability requirements mean more efforts to implement specific component. (Maemo) Cross-platform software development. March 25, 2010 22 / 37

Cross-platform enablers Divide the (future) application into the packages. Put the portability requirements towards every package. E.g., package A shall be portable to every system which has gcc and glibc, package B shall be portable to every system which has Qt core libraries, package C will be reimplemented for every system. APIs shall be carefuly designed. Keep in mind - stricter portability requirements mean more efforts to implement specific component. (Maemo) Cross-platform software development. March 25, 2010 22 / 37

Cross-platform enablers Divide the (future) application into the packages. Put the portability requirements towards every package. E.g., package A shall be portable to every system which has gcc and glibc, package B shall be portable to every system which has Qt core libraries, package C will be reimplemented for every system. APIs shall be carefuly designed. Keep in mind - stricter portability requirements mean more efforts to implement specific component. (Maemo) Cross-platform software development. March 25, 2010 22 / 37

Analisys Do a classical object-oriented decomposition keeping portability requirements in mind Carefully analyze the dependencies your application has. What applications layers can be changed in future? Try to be Cassandra. The risk to make the architecture more complex than needed. To reinvent glibc. (Maemo) Cross-platform software development. March 25, 2010 23 / 37

Analisys Do a classical object-oriented decomposition keeping portability requirements in mind Carefully analyze the dependencies your application has. What applications layers can be changed in future? Try to be Cassandra. The risk to make the architecture more complex than needed. To reinvent glibc. (Maemo) Cross-platform software development. March 25, 2010 23 / 37

Step 4. Define the basic architecture Isolate the dependencies through internal APIs (set of classes) Document in the paper the most critical architectural decisions (including portability requirements towards each component) Agree on the basic architecture with your team and other experts you can reach. This is important step as it allows to find teh design problems in the very early phase. Even before the development starts! Never sit in the architectural ivory tower! e If needed, make a prototype. It shall be FAST prototyping. It can not take 1 man month. (Maemo) Cross-platform software development. March 25, 2010 24 / 37

Step 5. (Optional) Make Proof-of-Concept. Prototype your application. Try the most risky design ideas! The goal is to check that the creative ideas suggested in the previous step really work well. (Maemo) Cross-platform software development. March 25, 2010 25 / 37

Step 6. Start of the (iterative) application development Start the development based on the architecture agreed with the team Architecture is not a dogma. It could be changed if the development shows that it does not suit the business needs Regulary check that your application is really portable. Just build it for 2 platforms at least. And run the unit tests. (Maemo) Cross-platform software development. March 25, 2010 26 / 37

Step 6. Start of the (iterative) application development Start the development based on the architecture agreed with the team Architecture is not a dogma. It could be changed if the development shows that it does not suit the business needs Regulary check that your application is really portable. Just build it for 2 platforms at least. And run the unit tests. (Maemo) Cross-platform software development. March 25, 2010 26 / 37

Step 6. Start of the (iterative) application development Start the development based on the architecture agreed with the team Architecture is not a dogma. It could be changed if the development shows that it does not suit the business needs Regulary check that your application is really portable. Just build it for 2 platforms at least. And run the unit tests. (Maemo) Cross-platform software development. March 25, 2010 26 / 37

Outline 1 What are you talking about? 2 Why? 3 How? Step 4. Define the basic architecture 4 Real-life example. QMF (Maemo) Cross-platform software development. March 25, 2010 27 / 37

Don t be afraid! Just do! (Maemo) Cross-platform software development. March 25, 2010 28 / 37

Qt Messaging framework. Introduction. Cross-platform (Linux, Mac TM, Maemo TM, MS Windows TM ) C++ middleware to build email clients, and more generally software that interacts with messaging servers. Based on Qt Platform-dependent stuff is isolated in the corresponding classes which can have different implementation for different platforms. Extensible by protocol and content storage plugins. E.g., plugin to access your messages box in social network, can be easily developed Open-sourced: http://qt.nokia.com/doc/status/qdocoutput/public-messagingframework/html/ (Maemo) Cross-platform software development. March 25, 2010 29 / 37

Qt Messaging framework. Introduction. Cross-platform (Linux, Mac TM, Maemo TM, MS Windows TM ) C++ middleware to build email clients, and more generally software that interacts with messaging servers. Based on Qt Platform-dependent stuff is isolated in the corresponding classes which can have different implementation for different platforms. Extensible by protocol and content storage plugins. E.g., plugin to access your messages box in social network, can be easily developed Open-sourced: http://qt.nokia.com/doc/status/qdocoutput/public-messagingframework/html/ (Maemo) Cross-platform software development. March 25, 2010 29 / 37

The business goals Messaging subsystem engine. The reference message type is e-mail Shall make it possible to integrate the new 3-party (!) protocols into the subsystem Easy to use, object oriented Shall make it possible to store the messages in the different ways (databases, files of different formats and so on) Portability requirements: the same as for Qt (Maemo) Cross-platform software development. March 25, 2010 30 / 37

The business goals Messaging subsystem engine. The reference message type is e-mail Shall make it possible to integrate the new 3-party (!) protocols into the subsystem Easy to use, object oriented Shall make it possible to store the messages in the different ways (databases, files of different formats and so on) Portability requirements: the same as for Qt (Maemo) Cross-platform software development. March 25, 2010 30 / 37

The business goals Messaging subsystem engine. The reference message type is e-mail Shall make it possible to integrate the new 3-party (!) protocols into the subsystem Easy to use, object oriented Shall make it possible to store the messages in the different ways (databases, files of different formats and so on) Portability requirements: the same as for Qt (Maemo) Cross-platform software development. March 25, 2010 30 / 37

The business goals Messaging subsystem engine. The reference message type is e-mail Shall make it possible to integrate the new 3-party (!) protocols into the subsystem Easy to use, object oriented Shall make it possible to store the messages in the different ways (databases, files of different formats and so on) Portability requirements: the same as for Qt (Maemo) Cross-platform software development. March 25, 2010 30 / 37

The business goals Messaging subsystem engine. The reference message type is e-mail Shall make it possible to integrate the new 3-party (!) protocols into the subsystem Easy to use, object oriented Shall make it possible to store the messages in the different ways (databases, files of different formats and so on) Portability requirements: the same as for Qt (Maemo) Cross-platform software development. March 25, 2010 30 / 37

Technological market analysis Historical retrospective (several years ago) Qt is in place and contains a lot of reusable classes to implement the backend No e-mail protocol backend implementation available for reuse Relational database can be used to store email headers and implement effective local search through the messages databases (Maemo) Cross-platform software development. March 25, 2010 31 / 37

Select the technologies APIs: networking (including SSL), SQL (sqlite), file access, synchronization primitives. Use through Qt classes whenever it is possible. Documentation system: qdoc3 (as in Qt) Portability: all the major desktop platforms. Designed with being cross-platform in mind. Shall be easily ported to future computer platforms (Maemo) Cross-platform software development. March 25, 2010 32 / 37

Select the technologies APIs: networking (including SSL), SQL (sqlite), file access, synchronization primitives. Use through Qt classes whenever it is possible. Documentation system: qdoc3 (as in Qt) Portability: all the major desktop platforms. Designed with being cross-platform in mind. Shall be easily ported to future computer platforms (Maemo) Cross-platform software development. March 25, 2010 32 / 37

Select the technologies APIs: networking (including SSL), SQL (sqlite), file access, synchronization primitives. Use through Qt classes whenever it is possible. Documentation system: qdoc3 (as in Qt) Portability: all the major desktop platforms. Designed with being cross-platform in mind. Shall be easily ported to future computer platforms (Maemo) Cross-platform software development. March 25, 2010 32 / 37

Define the basic architecture (Maemo) Cross-platform software development. March 25, 2010 33 / 37

Define the basic architecture Run-time executable: messageserver Mechanism to support 3-party protocols: plugins loadable into the messageserver in runtime Clear separation between UI and backend Use the C++ PIMPL idiom to encapsulate the platform-dependent stuff. Make porting efforts easier for the maintainers Use the Model/view paradigm to separate data and representation (Maemo) Cross-platform software development. March 25, 2010 34 / 37

Define the basic architecture Run-time executable: messageserver Mechanism to support 3-party protocols: plugins loadable into the messageserver in runtime Clear separation between UI and backend Use the C++ PIMPL idiom to encapsulate the platform-dependent stuff. Make porting efforts easier for the maintainers Use the Model/view paradigm to separate data and representation (Maemo) Cross-platform software development. March 25, 2010 34 / 37

Define the basic architecture Run-time executable: messageserver Mechanism to support 3-party protocols: plugins loadable into the messageserver in runtime Clear separation between UI and backend Use the C++ PIMPL idiom to encapsulate the platform-dependent stuff. Make porting efforts easier for the maintainers Use the Model/view paradigm to separate data and representation (Maemo) Cross-platform software development. March 25, 2010 34 / 37

Define the basic architecture Run-time executable: messageserver Mechanism to support 3-party protocols: plugins loadable into the messageserver in runtime Clear separation between UI and backend Use the C++ PIMPL idiom to encapsulate the platform-dependent stuff. Make porting efforts easier for the maintainers Use the Model/view paradigm to separate data and representation (Maemo) Cross-platform software development. March 25, 2010 34 / 37

Define the basic architecture Run-time executable: messageserver Mechanism to support 3-party protocols: plugins loadable into the messageserver in runtime Clear separation between UI and backend Use the C++ PIMPL idiom to encapsulate the platform-dependent stuff. Make porting efforts easier for the maintainers Use the Model/view paradigm to separate data and representation (Maemo) Cross-platform software development. March 25, 2010 34 / 37

Iterative application development The architecture was changing with the project evolution but the major architecture ideas are still valid New capabilities were added to the plugins APIs during the QMF evolution It was possible to port QMF to desktop and mobile platforms with different software architectures. (Maemo) Cross-platform software development. March 25, 2010 35 / 37

Iterative application development The architecture was changing with the project evolution but the major architecture ideas are still valid New capabilities were added to the plugins APIs during the QMF evolution It was possible to port QMF to desktop and mobile platforms with different software architectures. (Maemo) Cross-platform software development. March 25, 2010 35 / 37

Iterative application development The architecture was changing with the project evolution but the major architecture ideas are still valid New capabilities were added to the plugins APIs during the QMF evolution It was possible to port QMF to desktop and mobile platforms with different software architectures. (Maemo) Cross-platform software development. March 25, 2010 35 / 37

Thanks a lot for your attention! Thank you! (Maemo) Cross-platform software development. March 25, 2010 36 / 37

Questions? vitaly.repin@nokia.com (Maemo) Cross-platform software development. March 25, 2010 37 / 37