<?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>Software Engineering Blog &#187; Zeit</title>
	<atom:link href="http://www.swe-blog.net/blog/archives/tag/zeit/feed" rel="self" type="application/rss+xml" />
	<link>http://www.swe-blog.net/blog</link>
	<description>Menschen. Prozesse. Technik.</description>
	<lastBuildDate>Fri, 28 Jan 2011 17:40:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ach Leute, die Zeit</title>
		<link>http://www.swe-blog.net/blog/archives/69</link>
		<comments>http://www.swe-blog.net/blog/archives/69#comments</comments>
		<pubDate>Fri, 20 Feb 2009 21:46:00 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Java & Co]]></category>
		<category><![CDATA[javax.time]]></category>
		<category><![CDATA[JSR]]></category>
		<category><![CDATA[JSR 310]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.swe-blog.net/blog/?p=69</guid>
		<description><![CDATA[Liebe ich Java? Ja, das tue ich. Sicher, Java muß aufpassen nicht den Anschluß an die Entwicklung "moderner" Sprachkonzepte zu verpassen, aber etwas moderater Konservatismus kann nicht schaden. An vorderster Front zu stehen kann auch gefährlich sein und tödlich. Außerdem geziemt es sich nicht für eine "Business-Language" sich in jedes Getümmel zu stürzen.
Es gibt aber [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.swe-blog.net/blog/wp-content/uploads/2009/02/clock.png'><img src="http://www.swe-blog.net/blog/wp-content/uploads/2009/02/clock.png" alt="" title="Die Zeit läuft" width="250" height="216" class="alignleft size-full wp-image-73" /></a>Liebe ich Java? Ja, das tue ich. Sicher, Java muß aufpassen nicht den Anschluß an die Entwicklung "moderner" Sprachkonzepte zu verpassen, aber etwas moderater Konservatismus kann nicht schaden. An vorderster Front zu stehen kann auch gefährlich sein und tödlich. Außerdem geziemt es sich nicht für eine "Business-Language" sich in jedes Getümmel zu stürzen.</p>
<p>Es gibt aber auch Dinge in Java oder der API, die haben mich in den letzten acht Jahren immer wieder wahnsinnig werden lassen. Beispielsweise der Umgang mit Zeitangaben. Allein, daß sich <code>Calendar</code> im Package <code>java.util</code> befindet, drückt doch schon eine gewisse Geringschätzung aus...</p>
<p>Wer Businessanwendungen schreibt hat es täglich mit Zeitangaben in seinen Anwendungen zu tun wie: jeden Tag um acht Uhr, sieben Stunden lang oder vom ersten bis zum zehnten jeden Monats. Für all das bietet das JDK nur <code>Date</code> und <code>Calendar</code> als Ausdrucksmittel. Beide Klassen beziehen sich vereinfacht gesagt immer auf einen konkreten Zeitpunkt unter Angabe von Tag und Uhrzeit. Beides stellt also einen festen Punkt auf einer Zeitachse dar. </p>
<p>Damit lassen sich aber die oben genannten Beispiele nicht ausdrücken. "Vom ersten bis zum zehnten" bezieht sich auf zwei Punkte auf der Zeitachse. Sollen Fragen wie "Liegt folgendes Datum im Zeitraum oder davor oder sogar danach?" zwingt uns die API immer mit zwei Datumsangaben zu hantieren. Sollen zwei Datumsangaben mit <code>Calendar</code> noch schnell mit Tages oder Monatsgenauigkeit überprüft werden, läßt sich das auch nicht in einer Zeile bewerkstelligen, da <code>Calendar</code>-Instanzen immer auch Zeitangaben enthalten. </p>
<p>Eine neue API für den Umgang mit Zeit ist also mehr als überfällig und Rettung naht auch schon in Form des <a target="_blank" href="https://jsr-310.dev.java.net/">JSR 310 Date and Time API</a> der unter der Leitung von Stephen Colebourne und Michael Santos entwickelt wird.</p>
<p>Colebourne ist übrigens auch verantwortlich für das <a target="_blank" href="http://joda-time.sourceforge.net/">JodaTima</a>-Projekt, welches heute schon eine alternative API für Zeitberechungen bereitstellt und von <a target="_blank" href="http://joda-time.sourceforge.net/">http://joda-time.sourceforge.net/</a> heruntergeladen werden kann.</p>
<p>Die Grundkonzepte von JodeTime sind die folgenden Datentypen:</p>
<ul>
<li><strong>Instant</strong> für einen Punkt auf der Zeitachse mit Nanosekundenauflösung</li>
<li><strong>Interval</strong> für einen Zeitraum zwischen zwei Punkten auf der Zeitachse</li>
<li><strong>Duration</strong> für eine Zeitdauer in Milisekunden wie zum Beispiel 3 Tage</li>
<li><strong>Period</strong> für Zeitdauerangaben unter der Verwendung von Jahren, Monaten etc. vergleichbar mit <code>xs:duration</code></li>
</ul>
<p>Um diese Datentypen bauen Colebourne und Santos nun auch die API für den JSR 310 auf die eventuell schon in der 7er Version von Java unter <code>javax.time</code> enthalten sein wird. Dazu kommen die notwendigen Klassen zur Verarbeitung von Datumsangaben. Insgesamt hinterläßt die API einen sehr mächtigen Eindruck. Zur Zeit ist sie leider noch sehr instabil, wer aber die <a target="_blank" href="https://jsr-310.dev.java.net/servlets/ProjectMailingListLis">Mailingliste zum JSR 310</a> verfolgt, merkt das aktiv an der Spezifikation und Implementierung gearbeitet wird. Einen guten Überblick über die verfolgten Ziele liefert auch die <a target="_blank" href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6578&yr=2008&track=javase">Präsentation von Colebourne</a> auf der 2008er JavaOne.</p>
<p>Wer bis zu Version 7 nicht warten will, kann jetzt schon bei JodaTime Hilfe finden.</p>
<div class="ressource"><strong>Quellen und Verweise</strong>
<ul>
<li><a target="_blank" href="https://jsr-310.dev.java.net/">Homepage des JSR 310</a></li>
<li><a target="_blank" href="http://joda-time.sourceforge.net/">Das Joda-Time-Projekt</a></li>
<li><a target="_blank" href="http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6578&yr=2008&track=javase">Präsentation zum JSR 310 auf der JavaOne 2008</a></li>
<li><a target="_blank" href="https://jsr-310.dev.java.net/nonav/doc-2009-01-29/index.html">Snapshot der API per 29. Januar 2009</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/69/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sisyphos wäre heute Software-Entwickler</title>
		<link>http://www.swe-blog.net/blog/archives/20</link>
		<comments>http://www.swe-blog.net/blog/archives/20#comments</comments>
		<pubDate>Fri, 31 Oct 2008 23:41:05 +0000</pubDate>
		<dc:creator>Oliver Fischer</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Josuttis]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Schlechter Code]]></category>
		<category><![CDATA[Zeit]]></category>

		<guid isPermaLink="false">http://www.sw-blog.net/blog/?p=20</guid>
		<description><![CDATA[Regelmäßig lese ich „The World of IT“ und „Bernds Management Blog“ auf den Seiten der iX, die von OOSE-Chef Bernd Österreich, Jutta Eckstein und Nicolai Josuttis geschrieben werden. Mit durchschnittlich einer Veröffentlichung pro Monat  ist es auch ein leichtes jede Veröffentlichung zu lesen. Falls Sie auch diese Blogs lesen: Ist Ihnen schon einmal aufgefallen, [...]]]></description>
			<content:encoded><![CDATA[<p>Regelmäßig lese ich „The World of IT“ und „Bernds Management Blog“ auf den Seiten der iX, die von OOSE-Chef Bernd Österreich, Jutta Eckstein und Nicolai Josuttis geschrieben werden. Mit durchschnittlich einer Veröffentlichung pro Monat  ist es auch ein leichtes jede Veröffentlichung zu lesen. Falls Sie auch diese Blogs lesen: Ist Ihnen schon einmal aufgefallen, daß jeder der genannten eine für eine bestimmte Grundhaltung steht? An welche ich dabei denke will ich heute für mich behalten, besonders da ich mich mit dem letzten Beitrag von Nicolai Josuttis auseinander setzen möchte.<br />
<span id="more-20"></span><br />
„Software-Putzmänner und die nächste IT-Revolution“ stand da eines Abends im September in meinem RSS-Reader und ich habe interessiert die verlinkte Seite aufgerufen. Der Text hat mich so beschäftigt, daß auch ihn auch jetzt noch kommentieren möchte.</p>
<p>Josuttis schreibt darin über einem Vortrag auf der Agile 2008 zum Thema Software-Qualität, der von Robert C. Martin gehalten wurde. Martin stellt fest, daß wir in der Software-Branche zu viel Mist produzieren. Vorallen tun wir das, weil einfach zu wenig Zeit dafür zur Verfügung steht um sauber zu arbeiten zwischen all den Budgetplänen, Tagessätzen und Releaseterminen. Insofern ist das Sujet bekannt und die meisten von uns können das wohl aus der einen oder anderen Erfahrung bestätigen. </p>
<p>Das eigentlich interessante ist, daß Josuttis das wohl aus eigener Erfahrung kennt und auch darlegt, wie er versucht diesem Problem beizukommen und damit glatt die nächste Revolution in der IT-Welt vorhersagt. </p>
<p>Josuttis versucht dem Problem beizukommen, in dem die Entwicklung von Fachlichkeiten vom „Sauermachen“ trennt. Es gibt also zwei Gruppen. Die einen schreiben fleißig Code und die anderen bringen ihn in Ordnung. Schlechter Code ist demnach in Ordnung, da er später glattgezogen wird. An die großen Hypes Agilität und SOA anknüpfend entwickelt er diesen Gedanken weiter und stellt die Frage, warum wir nicht endlich schlechten Code akzeptieren, schließlich haben wir mit der Agilität sich wandelnde Anforderungen akzeptiert und sogar kultiviert und SOA das gleich mit heterogenen Systemen getan. Schlußendlich sollten wir aufhören, schlechten Code zu bekämpfen, sondern sinnvoll damit umgehen.<br />
So sehr er mit vielem auch Recht hat, umso mehr irrt er hier doch und kommt zu einem falschen Schluß. <strong>Schlechter Code ist zu bekämpfen.</strong></p>
<p>Eine allgemein gültige Definition von gutem Code gibt es nicht. Daher für aber viele von Qualität. Mir gefällt am besten die DIN-Definition, wonach Qualität „die Beschaffenheit einer Einheit bezüglich ihrer Eignung, festgelegte und abgeleitete Erfordernisse (Qualitätsanforderungen) zu erfüllen“ ist. Zugegebener Maßen klingt das etwas sperrig und erschließt sich nicht direkt, denn was sind „abgeleitete  Erfordernisse“. Qualität hat viele Ausprägungen, wie da wären:</p>
<ul>
<li>Funktionalität</li>
<li>Zweckdienlichkeit</li>
<li>Sicher</li>
<li>Robustheit</li>
<li>Benutzbarkeit</li>
<li>Zuverlässigkeit</li>
<li>Änderbarkeit</li>
<li>Portierbarkeit</li>
<li>Prüfbarkeit</li>
<li>Geschwindigkeit</li>
</ul>
<p>Jeder wird zugeben, daß eine Software, die nicht die geforderten Funktionen bringt aus Kundensicht nichts wert ist. Insofern ist Funktionalität ein hinreichendes Qualitätsmerkmal, aber allein nicht ausreichend.  Je länger eine Software lebt, umso wichtiger werden auch Merkmale wie Wartbarkeit und Änderbarkeit und können zum Schluß mehr über den Erfolg Ihrer Software entscheiden als die eigentliche Funktionalität. </p>
<p>Natürlich muß man am Code verzweifeln, wenn man die perfekte Architektur und eine konsistente Einhalt von Codierrichtlinien erwartet und hofft, daß alle Entwickler den gleichen Stil pflegen und sich mit der gleichen Hingabe ihrer Aufgabe widmen. Die Welt ist nicht perfekt und wir sind es nicht, warum sollte es unsere Software sein? Perfekte Software ist schlichtweg unmöglich. Sie ist unmöglich, weil sich die Welt rund um die Software ständig ändert. So ändern sich die Anforderungen, im Idealfall werden sie konkreter und damit für alle besser. Wir wissen besser, was unser Kunde will und der Kunde erhält eher das, was er braucht. So ändern sich die Tools mit denen wir arbeiten. Werden sie besser, so verbessert sich unser Stil Software zu entwickeln - oder wirft uns um Jahre zurück.  So ändern auch wir uns. Mit jedem Projekt wächst unser Wissen und Können, auch wenn wir uns ehrlicher Weise auch bei ählichen Fehlern immer wieder selber stellen.  Das war wir gestern geschrieben haben, ist uns Wissen, Können und Vermögen von gestern und das kann das Beste gewesen sein, was wir zu diesem Zeitpunkt leisten konnten.<br />
Allerdings ist das alles <strong>kein Grund schlechte Software zu akzeptieren</strong>. Oder möchten Sie schlechte Software benutzen. Jeder von uns erwartet, daß der Geldautomat zu jeder Tageszeit funktioniert und nicht irgendwie, sondern richtig. Und freut sich,  wenn das zu übernehmende Projekt gut geführt und die Sofware sauber implementiert ist.</p>
<p>Vielmehr sollten wir uns umso mehr bemühen gute Software mit perfekten Code zu entwicklen. Wie schon weiter oben geschrieben ist das Ziel nicht erreichbar, doch wenn wir es uns als Ziel setzen werden die Ergebnisse weit besser sein, als wenn wir uns von vornherein nur mit Mittelmäßigkeit begnügen. Denn sobald wir dies verinnerlicht haben, <strong>werden wir uns mit noch weniger zufrieden geben</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.swe-blog.net/blog/archives/20/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

