<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>emineo</title>
	<atom:link href="http://blog.emineo.ch/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.emineo.ch</link>
	<description>We never stop thinking for you</description>
	<lastBuildDate>Tue, 08 May 2012 09:58:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Business Prozessinstanzen in SAP NetWeaver</title>
		<link>http://blog.emineo.ch/2012/05/business-prozessinstanzen-in-sap-netweaver/</link>
		<comments>http://blog.emineo.ch/2012/05/business-prozessinstanzen-in-sap-netweaver/#comments</comments>
		<pubDate>Tue, 08 May 2012 09:58:56 +0000</pubDate>
		<dc:creator>boehm</dc:creator>
				<category><![CDATA[SAP NetWeaver]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=662</guid>
		<description><![CDATA[Abgeschlossene Prozessinstanzen anzeigen]]></description>
			<content:encoded><![CDATA[<p><strong><span lang="DE-CH">Teil 2: Business Prozessinstanzen in SAP NWA beobachten und nachvollziehen</span></strong></p>
<p>Im ersten Teil dieses Artikels wurde die Ansicht von laufenden Prozessinstanzen beschrieben. In diesem zweiten Teil gehe ich auf die Ansicht abgeschlossener Prozessinstanzen, den log-Viewer und Rollen ein, welche für die Prozessadministration notwendig sind.</p>
<p><strong>Abgeschlossene Prozessinstanzen anzeigen</strong></p>
<p>Manchmal ist es auch hilfreich, nicht nur fehlerhaften Vorgängen nachzuspüren, sondern auch erfolgreiche Prozesse anzuzeigen: wann wurde ein Prozess abgeschlossen, welchen Verlauf nahm der Prozess oder wann fand ein bestimmter Prozessschritt statt? Standardmässig zeigt die Ansicht ‚Prozesse verwalten‘ nur fehlerhafte oder aktuell laufende Prozesse an. Erweitert man die Suchoptionen jedoch mittels des unscheinbaren Links ‚Erweitert‘, so lassen sich auch Prozesse in allen anderen Stati anzeigen. Es stehen dann ebenfalls die im 1.Teil beschriebenen Darstellungsoptionen der Prozesshistorie zur Verfügung. So lässt sich minutiös der Ablauf eines Prozesses nachvollziehen.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2012/04/ManageCompletedProcesses_Teil2.png"><img class="alignnone size-medium wp-image-663" title="ManageCompletedProcesses_Teil2" src="http://blog.emineo.ch/wp-content/uploads/2012/04/ManageCompletedProcesses_Teil2-300x233.png" alt="" width="300" height="233" /></a></p>
<p><strong>Einträge im Log Viewer</strong></p>
<p>Via ‚Problemmanagement‘ -&gt; ‚Protokolle und Traces‘ gelangt man zum Log Viewer. Dieser zeigt sämtliche Logeinträge aller aktivierter Komponenten und vom SAP CE System selbst. Da die Darstellung chronologisch erfolgt, ist sie für die Nachvollziehbarkeit eines Prozessablaufes unübersichtlich. Jedoch kann sie gerade für die Fehlerursachensuche wertvolle Details und Zusammenhänge liefern. Hier werden die programmatischen Logeinträge des SAP-Loggers angezeigt. Der Log-Level einzelner Java-Klassen oder Packages wird in der Protokollkonfiguration gesetzt: ‚Problemmanagement‘ -&gt; ‚Protokolle und Traces‘ -&gt; im Feld ‚Anzeigen:‘ den Wert ‚Trace-Orte‘ auswählen. Anschliessend kann im Hierarchiebaum das gewünschte Package oder die Klasse ausgewählte werden und die Gewichtung (Log-Level) gesetzt werden. Mittels Button ‚Zum Teilbaum kopieren‘ wird die gewählte Gewichtung auf alle darunterliegenden Packages und Klassen kopiert.</p>
<p><strong>Berechtigungen</strong></p>
<p>Nicht nur der Zugang zu den Ansichten im NWA, welche eine Prozessüberwachung ermöglichen, sondern auch die Durchführbarkeit von Funktionalitäten der verschiedenen Ansichten werden über Rollen gesteuert. Hier ein Kurzüberblick über die Rollen und deren Berechtigungen:</p>
<ul>
<li>SAP_BPM_SuperDisplay: berechtigt zur Anzeige aller Administrationsseiten von Prozessen und Aufgaben im NWA</li>
<li>SAP_BPM_SuperAdmin: berechtigt zur Anzeige aller Administrationsseiten von Prozessen und Aufgaben im NWA (wie SAP_BPM_SuperDisplay) und ermöglicht das Bearbeiten von Prozessen und Aufgaben und Starten von Prozessen</li>
<li>NWA_READONLY: berechtigt zur Anzeige aller Seiten im NWA</li>
<li>NWA_SUPERADMIN: berechtigt zur Anzeige (wie NWA_READONLY) und zum Management aller Seiten im NWA (aber nicht zum Starten von Prozessen)</li>
</ul>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2012/05/business-prozessinstanzen-in-sap-netweaver/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2012/05/business-prozessinstanzen-in-sap-netweaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business Prozessinstanzen in SAP NetWeaver</title>
		<link>http://blog.emineo.ch/2012/04/business-prozessinstanzen-in-sap-nwa/</link>
		<comments>http://blog.emineo.ch/2012/04/business-prozessinstanzen-in-sap-nwa/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 09:52:21 +0000</pubDate>
		<dc:creator>boehm</dc:creator>
				<category><![CDATA[SAP NetWeaver]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=649</guid>
		<description><![CDATA[Laufende Prozessinstanzen und Instanzen im Fehlerstatus anzeigen]]></description>
			<content:encoded><![CDATA[<p><strong>Teil 1: Business Prozessinstanzen in SAP NWA beobachten und nachvollziehen </strong></p>
<p>Gerade während der Entwicklung von Applikationen mit SAP BPM als auch im Betrieb der produktiven Applikation ist es unerlässlich, die Business Prozesse beobachten zu können. Nur so lässt sich ein auftretender Fehler identifizieren, dessen Ursache herausfinden und überhaupt der korrekte Verlauf eines Prozesses feststellen. SAP bietet mit dem NetWeaver Administrator (NWA) ein weit entwickeltes Werkzeug, um die SAP Business Prozesse detailliert beobachten zu können. Dieser Beitrag bezieht sich auf die NWA Version 7.2.</p>
<p>Im hier vorliegenden ersten Teil gehe ich auf die Ansicht von laufenden Prozessinstanzen ein. Im nachfolgenden, zweiten Teil wird die Ansicht abgeschlossener Prozessinstanzen, der log-Viewer und Rollen, welche für die Prozessadministration notwendig sind, beschrieben.</p>
<p><strong>Laufende Prozessinstanzen und Instanzen im Fehlerstatus anzeigen</strong></p>
<p>Um alle Prozessinstanzen eines Prozesses aufzulisten: Entweder ‚Operationsmanagement‘ -&gt; ‚Prozesse und Aufgaben‘ -&gt; ‚Prozesse verwalten‘ oder ‚Konfigurationsmanagement‘ -&gt; ‚Prozesse und Aufgaben‘ -&gt; ‚Prozess-Repository‘: BPM-Komponente auswählen -&gt; unter Fenster ‚Details von Komponente &#8230;‘ : ‚Prozesse und Aufgaben‘ den Prozess anklicken. Nun werden alle (aktuell laufende, abgeschlossene, abgebrochene und im Fehlerstatus) Prozessinstanzen aufgelistet. Im Tab ‚Historie‘ (am besten ‚Anzeigen: Mittel‘ selektieren) werden alle durchgeführten Anwendungsschritte gelistet, so dass sich nachvollziehen lässt, welche WebService-Aufrufe durch das BPM und in welcher Reihenfolge diese durchgeführt wurden.</p>
<p>Mittels ‚Anzeigen: Erweitert‘ wird auch angezeigt, ob und wann Veränderungen an welchen Datenobjekten stattgefunden hat. Im Tab ‚Kontextdaten‘ wird der Wert aller Datenobjekte angezeigt. Wurde ein Datenobjekt während des Prozessablaufes (mehrfach) aktualisiert, so wird dieses Datenobjekt entsprechend seiner Anzahl Aktualisierungen mehrfach aufgelistet und chronologisch absteigend sortiert. Wird im Prozess z.B. ein Datenobjekt (Tracer) implementiert, welches bei jedem Prozessschritt aktualisiert wird und lediglich den aktuellen Prozessschritt kennzeichnet, lässt sich hier sehr schnell und einfach feststellen, in welchem aktuellen Prozessschritt der Prozess sich befindet und so kann der durchgeführte Prozessverlauf sehr einfach nachvollzogen werden.</p>
<p>Natürlich lässt sich der Prozessverlauf auch im Tab ‚Historie‘ anhand der durchgeführten Anwendungsschritte erkennen. Ein solches Tracer-Datenobjekt erscheint mir aber einfacher und schneller erkennbar.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2012/04/manageFailedProcesses_Teil1.png"><img class="size-medium wp-image-651 alignnone" title="manageFailedProcesses_Teil1" src="http://blog.emineo.ch/wp-content/uploads/2012/04/manageFailedProcesses_Teil1-300x181.png" alt="" width="300" height="181" /></a></p>
<p>Bei Prozessinstanzen, bei denen im Prozessverlauf ein Fehler auftrat und sie sich somit im Fehlerstatus befinden, werden im Tab ‚Fehlerprotokoll‘ die Error-Log Einträge für diese Instanz chronologisch gelistet. Diese Ansicht entspricht zwar den Error-Log Einträgen in der Log-Viewer Ansicht (in ersterer Ansicht ist die Zeilenanzahl begrenzt, die dargestellten Informationen dürften aber in jedem Fall ausreichen), sie werden hier aber übersichtlich in Abhängigkeit ihres Contextes dargestellt. Wenn z.B. ein WebService-Aufruf durch eine Prozessaktivität wegen erfolglosen Verbindungsaufbaus drei Mal durchgeführt wird, so werden alle dazugehörigen Fehlerlogs in diese drei Versuche gegliedert. Es entfällt das mühsame Filtern und Zuordnen der einzelnen Logeinträge zu einem Vorgang wie es in der Log-Viewer-Ansicht notwendig ist. Zwar wird im Fehlerprotokoll kein Datum und Uhrzeit angegeben. Aber diese dürfte immer dem zuletzt erfolgten Ereignis in der Historie der Prozessinstanz entsprechen.</p>
<p>Kann die Ursache eines Prozessfehlers behoben werden, kann ein angehaltener Prozess mittels Button ‚Actions‘ -&gt; ‚Wiederaufnehmen‘ fortgeführt werden. Dabei wird der vormals fehlerhafte Prozessschritt erneut ausgeführt. Ebenso kann hier mittels Aktion ‚Abbrechen‘ ein Prozess abgebrochen werden, dessen Fehlerursache nicht behoben werden kann und der Prozess somit niemals beendet werden kann.</p>
<p>Ist der Tab ‚Historie‘ aktiviert, so wird der Link ‚Protokolle des Geschäftslebenszyklus anzeigen‘ im Tab dargestellt. Dadurch gelangt man auf die Log-Anzeige ‚Geschäftsprotokolle‘, welche detailliertere Angaben zu den Einträgen im Tab ‚Historie‘ darstellt. So kann man hier z.B. die Werte der Aufrufparameter und Rückgabeparameter von WebService-Aufrufen durch das BPM sehen, Werte von eingehenden Nachrichten oder auch den neuen Wert bei Aktualisierung von Datenobjekten. Via der Auswahlliste des anzuzeigenden Zeitraumes sind nur Einträge bis maximal der letzten 7 Tage darstellbar. Allerdings kann mittels des einblendbaren Query-Bereiches ein beliebiger Zeitraum eingegeben werden, nach dem die Einträge nach dem Anlegezeitstempel gefiltert werden können.</p>
<p>Im nachfolgenden, zweiten Teil wird die Ansicht abgeschlossener Prozessinstanzen, der log-Viewer und Rollen, welche für die Prozessadministration notwendig sind, beschrieben.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2012/04/business-prozessinstanzen-in-sap-nwa/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2012/04/business-prozessinstanzen-in-sap-nwa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rapid Application Development mit Spring Roo</title>
		<link>http://blog.emineo.ch/2012/01/rapid-application-development-mit-spring-roo/</link>
		<comments>http://blog.emineo.ch/2012/01/rapid-application-development-mit-spring-roo/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 17:15:04 +0000</pubDate>
		<dc:creator>Nadworny</dc:creator>
				<category><![CDATA[J2EE Open-Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=634</guid>
		<description><![CDATA[Sie denken, Spring Roo klingt zu schön, um wahr zu sein?]]></description>
			<content:encoded><![CDATA[<p>Wie oft haben Sie als Software Entwickler die gleichen Schritte während eines neuen Projektes wiederholt? Wie viel Zeit haben Sie für die Konfiguration Ihrer Entwicklungsumgebung aufgewendet? Wie oft mussten Sie die gleichen Bibliotheken herunterladen oder ähnliche Funktionalitäten (wie Reporting, Mailing oder Batchjobs) implementieren, obwohl Sie es schon in einem anderen Projekt umgesetzt haben? Und was ist mit der Validierung der Formulare oder Java-Beans? Automatisierte Tests von Backend oder Frontend? Es gibt viele Java-Standards, die uns bei vielen Aufgaben unterstützen. Um alle vollständig zu kennen, braucht man ein breites Fachwissen, eine grosse Erfahrung und was noch wichtiger ist &#8211; Zeit um in eine ständige Forschung zu investieren und zu überprüfen, ob die Standards, die wir aktuell benutzen, nicht bereits veraltet sind.</p>
<p>Gibt es nicht einen einfacheren Weg, um all diese Fragen ohne grossen Aufwand zu beantworten? Wäre es nicht sinnvoll ein Werkzeug zu haben, das die meisten alltäglichen Entwickleraufgaben automatisiert und die allgemein verwendeten Java-Standards integriert? Es scheint, dass im Java-Bereich Spring (<a href="http://www.springsource.org/">www</a><a href="http://www.springsource.org/">.</a><a href="http://www.springsource.org/">springsource</a><a href="http://www.springsource.org/">.</a><a href="http://www.springsource.org/">org</a>) der erste Kandidat ist, welcher uns eine universelle Lösung anbieten kann. Sie heisst Spring Roo (<a href="http://www.springsource.org/spring-roo">www</a><a href="http://www.springsource.org/spring-roo">.</a><a href="http://www.springsource.org/spring-roo">springsource</a><a href="http://www.springsource.org/spring-roo">.</a><a href="http://www.springsource.org/spring-roo">org</a><a href="http://www.springsource.org/spring-roo">/</a><a href="http://www.springsource.org/spring-roo">spring</a><a href="http://www.springsource.org/spring-roo">-</a><a href="http://www.springsource.org/spring-roo">roo</a>) und ich will es ihnen in diesem Blog ausführlich beschreiben.</p>
<p>Spring Roo’s Ziel ist es <strong>&#8220;grundlegend und nachhaltig die Produktivität der Java-Entwickler zu verbessern ohne die technische Integrität und Flexibilität zu beeinträchtigen&#8221;</strong> und ermöglicht eine schnelle Entwicklung für Java EE Anwendungen.</p>
<p>Spring Roo ist ein Software-Werkzeug zur Generierung von Java Web Anwedungen mit CRUD-Funktionalität. Dies bedeuet, der Anwender kann die Entitäten erstellen, lesen, finden, auflisten, aktualisieren und entfernen. Spring Roo bietet uns mehrere technologische Optionen, wie:</p>
<ul>
<li>verschiedene Anbieter für die JPA-basierte Persistenz (z.B. Hibernate oder OpenJPA)</li>
<li>Spring MVC-Controller</li>
<li>Frontend basierend auf JSPs, JSP 2.0, Google Web Toolkit (GWT) oder Flex</li>
</ul>
<p>Wenn Sie z.B. Ihren Persistenz-Provider wechseln möchten, so können Sie dies ganz einfach machen. Oder wenn Sie z.B. einen JSON-Ausgang zu Ihren Controllern oder eine neue Service-Ebene hinzufügen möchten, so können Sie dies mit einem geringem Aufwand und ein paar wenigen Befehlen erledigen. Alles was von Roo generiert wird, hat eine vernünftige Standard-Konfiguration, so dass nur sehr wenig Konfigurationsaufwand nötig ist. Spring Roo ist stark abhängig von den Spring Kernkomponenten und AspectJ’s Inter-Deklaration Features (welche ich in den nächsten Blog-Beiträgen detaillierter beschreiben werde).</p>
<p>Das Werkzeugset von Spring Roo kann mit sehr wenig Konfiguration-Overhead sowohl den Java-Code generieren als auch eine Menge von Standard-Modulen in einem Java-EE-Projekt integrieren, so dass Sie immer die Wahl haben, alles was Sie brauchen, zu ändern. So können Sie mit ein paar einfachen Befehlen die Technologien wie Mailing, Batchjobs, JSON für REST oder Solr für die Volltextsuche integrieren.</p>
<p>Sie denken, Spring Roo klingt zu schön, um wahr zu sein? Ich möchte Ihnen an einem einfachen Bespiel zeigen, dass es wirklich funktioniert!</p>
<p>Roo selbst ist eine Java-Anwendung und kann ohne zusätzliche Hilfsmittel verwendet werden. Sobald Sie mit Ihrem Roo-Projekt bereit sind, können Sie mit einem Roo-Befehl ein Java-Projekt generieren. Ab diesem Zeitpunkt können Sie das Projekt normal in Ihrer Entwicklungsumgebung (z.B. Eclipse) verwenden. Der bequemere Weg ist jedoch, Roo als ein Eclipse-Plugin zu verwenden oder eine spezielle und konstenlose Eclipse-Version von Spring (STS), welche das Roo-Plugin perfekt integriert, herunterzuladen. Ich selbst würde STS empfehlen und das folgende Beispiel wurde auch mit STS erstellt. Roo benutzt eine Kommandozeile (Shell) Schnittstelle mit leicht zu verstehenden Befehlen. Lassen Sie uns also die Spring Roo Konsole starten. Mit dem Befehl “hint”, erhalten Sie jederzeit Tipps.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2012/01/spring.png"><img class="alignleft size-thumbnail wp-image-636" title="spring" src="http://blog.emineo.ch/wp-content/uploads/2012/01/spring-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Wir haben bereits mit Hilfe von STS ein Projekt erstellt. Normalerweise kann man Roo von der Kommandozeile starten und folgende Befehle ausführen:</p>
<pre><strong><em>roo&gt; project --topLevelPackage ch.emineo.showcase</em></strong></pre>
<pre><strong><em></em></strong><strong><em>roo&gt; perform eclipse</em></strong></pre>
<p><strong><em></em></strong>An dieser Stelle haben wir ein Eclipse Projekt mit bereits konfiguriertem Maven, welches alle Bibliothek-Abhängigkeiten pflegt. Jetzt werden wir die Java Persistenz mit Hibernate als Provider und MySQL als Datenbank hinzufügen (vergessen Sie nicht, dass Sie TAB oder STRG-SPACE jederzeit drücken können, um die Auto-Vervollständigung zu bekommen):</p>
<pre><strong><em>roo&gt; persistence setup --database MYSQL --provider HIBERNATE</em></strong></pre>
<p><strong><em></em></strong>Dieser Befehl erzeugt alle benötigten Konfigurationsdateien (und Abhängigkeiten) und füllt diese mit Standardwerten.</p>
<p>Lassen Sie uns jetzt zwei Entitäten (Unternehmen und Mitarbeiter) mit ein paar Feldern erstellen, die Beziehung zwischen diesen beiden (Unternehmen können mehrere Mitarbeiter haben) definieren, Beans-Validierung hinzufügen und JUnit-Tests generieren. Um dies zu erledigen brauchen wir wirklich ganz wenige Befehle:</p>
<pre><strong><em>roo&gt; entity --class ~.domain.Company –testAutomatically</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Company roo&gt; field string --fieldName name --notNull --sizeMin 2</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Company roo&gt; entity --class ~.domain.Employee –testAutomatically</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Employee roo&gt; field string --fieldName lastname --notNull --sizeMax 40</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Employee roo&gt; field reference --fieldName company --type Company</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Employee roo&gt; focus --class ch.emineo.showcase.domain.Company</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Company roo&gt; field set --fieldName employees --type Employee</em></strong></pre>
<p><strong><em></em></strong>Das war’s. Nach der Erstellung des Datenmodells können wir jetzt die Integrations-Tests mit der MySQL-Datenbank durch den Befehl <strong>“perform tests” </strong>direkt von Roo ausführen lassen.</p>
<p>Die Entitäten, die gerade generiert wurden, bieten eine grundlegende Funktionalität (Erstellen, Suchen, Löschen, etc.). Aber was sollen wir machen, wenn wir einen Mitarbeiter aufgrund seines Nachnamen und für das spezifische Unternehmen suchen möchten? Kein Problem, es steht für uns eine Liste mit bereits generierten “Finders” (die schlussendlich mit Spring Data <a href="http://www.springsource.org/spring-data">http://www.springsource.org/spring-data</a> generiert werden) zur Verfügung:</p>
<pre><strong><em>~.domain.Employee roo&gt; finder list --filter lastname</em></strong></pre>
<pre><strong><em></em></strong><strong><em>~.domain.Employee roo&gt; finder add --finderName findEmployeesByLastnameLikeAndCompany</em></strong></pre>
<p><strong><em></em></strong>Jetzt können wir die neu generierte Methode einfach in unserer Anwendung benutzen:</p>
<pre><strong><em>Employee.findEmployeesByLastnameLikeAndCompany(lastname, company)</em></strong></pre>
<p>Trotz breiter Funktionalität (wie suchen, ändern, löschen, toString, etc.), welche für uns zur Verfügung steht, sieht unsere Mitarbeiter-Klasse immer noch ordentlich und sehr übersichtlich aus (die Zauberei von AspectJ):</p>
<pre><em><strong>@RooJavaBean</strong></em></pre>
<pre><em><strong>@RooToString</strong></em></pre>
<pre><em><strong>@RooEntity(finders = { "findEmployeesByLastnameLikeAndCompany" })</strong></em></pre>
<pre><em><strong>public class Employee {</strong></em></pre>
<pre> <em><strong>    @NotNull</strong></em></pre>
<pre><em><strong>    @Size(max = 40)</strong></em></pre>
<pre><em><strong>    private String lastname;</strong></em></pre>
<pre><em><strong>    @ManyToOne</strong></em></pre>
<pre><em><strong>    private Company company;</strong></em></pre>
<pre><em><strong>}</strong></em></pre>
<p>Nun, unser Datenmodell ist fertig und wir wollen eine Web-Ebene (Frontend) zu unserer Anwendung hinzufügen:</p>
<pre><strong><em>~.domain.Company roo&gt; web mvc setup </em></strong></pre>
<pre><strong><em>~.domain.Company roo&gt; web mvc all --package ~.web</em></strong></pre>
<p>Dieser Befehl scannt unser Projekt nach Entitäten und erstellt automatisch die MVC-Controllers (mit REST-Muster) mit den entsprechenden JSP-Seiten, Tiles, CSS-Dateien, Grafiken und Themes. Von nun an können wir unsere Anwendung durch den Maven-Befehl im Tomcat deployen und danach gleich testen:</p>
<pre><strong><em>~.web roo&gt; perform command --mavenCommand tomcat:run</em></strong></pre>
<p>Unser Frontend sieht jetzt wie folgt aus:</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2012/01/roo.png"><img class="alignleft size-medium wp-image-637" title="roo" src="http://blog.emineo.ch/wp-content/uploads/2012/01/roo-300x99.png" alt="" width="300" height="99" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Vielleicht möchten wir einige andere Funktionen hinzufügen? Eine Sicherheits-Ebene? Lassen Sie uns die grundlegende Benutzer-Authentifizierung für unser Frontend integrieren:</p>
<pre><strong><em>~.web roo&gt; security setup</em></strong></pre>
<p><strong><em></em></strong>Wollen Sie die Frontend-Seiten automatisch testen? Kein Problem, wir können mit Hilfe von Selenium (ein bekanntes Framework für Webanwendungen &#8211; <a href="http://seleniumhq.org">http://seleniumhq.org</a>) die Tests mit dem Firefox-Browser ausführen:</p>
<pre><strong><em>~.web roo&gt; selenium test --controller ~.web.CompanyController</em></strong></pre>
<p><strong><em></em></strong>Das wäre alles für heute. Wie Sie sehen können, innerhalb weniger Minuten haben wir fast die vollständige Web-Anwendung mit JPA, Hibernate, MySQL, JSP mit Tiles, CSS, Security, Backend und Frontend Tests umgesetzt. Roo bietet aber noch viel mehr Möglichkeiten, welche wir hier gar nicht erwähnt haben. Was noch sehr interresant ist, wir können zum Beispiel den Datenbank-Anbieter in einigen Sekunden mit einem einzigen Befehl wechseln. Das Beste an Roo ist, dass man die Anwendung weiter in seiner Entwicklungsumgebung entwickeln kann, ohne Roo zu verwenden, was dazu führt, dass man (wie von Spring beworben) schneller entwickeln kann, ohne die technische Integrität und Flexibilität zu beeinträchtigen.</p>
<p>Stolperfallen? Wie bei vielen neuen Technologien gibt es wohl Probleme, die am Anfang schwierig werden. Roo ist ein ziemlich neues Werkzeug (2009) und hat noch einige Bugs. Wenn wir Spring Roo intern mehr und mehr benutzen werden, finden wir sicher einige Bugs und wir können Ihnen die Schwierigkeiten des Roo in einem weiteren Blog mitteilen. Spring Roo ist aber bereits zu diesem Zeitpunkt ein wertvolles Tool, welches uns Entwickler sicherlich bei unseren alltäglichen Problemen (die fast bei jedem neuen Projekt auftreten) helfen kann.</p>
<p>Haben Sie Erfahrungen mit anderen RAD Frameworks / Werkzeuge wie Grails oder Ruby on Rails und würden diese gerne mitteilen? Bitte tun Sie dies in den Kommentaren unten!</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2012/01/rapid-application-development-mit-spring-roo/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2012/01/rapid-application-development-mit-spring-roo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SAP Electronic Medical Record (EMR)</title>
		<link>http://blog.emineo.ch/2012/01/sap-electronic-medical-record-emr/</link>
		<comments>http://blog.emineo.ch/2012/01/sap-electronic-medical-record-emr/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 11:45:34 +0000</pubDate>
		<dc:creator>winkler</dc:creator>
				<category><![CDATA[E-Health]]></category>
		<category><![CDATA[eHealth]]></category>
		<category><![CDATA[EMR]]></category>
		<category><![CDATA[IPAD]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=620</guid>
		<description><![CDATA[Auch SAP bringt eine mobile Lösung für das Gesundheitswesen auf den Markt.]]></description>
			<content:encoded><![CDATA[<p>Im letzten Jahr hat SAP das erste Mal ihre mobile Applikation für das Gesundheitswesen angekündigt und auch bereits Prototypen auf dem iPad präsentiert. Die <a title="SAP EMR" href="http://www.sap.com/mobile/emr">SAP  EMR</a> (Electronic Medical Record), wie die App von der SAP genannt wird, ist auf Ärzte und Pflegepersonal ausgerichtet und erlaubt es jederzeit und von überall auf die Patientendaten über mobile Endgeräte zuzugreifen. Die EMR App bietet Zugriff auf alle relevanten Daten wie sie für die verschiedenen Tätigkeiten im Krankenhaus benötigt werden. Im Standard Lieferumfang enthalten sind Sichten auf Patientendaten, Vitalfunktionen, Laborwerte, Röntgenbilder, klinische Befunde und weitere Dokumente im Zusammenhang mit der Behandlung des Patienten.</p>
<p>An einem EMR Workshop für Partner in Walldorf letzte Woche hat die SAP die Applikation und den aktuellen Stand der Entwicklung näher vorgestellt &#8211;  was Anlass dazu gibt dies hier kurz vorzustellen.</p>
<p><strong>Fokussierung auf den Mensch und seine Bedürfnisse und Ansprüche</strong></p>
<p><strong></strong>Die Bedienung der App ist intuitiv und zu 100% auf die Bedürfnisse der Benutzer ausgerichtet. Das ist insbesondere in Bezug auf die Tatsache, dass es sich um eine mobile Anwendung handelt, welche bestehende Daten und Funktionen von SAP Backend Systemen zur Verfügung stellt, keine Selbstverständlichkeit! Entgegen der klassischen Fokussierung auf Systeme und Prozesse, wo es im Wesentlichen darum geht, die bestehenden Funktionen und Daten einfach mobil bereitzustellen, wurde bei der Entwicklung der EMR konsequent auf die Bedürfnisse des Benutzers eingegangen. Die EMR App wurde von Personen designed, welche keine Kenntnisse der bestehenden Funktionen und Systeme hatten, sondern sich ausschliesslich zusammen mit Ärzten und Pflege Personen der Analyse der realen Prozessen und der Aufnahme der Bedürfnisse widmeten. Der zentrale Grundsatz bei der Entwicklung war der Leitsatz „User experience is everything“ und dieser wurde konsequent angewendet was sich im Resultat eindeutig zeigt.</p>
<p><strong>Ausrichtung auf Offenheit und Erweiterbarkeit</strong></p>
<p>Ein weiterer wesentlicher Aspekt der EMR App (und vielleicht auch eher untypisch für eine SAP basierte mobile Lösung) ist die Ausrichtung auf Offenheit und Erweiterbarkeit. Die App kommuniziert ausschliesslich mit einer Middleware, dem SAP EMR Mobile Server. An diesen können Backend Systeme über sog. Konnektoren angebunden werden, welche individuell in die bestehenden Systeme integriert werden. Damit wird die Möglichkeit gegeben, für die mobile EMR Anwendung beliebige Backend Systeme zu nutzen, sowohl SAP wie auch Non-SAP System.</p>
<p>Darüber hinaus wurde die Möglichkeit geschaffen, über sog. „Facetten“ eigene Informations- und Anwendungskomponenten zum Patienten in die App einzubinden. Dadurch können bestehende Applikationen von Drittanbietern einfach eingebunden oder neue Facetten für bestehende Lösungen implementiert werden. Die SAP versteht ihre EMR ganz klar als eine Art „Framework“ für die Implementierung von mobilen Lösungen für das Gesundheitswesen, welches mit vorgefertigten Applikationskomponenten ausgeliefert wird, aber individuell auf die Bedürfnisse und vorhandenen Systeme ausgerichtet werden kann.</p>
<p><strong>Rasche Implementierungszeit, sofern der Standard genutzt wird</strong></p>
<p>Im Zusammenspiel mit dem SAP eigenen KIS System (IS-H*MED) kann die Lösung fast zu 100% „out-of-the-box“ genutzt werden. Einzig für die Darstellung von Röntgenbildern benötigt es eine Integration in ein bestehendes PACS. Für letzteres gibt es vorgefertigte Schnittstellen, welche bei Kunden auch bereits im Einsatz sind. Bei der Charité Berlin, einem grossen Gesundheitsdienstleister in Deutschland bei welchem die EMR im Einsatz ist, erfolgte die initiale Einrichtung der EMR anscheinend innert 5 Tagen. Dies war möglich, da sich die Installation und das anschliessende Customizing sehr einfach gestalten. Es war auch ganz klar das Ziel der SAP, eine Lösung zu bringen, welche rasch und einfach zu implementieren ist und so einen leichten Einstieg in das Thema mobile Lösung ermöglicht. Auf der anderen Seite muss aber auch erwähnt werden, dass ohne ein vorhandenes SAP KIS System die gesamte Integration in Backend Systeme zusätzlich zur Implementation noch erfolgen muss &#8211; und dann ist eine Implementierung in so kurzer Zeit kaum mehr möglich.</p>
<p><strong>Integrationsmöglichkeiten sind noch nicht vollständig gegeben</strong></p>
<p>Aus technologischer Sicht kommuniziert die EMR App über <a title="Open data Protocol" href="http://www.odata.org/" target="_blank">oData </a>(Open data Protocol) mit dem SAP EMR Mobile Server. Letzterer ist ein SAP NW Applikationsserver ABAP 7.02 der mit den Komponenten SAP Gateway Server 2.0 und dem EMR Add-on bestückt werden muss. Diese Middleware Schicht übernimmt die Kommunikation mit den Backend Systemen, wobei in der aktuell verfügbaren Ramp-up Version lediglich RFC Schnittstellen zur Verfügung stehen, was eine Einschränkung auf SAP basierte Backend Systeme bedeutet. Dass das nicht genügend ist versteht sich von selbst und auch bei SAP ist das von Beginn weg klar gewesen. Aus diesem Grund wird daran gearbeitet, neben den RFC’s auch SOAP Schnittstellen bereitzustellen, sodass beliebige Integrationen zu beliebigen Systemen möglich gemacht werden können. Diese sollen mit der Verfügbarkeit der EMR App für Endkunden im April 2012 fertiggestellt sein.</p>
<p><strong>Potential für die Schweiz</strong></p>
<p>Als Lösungsanbieter für das Gesundheitswesen in der Schweiz haben wir uns bereits letztes Jahr mit der Positionierung der SAP EMR auseinandergesetzt. Die Herausforderung die sich uns stellt ist die Tatsache, dass das SAP eigene KIS (IS-H*MED) in der Schweiz bei keinem Kunden im Einsatz ist. Es benötigt also in jedem Fall eine Integration in ein anderes Non-SAP KIS System. Und da die Heterogenität in diesem Bereich sehr hoch ist und die verschiedenen KIS Systeme meist keine offenen Schnittstellen anbieten, wird der Aufwand für die Implementierung einer EMR im Bereich der Integration liegen.</p>
<p>Trotz diesem Wermuttropfen bietet die EMR Lösung von SAP aber das Potential, um in einem spezifischen Bereich in ein kleines mobiles Projekt einzusteigen und einige dedizierte und wichtige Funktionen den Benutzern bereitzustellen. Vorab die Offenheit und Erweiterbarkeit, sowie auch die einfache und rasche Implementierung der Lösung auf bestehender SAP Infrastruktur begünstigen einen einfachen Einstieg. Im Anschluss kann die Lösung dann kontinuierlich ausgebaut und optimiert werden.</p>
<p>Wichtig ist auch, dass es sich bei der EMR um eine erste Version handelt, welche noch viel Entwicklungspotential hat. Die SAP hat sehr hohe Erwartung in ihre mobile Lösung und ist auch Willens diese kontinuierlich auszubauen und weiterzuentwickeln. Dazu sind auch Kunden und Nutzer herzlich eingeladen, ihre Ideen und Wünsche mit einzubringen. Im “<a title="SAP Idea Place for EMR" href="https://cw.sdn.sap.com/cw/community/ideas/mobility/sap_electronic_medical_record_healthcare" target="_blank">Idea Place</a>” von SAP, der Community Plattform von SAP auf welcher neue Ideen und Wünsche von jedermann formuliert werden können, hat die EMR bereits einen festen Platz eingenommen.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2012/01/sap-electronic-medical-record-emr/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2012/01/sap-electronic-medical-record-emr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Der ThermoDock® Test</title>
		<link>http://blog.emineo.ch/2012/01/der-thermodock-test/</link>
		<comments>http://blog.emineo.ch/2012/01/der-thermodock-test/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 18:25:49 +0000</pubDate>
		<dc:creator>zecchino</dc:creator>
				<category><![CDATA[E-Health]]></category>
		<category><![CDATA[eHealth]]></category>
		<category><![CDATA[Healthcare]]></category>
		<category><![CDATA[Patient Empowerment]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=607</guid>
		<description><![CDATA[In der Tat ein einzigartiges Design - muss etwas einzigartig sein?]]></description>
			<content:encoded><![CDATA[<p>Es ist wirklich spannend zu beobachten, wie sich die Technologie rund um die mobilen Geräte entwickelt und wie fast täglich neue Devices, Zusatzgeräte auf den Markt kommen.</p>
<p>Heute haben wir das <a title="www.vitadock.de/" href="http://www.vitadock.de/" target="_blank">ThermoDock</a><strong><a title="www.vitadock.de/" href="http://www.vitadock.de/" target="_blank">®</a> </strong>erhalten und natürlich sofort ausversucht.</p>
<p>Wie bei allen Devices ist das Einrichten einfach. Die Anwendung runterladen, den Stecker an das iPhone anschliessen und los geht’s.</p>
<p>ThermoDock<strong>® </strong>ist ein Fieber-Messmodul das mit Infrarot die Temperatur misst.  Das funktioniert einwandfrei und gibt die gleichen Messwerte wie andere Thermometer. Die Messwerte werden auf dem iPhone gespeichert und können bei Bedarf via E-Mail versendet werden. Dabei wird ein Mail an einen zu definierenden Empfänger erstellt welches die Messwerte in verschiedenen Formaten (html, txt, csv) enthält.</p>
<p>Nach ein paar Versuchen mischt sich ein komisches Gefühl in das Erlebnis. Irgend etwas gefällt mir nicht an der grundsätzlich gut gemachten Anwendung.</p>
<p><strong>Datenintegration</strong></p>
<p>Einmal mehr zeigt es sich, dass eigentlich zwingend ein Datenintegrationsstandard definiert werden sollte. Die Daten sind auf dem iPhone in einem beliebigen Format vorhanden und können als E-Mail versendet werden. Es ist meines Erachtens keine Integration in eine Online-Plattform vorgesehen und damit sind die Daten nur isoliert vorhanden. Es besteht keine Möglichkeit, die Daten zum Beispiel in meine Fitbit-Daten (<a href="http://www.fitbit.com">www.fitbit.com</a>) zu integrieren und damit einen Zusammenhang zu meinen weiteren Tätigkeiten (Beispiel: körperliche Aktivitäten) herzustellen oder die Daten anderweitig in einem Zusammenhang mit anderen Daten visualisieren zu können.</p>
<p><strong>Anwendung (Apps)</strong></p>
<p>Die Anwendung stellt die Funktionen für alle Produkte (Messgeräte für Blutdruck, Gewicht, Blutzucker und Fieber) der Firma <a title="www.medisana.de" href="http://www.medisana.de" target="_blank">MEDISANA</a> zur Verfügung und wird mit „Einzigartiges Design“ beworben und ja, das ist es in der Tat – Einzigartig.</p>

<a href='http://blog.emineo.ch/2012/01/der-thermodock-test/img_0670/' title='IMG_0670'><img width="150" height="150" src="http://blog.emineo.ch/wp-content/uploads/2012/01/IMG_0670-150x150.png" class="attachment-thumbnail" alt="IMG_0670" title="IMG_0670" /></a>
<a href='http://blog.emineo.ch/2012/01/der-thermodock-test/img_0669/' title='IMG_0669'><img width="150" height="150" src="http://blog.emineo.ch/wp-content/uploads/2012/01/IMG_0669-150x150.png" class="attachment-thumbnail" alt="IMG_0669" title="IMG_0669" /></a>
<a href='http://blog.emineo.ch/2012/01/der-thermodock-test/img_0668/' title='IMG_0668'><img width="150" height="150" src="http://blog.emineo.ch/wp-content/uploads/2012/01/IMG_0668-150x150.jpg" class="attachment-thumbnail" alt="IMG_0668" title="IMG_0668" /></a>

<p>Obwohl grundsätzlich hübsch im Design, ist es aus meiner Sicht gewöhnungsbedürftig in der Anwendung. Schwierig zu erklären. Mit ein wenig Geduld kann man sich einfach durch die verschiedenen Funktionen navigieren. Der Grund meiner Irritation liegt darin, dass die Anwendung gesucht hübsch ist. Da hat sich ein Team wirklich Mühe gegeben und versucht eine verspielte Apps zu bauen. Und genau das ist es was mich am Ende stört. Das Apple-Design lebt nicht von Verspieltheit, sondern von einem klaren, simplen Design. Kein rumspielen und herausfinden. Sondern klare Linien und einfache Bedienung.</p>
<p><strong>Zwischenfazit</strong></p>
<p>Ich werde mal damit starten, ThermoDock<strong>® </strong>über eine längere Zeit zu testen und mal schauen, ob ich mich an die Apps gewöhne.</p>
<p>Die Funktion &#8220;Messen der Temperatur&#8221; wird auf alle Fälle korrekt bereitgestellt. Die Verpackung und Usability ist auch eine Geschmacksache.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2012/01/der-thermodock-test/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2012/01/der-thermodock-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Richtig Testen</title>
		<link>http://blog.emineo.ch/2011/12/richtig-testen/</link>
		<comments>http://blog.emineo.ch/2011/12/richtig-testen/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 15:58:13 +0000</pubDate>
		<dc:creator>Moos</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=601</guid>
		<description><![CDATA[Wie kann man Software überhaupt automatisiert testen?]]></description>
			<content:encoded><![CDATA[<p>Im Blog „<a title="Qualitätssteigerung mit automatisierten Tests" href="http://blog.emineo.ch/2011/12/qualitatssteigerung-mit-automatisierten-tests/">Qualitätssteigerung mit automatisiertem Testen</a>“ wurden die Vorteile vom automatisierten Testen bereits erläutert. Doch wie wird richtig getestet? Wie kann man Software überhaupt automatisiert testen?</p>
<p>Angenommen ich habe eine Blog-Software und möchte einen Test schreiben, welcher einen Blog-Eintrag veröffentlicht. Hierbei interessiert mich nur gerade das Veröffentlichen des Bloges. Alle restlichen Funktionen und Abläufe z.B. die Registrierung eines Blog-Benutzers interessieren mich jedoch nicht. Der Test wird also wie folgt beschrieben:</p>
<ul>
<li><strong>Name: </strong>Blog-Eintrag veröffentlichen</li>
<li><strong>Vorbedingungen: </strong>Blog-Benutzer existiert und kann Einträge veröffentlichen</li>
<li><strong>Testresultat: </strong>Der Blog-Eintrag wurde korrekt veröffentlicht</li>
<li><strong>Testfall: </strong>Der Blog-Benutzer schreibt einen Blog und veröffentlicht diesen auf der Homepage.</li>
</ul>
<p>Bei der Durchführung dieses Tests habe ich nun das Problem, dass ich die Vorbedingungen sicherstellen muss. Sprich ich muss zuerst einen Blog-Benutzer anlegen, welcher Einträge veröffentlichen kann. Ein kleiner und einfacher Test kann also auf Grund der Vorbedingungen schnell sehr aufwendig werden. Vor allem wenn z.B. Ausnahmefälle (z.B. mit einem gesperrten Blog-Benutzer) getestet werden müssen. Ebenfalls habe ich das Problem, dass die Überprüfung des Testresultates nicht immer einfach ist. Für automatisierte Tests im Java-Umfeld gibt es hierfür ein Zauberwort: „Unitils“.</p>
<p>Unitils ist ein Test-Framework, welches auf JUnit basiert und verschiedene Module zum Testen von Java-Anwendungen beinhaltet. Eines der Module heisst DBUnit. Mit Hilfe dieses Modules kann unser kleines Problem sehr einfach und elegant gelöst werden. Mit DBUnit kann ein definierter Datenzustand in der Datenbank inialisiert werden. Ebenfalls können nach einem Test die Datensätze mit Hilfe von DBUnit überprüft werden. Der Ablauf ist sehr einfach:</p>
<ol>
<li>Die Datenbank wird mit einem definierten Zustand initialisiert</li>
<li>Der JUnit-Test wird ausgeführt</li>
<li>Die Modifikationen in der Datenbank werden überprüft</li>
</ol>
<p>Dadurch können auch Spezialfälle sehr schnell und einfach getestet werden.</p>
<p><strong>Datenbank initialisieren</strong></p>
<p>In Schritt 1 wird mit Hilfe einer XML-Datei der Zustand der Datenbank definiert. Die Datenbank wird vor der Ausführung des Tests automatisch durch Unitils initialisiert.</p>
<p>Beispiel XML:</p>
<pre>&lt;dataset&gt;
 &lt;TBL_USER ID=”1” LOGINNAME=”testuser” ACTIVE=”1” /&gt;
 &lt;/dataset&gt;</pre>
<p>Hier wird also ein Benutzer „testuser“ in der Datenbank angelegt, welcher aktiviert ist und somit Blog-Einträge erfassen kann.</p>
<p><strong>Datenbank überprüfen</strong></p>
<p>Auch die Testresultate können mit Hilfe einer XML-Datei definiert werden. Unitils überprüft nach der Testdurchführung die Datenbank auf Grund der in der XML-Datei definierten Datensätze.</p>
<p>Beispiel XML:</p>
<pre>&lt;dataset&gt;
 &lt;TBL_BLOG ID=”1” USER_ID=”1” BLOG=”Dies ist ein Blog...” /&gt;
 &lt;/dataset&gt;</pre>
<p>Hier wird also überprüft, ob in der Datenbank der Blog-Eintrag korrekt erstellt und mit dem Benutzer verknüpft wurde.</p>
<p><strong>Datensets (XML-Dateien)</strong></p>
<p>Ein Test kann beliebig viele Datensets laden. Ebenfalls können die Datensets (XML-Dateien) von beliebig vielen Tests verwendet werden. Mit Hilfe von Defaultdatensets können so sehr schnell die Vorbedingungen sämtlicher Tests abgedeckt werden. Z.B. könnten wie folgt Defaultdatensets definiert werden:</p>
<ul>
<li>Aktiver Benutzer</li>
<li>Gesperrter Benutzer</li>
<li>Blog Eintrag für Benutzer</li>
<li>etc.</li>
</ul>
<p>Kennen Sie das Problem mit den Vorbedingungen für einen Test? Welche Lösung haben Sie dafür?</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2011/12/richtig-testen/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2011/12/richtig-testen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qualitätssteigerung mit automatisierten Tests</title>
		<link>http://blog.emineo.ch/2011/12/qualitatssteigerung-mit-automatisierten-tests/</link>
		<comments>http://blog.emineo.ch/2011/12/qualitatssteigerung-mit-automatisierten-tests/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 15:45:53 +0000</pubDate>
		<dc:creator>Moos</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=594</guid>
		<description><![CDATA[Maximale Leistung und Qualität für minimalen Preis!]]></description>
			<content:encoded><![CDATA[<p>&#8220;Maximale Leistung und Qualität für minimalen Preis!&#8221;, so lautet das Motto der heutigen Gesellschaft. Wenn ich ein Produkt kaufe, dann möchte ich das Produkt mit dem besten Preis- / Leistungsverhältnis. Der Funktionsumfang soll möglichst gross sein und der Preis möglichst klein. Und natürlich muss die Qualität top sein!</p>
<p>Diese Erwartungen werden auch an Softwareprojekte gestellt. Solch hohe Ansprüche werden leider oft durch ein minimales Testkonzept anvisiert. Tests werden manuell durchgeführt und gehen sogar teilweise vergessen respektive die Zeit oder das Budget reichen nicht mehr. Bei einer neuen Softwareversion, Weiterentwicklung werden nur die neuen Funktionalitäten getestet und die bestehenden geraten in Vergessenheit. Dadurch können kurzfristig sehr einfach Kosten eingespart werden. Doch ist dies längerfristig gesehen auch der richtige Weg? Die Antwort lautet: „Nein!“.</p>
<p>Langfristig leidet die Qualität der Software enorm, denn die älteren Funktionen geraten zunehmend in Vergessenheit und werden nicht mehr bei jeder Version getestet. Dadurch können sich sehr schnell Fehler in der Software einnisten, welche mit einem grossen Aufwand und somit hohen Kosten wieder korrigiert werden müssen.</p>
<p>Dies zeigt auch eine Grafik der Firma SQS (Software Quality Systems AG):</p>
<p style="text-align: center;"><a href="http://blog.emineo.ch/wp-content/uploads/2011/12/Bildschirmfoto-2011-12-28-um-19.25.33.png"><img class="size-medium wp-image-595 aligncenter" title="SWQM" src="http://blog.emineo.ch/wp-content/uploads/2011/12/Bildschirmfoto-2011-12-28-um-19.25.33-300x97.png" alt="Kostenfaktoren für Fehlerbehebung" width="300" height="97" /></a></p>
<p>Quelle:  <a href="http://www.sqs.com/de/de/Download/Datenblatt_EED_DE.pdf">http://www.sqs.com/de/de/Download/Datenblatt_EED_DE.pdf</a></p>
<p>Je früher ein Fehler entdeckt wird, desto niedriger sind die Kosten für dessen Korrektur. Wie können solche Fehler frühstmöglich erkannt bzw. vermieden und dadurch langfristig Kosten gespart werden? Durch automatisiertes Testen. Das automatisierte Testen ist der Garant für einen langjährigen Erfolg. Selbst für kleine Projekte!</p>
<p>Beim automatisierten Testen werden bereits während der Entwicklung einer neuen Funktion Tests geschrieben, welche in Zukunft immer und immer wieder automatisch ausgeführt werden. Diese Tests werden durch eine geeignete Infrastruktur (z.B. einen Buildserver) zyklisch ausgeführt und die Entwickler automatisch über dessen Ergebnisse benachrichtigt. Dadurch kann bereits während der Implementierung sehr schnell ein Fehler erkannt und korrigiert werden.</p>
<p>Ist in Ihrer Software die Qualität gewährleistet? Wie testen Sie Ihre Software?</p>
<p>Bei der emineo setzten wir immer stärker und konzentrierter auf <a title="Testgetriebene Entwicklung" href="http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung" target="_blank">Test-driven development</a>. Was bei reinen Open-Source Entwicklungen problemlos funktioniert, ist bei SAP NetWeaver basierenden Entwicklungen eine höhere Herausforderung welche wir aber in verschiedenen Projekten bereits erfolgreich einsetzten können.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2011/12/qualitatssteigerung-mit-automatisierten-tests/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2011/12/qualitatssteigerung-mit-automatisierten-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1&#8217;710&#8217;079 Schritte oder 1&#8217;561.39 Km später</title>
		<link>http://blog.emineo.ch/2011/12/1700000-schritte-oder-1561-km/</link>
		<comments>http://blog.emineo.ch/2011/12/1700000-schritte-oder-1561-km/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 18:52:20 +0000</pubDate>
		<dc:creator>zecchino</dc:creator>
				<category><![CDATA[E-Health]]></category>
		<category><![CDATA[Patient Empowerment]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Self-Services]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=583</guid>
		<description><![CDATA[Fitbit - Nicht nur ein Spiel, ein wichtiger Beitrag zur Bewusstseinsbildung]]></description>
			<content:encoded><![CDATA[<p>Seit dem 20. Mai 2011 trage ich nun täglich, mit einer zweiwöchigen Unterbrechung (Ferien), meinen <a title="http://www.fitbit.com/" href="http://www.fitbit.com/" target="_blank">Fitbit</a>. Gemäss Fitbit habe ich demnach seit Mai 2011 ca. 500 000 Kalorien verbrannt, ca. 1&#8217;700&#8217;000 Schritte gemacht und eine Strecke von 1&#8217;500 km zurückgelegt.</p>
<p>Frage ich Kollegen und Bekannte, wie viele Km ich täglich in meinem Büro-Job laufe, erhalte ich als Antwort im Normalfall „so ca. 2 Km“. Tatsächlich laufe ich an einem normalen Tag locker zwischen 4 und 7 Kilometer. Kommt noch Sport  dazu, komme ich auf 10 bis 14 Km. Über die Wochen gesehen, kommt da ein Tagesdurchschnitt von 6 bis 10 km zusammen. Mithilfe der Fitbit Benchmark  sehe ich zusätzlich, dass ich mich innerhalb meiner demografischen Daten deutlich mehr als der Durchschnitt bewege.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2011/12/picture-13.png"><img class="alignleft size-thumbnail wp-image-588" title="fitpit_analyse" src="http://blog.emineo.ch/wp-content/uploads/2011/12/picture-13-150x150.png" alt="" width="150" height="150" /></a>Da Fitbit nicht nur meine Bewegung am Tag aufzeichnet, sondern auch meinen Schlaf, weiss in unterdessen auch, dass ich im Durchschnitt 6 Stunden und 48 Minuten schlafe und damit leicht unter der empfohlenen Schlafdosis und dem Durchschnitt bin – ja das merke ich jeden Tag.</p>
<p>Ja, Fitbit zeichnet meine Bewegungen detailliert auf und erlaubt mir damit ungefähr zu wissen, wie ich mich Bewege (Tag und Nacht) und wie sich diese Bewegungen zum Durchschnitt innerhalb meiner demografischen Daten verhält.</p>
<p>Auf die Frage, ob ich damit mein Bewegungsmuster verändert habe, kann ich noch keine Antwort geben. Bis jetzt hat es nicht dazu geführt, dass ich mir aktiv vorgenommen habe jeden Tag mindestens 10 Km zu laufen oder länger zu schlafen. Aber ich denke, es hat auf alle Fälle mein Bewusstsein in Bezug auf meine Bewegungen verändert und ich entscheide mich heute schneller für den laufenden, denn für den fahrenden Weg.</p>
<p>Aber ich trage den Fitbit auch primär aus Neugierde und nicht weil ich aktive etwas ändern wollte oder musste. Aber für den Einsatz im therapeutischen Bereich oder der Rehabilitation scheint mit Fitbit zur Bewusstseinsbildung einen wertvollen Beitrag leisten zu können.</p>
<p>Zusätzlich ist der Fitbit von allen bisherig getesteten Geräten das mit dem grössten Komfort. Sicher besteht immer ein wenig die Angst des Verlierens, aber die Einfachheit im Tragen und dem automatischen Datenübermitteln sobald man in der Nähe der Station vorbei geht (integriertes WiFi) ist ziemlich bestechend und der Fitbit muss ca. alle 5 Tagen mal für 2 Stunden an Netz zum Aufladen. That’s it.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2011/12/pocket.png.h9cafdc6d6bb2312c8c28fdf493aad1ec.pack_.png"><img class="alignleft size-thumbnail wp-image-586" title="fitbit_tragen" src="http://blog.emineo.ch/wp-content/uploads/2011/12/pocket.png.h9cafdc6d6bb2312c8c28fdf493aad1ec.pack_-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Somit ist der Fitbit extrem einfach in der Handhabung und benötigt kein technisches Know-how. Die Daten könnten einfach in eine Plattform (Beispiel: <a title="IBM Patient Empowerment-System" href="http://blog.emineo.ch/2011/07/ibm-patient-empowerment-system/" rel="bookmark">IBM Patient Empowerment-System</a>) eines Leistungserbringers integriert werden und damit könnte ein proaktives Monitoring erfolgen und der Patient kann gezielt unterstützt und gefördert werden. Nebst seinem erhöhten Bewusstsein aufgrund der verfügbaren Informationen.</p>
<p>Damit kann Fitbit aus unserer Sicht mit dem Einsatz von Fitbit einen echten Mehrwert generiert werden nebst dem spielerischen und informativen Element.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2011/12/1700000-schritte-oder-1561-km/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2011/12/1700000-schritte-oder-1561-km/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ein dreifaches Hoch auf „typenfreie“ Script-Sprachen</title>
		<link>http://blog.emineo.ch/2011/11/ein-dreifaches-hoch-auf-typenfreie-script-sprachen/</link>
		<comments>http://blog.emineo.ch/2011/11/ein-dreifaches-hoch-auf-typenfreie-script-sprachen/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 07:58:57 +0000</pubDate>
		<dc:creator>reber</dc:creator>
				<category><![CDATA[J2EE Open-Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software Qualität]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=573</guid>
		<description><![CDATA[Im allgemeinen Trend werden typsichere Sprachen und strenge Compiler als bemühend wahrgenommen]]></description>
			<content:encoded><![CDATA[<p>Der geneigte Leser mag es bereits erraten haben, es geht um JavaScript. Letzthin kam ich in den Genuss eine Software überarbeiten zu dürfen, an der ein JavaScript-Crack gearbeitet hat. Leider musste man feststellen, dass die Script-Engines in verschiedenen Browsern nicht so richtig Crack-Code ready sind.</p>
<p>Worum geht’s im Detail? Um die Verwendung nichtinitialisierten Daten, automatische Typenkonvertierung und Namen für Attribute.</p>
<p>Was sollte die ganze Sache machen? In einer Web-Site gab es einen Link, um Bilder die &#8220;hidden&#8221; sind, also nicht dargestellt werden obwohl sie bereits in den Browser geladen sind, zur Anzeige zu bringen. Drückt man diesen Link, soll ausser dem Sichtbarmachen des Bildes der Text &#8220;zum Anzeigen drücken&#8221; ersetzt werden mit &#8220;zum Verschwinden lassen drücken&#8221;.</p>
<p>Implementiert wird das Ganze so, dass der identische Link je nach Anwendung den ersten oder zweiten Text anzeigt. Anhand eines Attributs, das zum umschliessenden DIV-Element gehört wird geprüft welche Funktion auf den Link angewendet wird.</p>
<p>Und jetzt geht’s los: im Initialfall existiert dieses Attribut noch gar nicht wenn das Script beim Laden der Seite ein erstes Mal ausgeführt wird. Im Code wird erkannt dass das Attribut &#8220;undefined&#8221; ist (d.h. nicht existiert), dann wir ein Attribut mit dem Namen &#8220;hidden&#8221; erstellt und der Wert der zugewiesen wird sagt aus, dass das oben erwähnt DIV-Element nicht darzustellen sei. Dazu nimmt man den Wert 1 (vermutlich eine Zahl und kein String, aber dies sei dem Browser überlassen). Wird der Link geklickt wechselt der Wert auf 2 und die Darstellung ändert (Bild wird sichtbar, der Text auf dem Link ändert sich).</p>
<p>Soweit so gut, dass ist was der Internet Explorer macht. Andere Browser sagen sich &#8220;hey, es soll ein Attribut namens &#8220;hidden&#8221; gesetzt werden, vermutlich meinte der Entwickler aber dass das Element hidden sein soll. Also wird das DIV-Element hidden gesetzt, immer&#8230;</p>
<p>Ein erster Schritt zur Korrektur ist, dass der Name des Attributs ein bisschen optimiert wird, so heisst es neu &#8220;pictureHidden&#8221;.</p>
<p>Und wieder geht es im Internet Explorer. Andere Browser denken sich: die Prüfung im JavaScript auf für das Attribut &#8220;pictureHidden&#8221; auf den Wert &#8220;undefined&#8221; mach ich doch gar nicht, denn das Attribut gibt’s ja gar nicht. Von der hehren Absicht ein solches zu erzeugen wenn es dieses Element noch nicht gibt lassen sie sich wenige beeindrucken.</p>
<p>Ein zweiter Schritt zur Korrektur ist die Definition dieses Attributs &#8220;pictureHidden&#8221; im zugehörigen DIV-Element, weiter ersetzen wir die Zahlen durch die boolschen Werte &#8220;true&#8221; und &#8220;false&#8221; weil zwei definierte Zustände eigentlich eine schöne Sache sind.</p>
<p>Gesagt getan, die einen Browser sind begeistert vom neuen Script, schalten das Bild ein und aus, ganz nach Belieben des Benutzers. Nur &#8211; einige Browser schaffen es nur den Link verschwinden zu lassen, ohne dass das Bild erscheint. Dafür wird aber auch der Link nicht mehr angezeigt.</p>
<p>Was ist los? Ja jetzt sind wir bei der Typenkonvertierung. Im DIV-Element wird der Wert als String zugewiesen. Im Test wird auf eine boolesche Variable geprüft. Da denken sich die einen Browser ja der String &#8220;true&#8221; der sieht ja so ein bisschen wie das boolsche true aus, nehmen wir mal an es stimmt. Andere Browser denken sich &#8220;wenn der Programmieren einen boolschen Werte gemeint hätte, hätte er das Attribut sicher mit einem solchen abgefüllt (es sei verschwiegen, dass man für das Element den Werte gar nicht anders als in Form eines Strings zuweisen kann&#8230;) als mach ich mal gar nichts bis irgendwas.</p>
<p>Ein dritter Schritt zur Korrektur ist die Prüfung des Attributwerts gegen Stringliterale zu machen. Et voila, jetzt verstehen mich alle Browser.</p>
<p>Zusammenfassend sieht die Lösung also folgendermassen aus:</p>
<ul>
<li>deklariere die Variable</li>
<li>initialisiere die Variable</li>
<li>achte auf die Typisierung</li>
<li>greife erst auf die Variable zu wenn sie bereits existiert und initialisiert ist</li>
</ul>
<p>Im allgemeinen Trend sehe ich immer wieder das typsichere Sprachen und ein strenger Compiler als bemühend wahrgenommen werden. Als nicht JavaScrip-Crack hätte ich aber ein weniger dynamisches System vorgezogen und mir neben dem „mich ärgern“ auch zwei Stunden Arbeit erspart.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2011/11/ein-dreifaches-hoch-auf-typenfreie-script-sprachen/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2011/11/ein-dreifaches-hoch-auf-typenfreie-script-sprachen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steve Jobs &#8211; 5. Oktober 2011 &#8211;  Apple</title>
		<link>http://blog.emineo.ch/2011/10/steve-jobs-5-oktober-2011-apple/</link>
		<comments>http://blog.emineo.ch/2011/10/steve-jobs-5-oktober-2011-apple/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 12:17:23 +0000</pubDate>
		<dc:creator>zecchino</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[IPAD]]></category>

		<guid isPermaLink="false">http://blog.emineo.ch/?p=560</guid>
		<description><![CDATA[Das ist einer der grossen Einflüssen von Apple; weg von Technologie, hin zu Lösungen für Menschen.]]></description>
			<content:encoded><![CDATA[<p>In einem Jahr wird man das erste Resümee ziehen und Analysen machen, was sich verändert hat, welcher Verlust entstanden ist und wie Apple sich als Firma weiter entwickelt hat.</p>
<p>Es ist erstaunlich was ein einzelner Mensch bewirkt und auslöst. Der Tod von Steve Jobs bewegt, obwohl wir ihn ja gar nicht kennen. Das Synonym von Steve Jobs und Apple. Man könnte das Gefühl bekommen, dass Apple einen einzigen Mitarbeiter hat und dies obwohl es deren ca. 46&#8217;000 sind.</p>
<p>Traurig, dass Steve Jobs so früh sterben musste und seine Familie, Freunde und sein Leben nicht länger geniessen konnte.</p>
<p><strong>Und was wird aus Apple?</strong></p>
<p>Ich muss ja gestehen, dass ich ein später <strong>Bekehrter</strong> war. Ich bin Dipl. Informatiker, beschäftige mich seit mehr als 15 Jahre mit der Entwicklung und Einführung von Computer-Systemen. Ich hatte fast alle Generationen von Smartphones, gestartet mit Nokia und anschliessend mit Microsoft weiter gemacht. Macht ja Sinn wenn auf dem PC alles Microsoft ist, dies auch auf dem mobilen Gerät einzusetzen.  Und dann vor nicht langer Zeit, immer noch mit einem HTC, habe ich mir die Vorträge der Microsoft Konferenz in Barcelona angeschaut und bin anschliessend in den Apple Laden und habe mir das erste iPhone gekauft.</p>
<p>Heute interessiert mich nicht mehr die Technologie, sondern die Lösung welche von Menschen verwendet wird.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2011/10/iphone.png"><img class="size-medium wp-image-561 alignleft" style="border-style: initial; border-color: initial; border-width: 0px;" title="iphone" src="http://blog.emineo.ch/wp-content/uploads/2011/10/iphone-300x153.png" alt="" width="103" height="53" /></a></p>
<p>Zurück am Arbeitsplatz war das iPhone nach 30 Sekunden synchronisiert, up and running. Ok, ich konnte nicht so viel Einfluss auf das Ganze nehmen, ich habe die TCP/IP Einstellungen und sonst noch einiges Technisches gesucht. Nicht gefunden und na ja, habe ich das jemals gebraucht? Und ja, spätestens jetzt war ich ein Bekehrter.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2011/10/macbook_air_apple_2.jpg"><img class="size-medium wp-image-562 alignleft" style="border-style: initial; border-color: initial; border-width: 0px;" title="macbook_air" src="http://blog.emineo.ch/wp-content/uploads/2011/10/macbook_air_apple_2-300x225.jpg" alt="" width="103" /></a>Den privaten PC habe ich schon lange mit Mac ausgetauscht. Nicht nur weil sie besser in die Wohnung passen, sondern weil sie um einiges langlebiger sind. Ok, ich habe hierfür noch keine passende Erklärung. Aber Tatsache ist, das mein Mac-Air einfach läuft und läuft und läuft. Immer gleich stabil und gleich schnell. Und was ist mit meinem PC im Geschäft. Ich denke, der läuft jeden Abend langsamer als am Morgen. Ich kann wirklich zuschauen. Obwohl ich mit dem PC auch nicht mehr mache als mit meinem Mac. Ausser dass es gewisse Programme (Beispiel: MS Project) für den Mac nicht gibt und meine Dokumente bei Kunden identisch aussehen und funktionieren müssen.</p>
<p>Und da ist natürlich das iPad. Das Gerät (der Begleiter) das ich mit Abstand am Meisten verwende und das mich immer begleitet – ging das mal ohne? Ich hatte das Glück, eines der ersten iPad’s zu ergattern und ich habe das seinerzeit meiner Partnerin geschenkt. Sie hat sich natürlich höflich bedankt und ziemlich schnell gefragt, für was sie das denn brauchen würde. Ok, es ist hübsch, handlich – und für was zu gebrauchen? Heute ist es auch bei ihr das Gerät, das sie am meisten verwendet und ich werde bei jedem Generationswechsel das Neuste kaufen.</p>
<p><a href="http://blog.emineo.ch/wp-content/uploads/2011/10/ipad02.jpg"><img class="size-medium wp-image-563 alignleft" style="border-style: initial; border-color: initial; border-width: 0px;" title="ipad" src="http://blog.emineo.ch/wp-content/uploads/2011/10/ipad02-300x174.jpg" alt="" width="103" /></a></p>
<p>Mit einer eigenen Firma habe ich mir schon so manche Gedanken zu Apple gemacht. Wer wünscht sich das nicht, dass er Schlange vor seinem Geschäft hat, nur weil ein bisher schwarzes Produkt in weiss erhältlich ist. Das Käufer tagelang vor dem Geschäft campieren und dann noch monatelang warten.</p>
<p>Was für eine Symbiose von Einfachheit, Designe das der Mehrheit gefällt, Funktionalität, Nutzen, technischer Machbarkeit, technologischer Verfügbarkeit und einfach das richtige Momentum. Nicht nur einmal, sondern bereits ein paar Mal nacheinander.</p>
<p>Wie wird das weiter gehen? Ist das möglich ohne die charismatische Persönlichkeit von Steve Jobs? Kann ein einzelner Mensch einen solchen Einfluss haben? Irgendwie befürchte ich, dass man in ein paar Jahren den 5.10.2011 als den Wendpunkt definieren wird, an dem Apple langsam und schleichend an Bedeutung verloren hat. Ich hoffe und ich wünsche es mir, dass Apple weiterhin die Welt ein wenig verändert und uns weiterhin inspiriert und zum Staunen bringt. Zeigt was möglich ist.</p>
<div class='wpfblike' style='height: 40px;'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.emineo.ch/2011/10/steve-jobs-5-oktober-2011-apple/&amp;layout=default&amp;show_faces=false&amp;width=400&amp;action=like&amp;colorscheme=light&amp;send=false' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:400px;'></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://blog.emineo.ch/2011/10/steve-jobs-5-oktober-2011-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

