SlideShare a Scribd company logo
IBM Innovate 2012
IBM Rational Rhapsody and Qt Integration for
Model-Based GUI Development
Giulio Santoli
Client Technical Professional, IBM Rational
giulio_santoli@it.ibm.com
Session RG-1258
The Premier Event for Software and Systems Innovation

Agenda

1 Model-Driven Development with IBM Rational Rhapsody
Nokia Qt Framework Overview

2
3
4
5
6

2

Rhapsody and Qt Integration Issues
Rhapsody Qt Profile Overview

Demo

Summary

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

System and Software Engineering with IBM Rational Rhapsody
Capabilities
Requirements-driven analysis and design for technical,
embedded or real-time solutions, including those based on
multi-core architectures
Rapid design validation and verification with frequent
simulation and testing
Development and deployment of complete C, C++, C#,
Java and Ada applications

Benefits
"Using Rhapsody software improves the quality
of the application software that is integral to the
series hydraulic hybrid system development

Build the right product through non-ambiguous
communication and frequent collaboration
Eliminate defects early and increase quality by continually
testing the design

process."

Reduce development time by automatically generating
applications and documentation

Steve Zielinski, Eaton chief engineer for

Re-use and adapt existing technology through reverse
engineering and product line engineering

software

3

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Model-Driven Development with IBM Rational Rhapsody
Build efficient software that exactly matches the design intent
– Develop C, C++, C#, Java, and Ada applications

Maintain automated synchronization between model and code
– Work simultaneously with architecture, software and target
– All changes in one area reflected in the others

Support Domain-Specific Languages, including:
– UML, SysML, DoDAF, MoDAF, UDPM, DDS, Autosar, NetCentric, etc..
Generate
new code

Visualize
existing

Model Code
Synchronization

4

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Software Model Execution in Animation Mode

Requirements test
through execution

Model execution enables
iterative development

Correct specification
hand-off to software

5

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Nokia Qt Framework Overview
Nokia Qt is a cross-platform application and UI framework with APIs for C++ programming
and for rapid UI creation of:
– mobile applications (Symbian phones and the Nokia N9 smartphone)
– desktop applications (Microsoft Windows, Mac OS X, and Linux)

The Qt Framework is based on modular C++ class library, including UI, Multithreading,
Networking, Multimedia, XML, Database connection and so on.
The Qt SDK combines the Qt framework with tools such as an IDE, an UI Designer, a
Simulator and some other tools.

http://qt.nokia.com/

6

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Rhapsody and Qt Integration: Technical Issues (1/2)
Qt extends the C++ syntax by introducing some keywords and macros (such as “signal”,
“slot”, “Q_OBJECT”) that are handled by the Qt pre-processor at compilation time.
By default, these keywords are not compatible with the Rhapsody C++ parser and prevents
Rhapsody round-trip feature.
Here follows an example that shows these Qt keywords:
The Object class must be the first in the base classes
list.
The Q_OBJECT macro is used to enable Qt metaobject features, such as dynamic properties, signals,
and slots.
Signals are emitted by an object when its internal
state has changed in some way that might be
interesting to the object's client or owner.
Signal implementation is generated by the Qt
preprocessor must not be implemented in the .cpp file.
Slots are normal C++ functions and can be called
normally; their only special feature is that signals can
be connected to them.
A slot is automatically called when a signal connected
to it is emitted.

7

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Rhapsody and Qt Integration: Technical Issues (2/2)
Qt requires the main thread to be the primary "GUI thread“ as Qt widgets and several
related classes don't work in secondary threads. This usually conflicts with the standard
Rhapsody configuration, as the main thread is automatically generated as an OXF thread.

To cope Rhapsody with the Qt meta-object system, it is needed:
– Update Rhapsody code generator though Rhapsody Simplifiers APIs
– Customize Rhapsody properties to handle Qt-specific keywords
– Customize Rhapsody autogenerated Main to correctly the Qt main thread
– Customize Rhapsody autogenerated Makefile to invoke Qt command line utilities

8

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Solution: Rhapsody Qt Profile
Rhapsody Qt Profile is a custom profile for Rhapsody in C++ based on stereotype
customization and a Java plug-in invoked at code generation time.
This profile is not part of the official Rhapsody installation package.
It allows you to develop Qt-compatible code that also takes advantage of Rhapsody
capabilities, such as state-machines with either synchronous or asynchronous events.
The profile automatically generates the Qt project file and customize it accordingly.
The current implementation supports the following:
– Qt 4.7.3 for Windows (VS 2008 only) and Linux, with and without Animation (no Tracing).
– All the .ui files are supposed to be stored in the “gui” directory in the Rhapsody project.
– No support for Qt message catalogs and resources yet.
– Only base Qt classes are defined in the profile (QApplication, QObject and QWidget).
– All the slots are public, regardless their visibility in the model.
– Qt Mobile Framework is not supported.

9

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Rhapsody Qt Profile Stereotypes
<<QTObject>>
You can use this stereotype to flag those Classes that needs to be Qt-compliant, with the Q_OBJECT
macro, signals and slots.

<<QTSignal>>
You can use this stereotype to flag those Operations that are Qt Signals. They will be declared in the
specification file (.h). Use it only for operations belonging to classes stereotyped as <<OTObject>>.

<<QTSlot>>
You can use this stereotype to flag those Operations, Triggered Operations or Receptions that are
Qt Slots. Use it only for operations belonging to classes stereotyped as <<OTObject>>.

<<QTConfiguration>>
You can use this stereotype to flag those Configurations that you want to generate Qt-related
programs. The default Makefile and Main are generated accordingly.

10

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Custom Simplifiers in Rhapsody Qt Profile
Rhapsody Qt Profile uses Custom Simplifiers to “hook” predefined extension points at code generation time.
Custom simplifiers manipulate the code model using standard
Rhapsody APIs.
For each element the simplify property can specify:
– Default: follow out-of-the-box simplification
– None: suppress the simplification
– Copy: copy the application element to the code model as is
– User: replace out of the box one with a new user defined one
– User Post Default: invoke a custom simplifier after the out of the box one

Properties

Writer Rules
11

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Rhapsody Qt Profile Usage Overview
To create you classes and set the <<QTObject>> stereotype to those of them you want to be
Qt-enabled.
When you stereotype a class with <<QTObject>> do the following:
– Create a generalization dependency to QObject or QWidget classes provided by the profile. If you want to
generalize a different class, copy one of the above ones in your project and rename at your will.
– Create a constructor that initializes the parent Qt class, i.e. MyWindget(QWidget*parent)
– Specify the includes you need in the Properties, i.e. <QWidget> or just <QtGui>
– Apply the <<QTSignal>> and <<QTSlot>> stereotypes accordingly

Apply the <<QTConfiguration>> stereotype to the Rhapsdody configuration you want to
generate the Qt-enabled program.
If you need user interface files (.ui) generated with Qt Designer, put them in the “gui” directory
in your project: they will be automatically included in the build. Just Remember to include their
correspondent header file names, as they are supposed to be generated during the Qt buil
process.

12

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Code Example for a simple Reactive Class
Generated code example with the Rhapsody Qt Profile:

Rhapsody base class for classes with state machines

QTProfile generated slots and macros

This method starts the Rhapsody state machine
implementation

13

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Asynchronous or Synchronous Slots in Rhapsody State Machine (1/2)
Synchronous State Machines
In the Synchronous implementation, if the Class in Rhapsody is not Active, the Main Thread is the Qt GUI
Thread, it’s not possible to use Rhapsody Asynchronous Events e and no OXF Threads are running.
In this configuration, it’s not possible to use the Rhapsody timer but it’s needed to use the Qt one. Here
follows a simple example:

Asynchronous State Machines
If the Class in Rhapsody is Active, it runs its own OXF Thread and it’s possible to use Asynchronous
Events (Receptions) and the Rhapsody timeout.

14

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Asynchronous or Synchronous Slots in Rhapsody State Machine (2/2)

onous
Synchr le
Examp

In synchronous mode, only
Triggered Operations can be
used.
In synchronous mode, it is needed
to use Qt timeout.

ronous
Asynch le
Examp

In asynchronous mode, both
Receptions and Triggered
Operations can be used.
In asynchronous mode, it possible
to use OXF timeout.

15

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

QTProfile Main Class v.s. Default Main Class (1/2)
The QTProfile introduces some differences to the generated main class, to make it
compatible with Qt and make the main thread the primary GUI thread.
Here follows the differences with the default standard main class:
– It automatically creates a QApplication object and starts it: this makes the main thread the Qt GUI thread
too.
– It does not start the OXF main loop: if you want to use Rhapsody asynchronous events you need at least
an active class in your model.

16

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

QTProfile Main Class v.s. Default Main Class (2/2)

e
With th
ile
Qt Prof

17

Without
the
le
Qt Profi

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

www.ibm.com/software/rational

18

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Summary
IBM Rational Rhapsody is a great tool for Model-Drive Development of C, C++, C#, Java
and Ada applications.
Nokia Qt is a well known and adopted C++ Framework to build cross-platform GUI
applications.
Thanks to Rhapsody flexibility, it has been possible to develop a custom Rhapsody profile
to benefit of both Rhapsody and Qt and leverage Model-Driven Development for GUI
Applications development.

19

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

www.ibm.com/software/rational

20

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Daily iPod Touch giveaway
Complete your session surveys online each day at a conference kiosk or on your
Innovate 2012 Portal!
Each day that you complete all of that day’s session surveys, your name will be entered
to win the daily IPOD touch!

On Wednesday be sure to complete your full conference evaluation to receive your
free conference t-shirt!

21

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

Acknowledgements and disclaimers
Availability: References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries
in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for
informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant.
While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without
warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this
presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or
representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of
IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have
achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to,
nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.
© Copyright IBM Corporation 2012. All rights reserved.

– U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
IBM, the IBM logo, ibm.com, Rational, the Rational logo, Telelogic, the Telelogic logo, Green Hat, the Green Hat logo, and other IBM products and
services are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If
these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols
indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered
or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml
Nokia QT is a trademark of Nokia Corporation
Other company, product, or service names may be trademarks or service marks of others.

22

© 2012 IBM Corporation
The Premier Event for Software and Systems Innovation

www.ibm.com/software/rational
© Copyright IBM Corporation 2012. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind,
express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have
the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM
software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities
referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature
availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines
Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.

23

© 2012 IBM Corporation
Ad

More Related Content

What's hot (20)

Painless JavaScript Testing with Jest
Painless JavaScript Testing with JestPainless JavaScript Testing with Jest
Painless JavaScript Testing with Jest
Michał Pierzchała
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Component Diagram
Component DiagramComponent Diagram
Component Diagram
University of Texas at Dallas
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMock
Globant
 
Selenium WebDriver training
Selenium WebDriver trainingSelenium WebDriver training
Selenium WebDriver training
Vijay Krishnan Ramaswamy
 
Kotlin on android
Kotlin on androidKotlin on android
Kotlin on android
Kurt Renzo Acosta
 
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
Simplilearn
 
Types of widgets in flutter? Difference between Row/Column/Stack
Types of widgets in flutter? Difference between Row/Column/StackTypes of widgets in flutter? Difference between Row/Column/Stack
Types of widgets in flutter? Difference between Row/Column/Stack
MohammadHussain595488
 
Angular 5 presentation for beginners
Angular 5 presentation for beginnersAngular 5 presentation for beginners
Angular 5 presentation for beginners
Imran Qasim
 
Android ppt
Android pptAndroid ppt
Android ppt
Ansh Singh
 
React hooks
React hooksReact hooks
React hooks
Ramy ElBasyouni
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
Rajeev Sharan
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
Vincent Kok
 
Composite pattern
Composite patternComposite pattern
Composite pattern
Shakil Ahmed
 
Acceptance testing
Acceptance testingAcceptance testing
Acceptance testing
COEPD HR
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 
Android Jetpack
Android Jetpack Android Jetpack
Android Jetpack
Tudor Sirbu
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
WebStackAcademy
 
Uml - An Overview
Uml - An OverviewUml - An Overview
Uml - An Overview
Raj Thilak S
 
Adapter Design Pattern
Adapter Design PatternAdapter Design Pattern
Adapter Design Pattern
melbournepatterns
 
Painless JavaScript Testing with Jest
Painless JavaScript Testing with JestPainless JavaScript Testing with Jest
Painless JavaScript Testing with Jest
Michał Pierzchała
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMock
Globant
 
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
Simplilearn
 
Types of widgets in flutter? Difference between Row/Column/Stack
Types of widgets in flutter? Difference between Row/Column/StackTypes of widgets in flutter? Difference between Row/Column/Stack
Types of widgets in flutter? Difference between Row/Column/Stack
MohammadHussain595488
 
Angular 5 presentation for beginners
Angular 5 presentation for beginnersAngular 5 presentation for beginners
Angular 5 presentation for beginners
Imran Qasim
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
Rajeev Sharan
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
Vincent Kok
 
Acceptance testing
Acceptance testingAcceptance testing
Acceptance testing
COEPD HR
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 
Android Jetpack
Android Jetpack Android Jetpack
Android Jetpack
Tudor Sirbu
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
WebStackAcademy
 

Viewers also liked (8)

Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSEInstalling Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Fraser Chadburn
 
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Fraser Chadburn
 
Rhapsody Overview
Rhapsody OverviewRhapsody Overview
Rhapsody Overview
desowen
 
System Architect and Rhapsody
System Architect and RhapsodySystem Architect and Rhapsody
System Architect and Rhapsody
Martin Owen
 
Getting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in AdaGetting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in Ada
Frank Braun
 
Rhapsody Software
Rhapsody SoftwareRhapsody Software
Rhapsody Software
Bill Duncan
 
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Real-Time Innovations (RTI)
 
SSE Practices Overview
SSE Practices OverviewSSE Practices Overview
SSE Practices Overview
IBM Rational software
 
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSEInstalling Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Fraser Chadburn
 
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Fraser Chadburn
 
Rhapsody Overview
Rhapsody OverviewRhapsody Overview
Rhapsody Overview
desowen
 
System Architect and Rhapsody
System Architect and RhapsodySystem Architect and Rhapsody
System Architect and Rhapsody
Martin Owen
 
Getting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in AdaGetting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in Ada
Frank Braun
 
Rhapsody Software
Rhapsody SoftwareRhapsody Software
Rhapsody Software
Bill Duncan
 
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Real-Time Innovations (RTI)
 
Ad

Similar to IBM Rational Rhapsody and Qt Integration (20)

Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
Daniel Rocha
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
Nokia
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
Igalia
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
Johan Thelin
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
achipa
 
MSalah_20161010
MSalah_20161010MSalah_20161010
MSalah_20161010
Mohammed Salah
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Prabindh Sundareson
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.io
Günter Obiltschnig
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch Application
Boulos Dib
 
Android
Android Android
Android
Nishant Jain
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
WE-IT TUTORIALS
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
GlobalLogic Ukraine
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
VMware Tanzu
 
Qt
QtQt
Qt
Anupam Kumar Srivastava
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
Geekstone
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions
QUONTRASOLUTIONS
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
ICS
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
Ken Cenerelli
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
Atul Jha
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
Karthika Parthasarathy
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
Daniel Rocha
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
Nokia
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
Igalia
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
Johan Thelin
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
achipa
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Prabindh Sundareson
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.io
Günter Obiltschnig
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch Application
Boulos Dib
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
WE-IT TUTORIALS
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
GlobalLogic Ukraine
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
VMware Tanzu
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
Geekstone
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions
QUONTRASOLUTIONS
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
ICS
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
Ken Cenerelli
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
Atul Jha
 
Ad

More from gjuljo (20)

Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templates
gjuljo
 
Azure Monitoring Overview
Azure Monitoring OverviewAzure Monitoring Overview
Azure Monitoring Overview
gjuljo
 
Going serverless with azure functions
Going serverless with azure functionsGoing serverless with azure functions
Going serverless with azure functions
gjuljo
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
gjuljo
 
Chatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot FrameworkChatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot Framework
gjuljo
 
Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016
gjuljo
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
gjuljo
 
Microservices Architecture: Labs
Microservices Architecture: LabsMicroservices Architecture: Labs
Microservices Architecture: Labs
gjuljo
 
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
gjuljo
 
IBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix OverviewIBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix Overview
gjuljo
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
gjuljo
 
IBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for HackathonsIBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for Hackathons
gjuljo
 
IBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon AcceleratorIBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon Accelerator
gjuljo
 
IBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - WorkshopIBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - Workshop
gjuljo
 
Codemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and DockerCodemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and Docker
gjuljo
 
Codemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab TutorialCodemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab Tutorial
gjuljo
 
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps ServicesCodemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
gjuljo
 
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open StackHybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
gjuljo
 
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
gjuljo
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
gjuljo
 
Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templates
gjuljo
 
Azure Monitoring Overview
Azure Monitoring OverviewAzure Monitoring Overview
Azure Monitoring Overview
gjuljo
 
Going serverless with azure functions
Going serverless with azure functionsGoing serverless with azure functions
Going serverless with azure functions
gjuljo
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
gjuljo
 
Chatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot FrameworkChatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot Framework
gjuljo
 
Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016
gjuljo
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
gjuljo
 
Microservices Architecture: Labs
Microservices Architecture: LabsMicroservices Architecture: Labs
Microservices Architecture: Labs
gjuljo
 
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
gjuljo
 
IBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix OverviewIBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix Overview
gjuljo
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
gjuljo
 
IBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for HackathonsIBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for Hackathons
gjuljo
 
IBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon AcceleratorIBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon Accelerator
gjuljo
 
IBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - WorkshopIBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - Workshop
gjuljo
 
Codemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and DockerCodemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and Docker
gjuljo
 
Codemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab TutorialCodemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab Tutorial
gjuljo
 
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps ServicesCodemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
gjuljo
 
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open StackHybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
gjuljo
 
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
gjuljo
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
gjuljo
 

Recently uploaded (20)

IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 

IBM Rational Rhapsody and Qt Integration

  • 1. IBM Innovate 2012 IBM Rational Rhapsody and Qt Integration for Model-Based GUI Development Giulio Santoli Client Technical Professional, IBM Rational [email protected] Session RG-1258
  • 2. The Premier Event for Software and Systems Innovation Agenda 1 Model-Driven Development with IBM Rational Rhapsody Nokia Qt Framework Overview 2 3 4 5 6 2 Rhapsody and Qt Integration Issues Rhapsody Qt Profile Overview Demo Summary © 2012 IBM Corporation
  • 3. The Premier Event for Software and Systems Innovation System and Software Engineering with IBM Rational Rhapsody Capabilities Requirements-driven analysis and design for technical, embedded or real-time solutions, including those based on multi-core architectures Rapid design validation and verification with frequent simulation and testing Development and deployment of complete C, C++, C#, Java and Ada applications Benefits "Using Rhapsody software improves the quality of the application software that is integral to the series hydraulic hybrid system development Build the right product through non-ambiguous communication and frequent collaboration Eliminate defects early and increase quality by continually testing the design process." Reduce development time by automatically generating applications and documentation Steve Zielinski, Eaton chief engineer for Re-use and adapt existing technology through reverse engineering and product line engineering software 3 © 2012 IBM Corporation
  • 4. The Premier Event for Software and Systems Innovation Model-Driven Development with IBM Rational Rhapsody Build efficient software that exactly matches the design intent – Develop C, C++, C#, Java, and Ada applications Maintain automated synchronization between model and code – Work simultaneously with architecture, software and target – All changes in one area reflected in the others Support Domain-Specific Languages, including: – UML, SysML, DoDAF, MoDAF, UDPM, DDS, Autosar, NetCentric, etc.. Generate new code Visualize existing Model Code Synchronization 4 © 2012 IBM Corporation
  • 5. The Premier Event for Software and Systems Innovation Software Model Execution in Animation Mode Requirements test through execution Model execution enables iterative development Correct specification hand-off to software 5 © 2012 IBM Corporation
  • 6. The Premier Event for Software and Systems Innovation Nokia Qt Framework Overview Nokia Qt is a cross-platform application and UI framework with APIs for C++ programming and for rapid UI creation of: – mobile applications (Symbian phones and the Nokia N9 smartphone) – desktop applications (Microsoft Windows, Mac OS X, and Linux) The Qt Framework is based on modular C++ class library, including UI, Multithreading, Networking, Multimedia, XML, Database connection and so on. The Qt SDK combines the Qt framework with tools such as an IDE, an UI Designer, a Simulator and some other tools. http://qt.nokia.com/ 6 © 2012 IBM Corporation
  • 7. The Premier Event for Software and Systems Innovation Rhapsody and Qt Integration: Technical Issues (1/2) Qt extends the C++ syntax by introducing some keywords and macros (such as “signal”, “slot”, “Q_OBJECT”) that are handled by the Qt pre-processor at compilation time. By default, these keywords are not compatible with the Rhapsody C++ parser and prevents Rhapsody round-trip feature. Here follows an example that shows these Qt keywords: The Object class must be the first in the base classes list. The Q_OBJECT macro is used to enable Qt metaobject features, such as dynamic properties, signals, and slots. Signals are emitted by an object when its internal state has changed in some way that might be interesting to the object's client or owner. Signal implementation is generated by the Qt preprocessor must not be implemented in the .cpp file. Slots are normal C++ functions and can be called normally; their only special feature is that signals can be connected to them. A slot is automatically called when a signal connected to it is emitted. 7 © 2012 IBM Corporation
  • 8. The Premier Event for Software and Systems Innovation Rhapsody and Qt Integration: Technical Issues (2/2) Qt requires the main thread to be the primary "GUI thread“ as Qt widgets and several related classes don't work in secondary threads. This usually conflicts with the standard Rhapsody configuration, as the main thread is automatically generated as an OXF thread. To cope Rhapsody with the Qt meta-object system, it is needed: – Update Rhapsody code generator though Rhapsody Simplifiers APIs – Customize Rhapsody properties to handle Qt-specific keywords – Customize Rhapsody autogenerated Main to correctly the Qt main thread – Customize Rhapsody autogenerated Makefile to invoke Qt command line utilities 8 © 2012 IBM Corporation
  • 9. The Premier Event for Software and Systems Innovation Solution: Rhapsody Qt Profile Rhapsody Qt Profile is a custom profile for Rhapsody in C++ based on stereotype customization and a Java plug-in invoked at code generation time. This profile is not part of the official Rhapsody installation package. It allows you to develop Qt-compatible code that also takes advantage of Rhapsody capabilities, such as state-machines with either synchronous or asynchronous events. The profile automatically generates the Qt project file and customize it accordingly. The current implementation supports the following: – Qt 4.7.3 for Windows (VS 2008 only) and Linux, with and without Animation (no Tracing). – All the .ui files are supposed to be stored in the “gui” directory in the Rhapsody project. – No support for Qt message catalogs and resources yet. – Only base Qt classes are defined in the profile (QApplication, QObject and QWidget). – All the slots are public, regardless their visibility in the model. – Qt Mobile Framework is not supported. 9 © 2012 IBM Corporation
  • 10. The Premier Event for Software and Systems Innovation Rhapsody Qt Profile Stereotypes <<QTObject>> You can use this stereotype to flag those Classes that needs to be Qt-compliant, with the Q_OBJECT macro, signals and slots. <<QTSignal>> You can use this stereotype to flag those Operations that are Qt Signals. They will be declared in the specification file (.h). Use it only for operations belonging to classes stereotyped as <<OTObject>>. <<QTSlot>> You can use this stereotype to flag those Operations, Triggered Operations or Receptions that are Qt Slots. Use it only for operations belonging to classes stereotyped as <<OTObject>>. <<QTConfiguration>> You can use this stereotype to flag those Configurations that you want to generate Qt-related programs. The default Makefile and Main are generated accordingly. 10 © 2012 IBM Corporation
  • 11. The Premier Event for Software and Systems Innovation Custom Simplifiers in Rhapsody Qt Profile Rhapsody Qt Profile uses Custom Simplifiers to “hook” predefined extension points at code generation time. Custom simplifiers manipulate the code model using standard Rhapsody APIs. For each element the simplify property can specify: – Default: follow out-of-the-box simplification – None: suppress the simplification – Copy: copy the application element to the code model as is – User: replace out of the box one with a new user defined one – User Post Default: invoke a custom simplifier after the out of the box one Properties Writer Rules 11 © 2012 IBM Corporation
  • 12. The Premier Event for Software and Systems Innovation Rhapsody Qt Profile Usage Overview To create you classes and set the <<QTObject>> stereotype to those of them you want to be Qt-enabled. When you stereotype a class with <<QTObject>> do the following: – Create a generalization dependency to QObject or QWidget classes provided by the profile. If you want to generalize a different class, copy one of the above ones in your project and rename at your will. – Create a constructor that initializes the parent Qt class, i.e. MyWindget(QWidget*parent) – Specify the includes you need in the Properties, i.e. <QWidget> or just <QtGui> – Apply the <<QTSignal>> and <<QTSlot>> stereotypes accordingly Apply the <<QTConfiguration>> stereotype to the Rhapsdody configuration you want to generate the Qt-enabled program. If you need user interface files (.ui) generated with Qt Designer, put them in the “gui” directory in your project: they will be automatically included in the build. Just Remember to include their correspondent header file names, as they are supposed to be generated during the Qt buil process. 12 © 2012 IBM Corporation
  • 13. The Premier Event for Software and Systems Innovation Code Example for a simple Reactive Class Generated code example with the Rhapsody Qt Profile: Rhapsody base class for classes with state machines QTProfile generated slots and macros This method starts the Rhapsody state machine implementation 13 © 2012 IBM Corporation
  • 14. The Premier Event for Software and Systems Innovation Asynchronous or Synchronous Slots in Rhapsody State Machine (1/2) Synchronous State Machines In the Synchronous implementation, if the Class in Rhapsody is not Active, the Main Thread is the Qt GUI Thread, it’s not possible to use Rhapsody Asynchronous Events e and no OXF Threads are running. In this configuration, it’s not possible to use the Rhapsody timer but it’s needed to use the Qt one. Here follows a simple example: Asynchronous State Machines If the Class in Rhapsody is Active, it runs its own OXF Thread and it’s possible to use Asynchronous Events (Receptions) and the Rhapsody timeout. 14 © 2012 IBM Corporation
  • 15. The Premier Event for Software and Systems Innovation Asynchronous or Synchronous Slots in Rhapsody State Machine (2/2) onous Synchr le Examp In synchronous mode, only Triggered Operations can be used. In synchronous mode, it is needed to use Qt timeout. ronous Asynch le Examp In asynchronous mode, both Receptions and Triggered Operations can be used. In asynchronous mode, it possible to use OXF timeout. 15 © 2012 IBM Corporation
  • 16. The Premier Event for Software and Systems Innovation QTProfile Main Class v.s. Default Main Class (1/2) The QTProfile introduces some differences to the generated main class, to make it compatible with Qt and make the main thread the primary GUI thread. Here follows the differences with the default standard main class: – It automatically creates a QApplication object and starts it: this makes the main thread the Qt GUI thread too. – It does not start the OXF main loop: if you want to use Rhapsody asynchronous events you need at least an active class in your model. 16 © 2012 IBM Corporation
  • 17. The Premier Event for Software and Systems Innovation QTProfile Main Class v.s. Default Main Class (2/2) e With th ile Qt Prof 17 Without the le Qt Profi © 2012 IBM Corporation
  • 18. The Premier Event for Software and Systems Innovation www.ibm.com/software/rational 18 © 2012 IBM Corporation
  • 19. The Premier Event for Software and Systems Innovation Summary IBM Rational Rhapsody is a great tool for Model-Drive Development of C, C++, C#, Java and Ada applications. Nokia Qt is a well known and adopted C++ Framework to build cross-platform GUI applications. Thanks to Rhapsody flexibility, it has been possible to develop a custom Rhapsody profile to benefit of both Rhapsody and Qt and leverage Model-Driven Development for GUI Applications development. 19 © 2012 IBM Corporation
  • 20. The Premier Event for Software and Systems Innovation www.ibm.com/software/rational 20 © 2012 IBM Corporation
  • 21. The Premier Event for Software and Systems Innovation Daily iPod Touch giveaway Complete your session surveys online each day at a conference kiosk or on your Innovate 2012 Portal! Each day that you complete all of that day’s session surveys, your name will be entered to win the daily IPOD touch! On Wednesday be sure to complete your full conference evaluation to receive your free conference t-shirt! 21 © 2012 IBM Corporation
  • 22. The Premier Event for Software and Systems Innovation Acknowledgements and disclaimers Availability: References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2012. All rights reserved. – U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo, ibm.com, Rational, the Rational logo, Telelogic, the Telelogic logo, Green Hat, the Green Hat logo, and other IBM products and services are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Nokia QT is a trademark of Nokia Corporation Other company, product, or service names may be trademarks or service marks of others. 22 © 2012 IBM Corporation
  • 23. The Premier Event for Software and Systems Innovation www.ibm.com/software/rational © Copyright IBM Corporation 2012. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others. 23 © 2012 IBM Corporation