<?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>Schauderhaft &#187; quality</title>
	<atom:link href="http://blog.schauderhaft.de/tag/quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.schauderhaft.de</link>
	<description>Softwaredevelopment, Projectmanagement, Qualitymanagement and all things &#34;schauderhaft&#34;</description>
	<lastBuildDate>Sun, 25 Jul 2010 14:04:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Is ISO 9001 obsolete?</title>
		<link>http://blog.schauderhaft.de/2010/01/03/iso-9001-obsolete/</link>
		<comments>http://blog.schauderhaft.de/2010/01/03/iso-9001-obsolete/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 04:45:20 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Quality Management]]></category>
		<category><![CDATA[ISO9001]]></category>
		<category><![CDATA[quality]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=361</guid>
		<description><![CDATA[I just finished &#8216;Here Comes Everybody&#8217;, a must-read for anybody trying to understand what is going on with all this social media stuff. One point Clay Shirky makes, is that  the various web2.0 tools make failing cheap.
If in the 80s you had an idea for a group to form, you had a lot of things [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_368" class="wp-caption alignleft" style="width: 310px"><a href="http://www.sxc.hu/photo/1156438"><img class="size-medium wp-image-368" title="1156438_86834439" src="http://blog.schauderhaft.de/wp-content/uploads/2009/12/1156438_86834439-300x199.jpg" alt="A rusty car" width="300" height="199" /></a><p class="wp-caption-text">Rusty Car</p></div>
<p>I just finished <a href="http://www.amazon.com/Here-Comes-Everybody-Organizing-Organizations/dp/0143114948">&#8216;Here Comes Everybody&#8217;</a>, a must-read for anybody trying to understand what is going on with all this social media stuff. One point Clay Shirky makes, is that  the various web2.0 tools make failing cheap.</p>
<p>If in the 80s you had an idea for a group to form, you had a lot of things to do, many of which cost money: Finding a room to meet, printing fliers or ads to promote your idea and so on. If your idea failed, all that money was wasted.</p>
<p>Compare that to the situation today. Create a webpage, and promote it using facebook, twitter, xing or many of the other tools is free. All you have to invest is your own time. If it fails, nothing is lost. Actually something that fails today might get picked up tomorrow by somebody else and brought to success. Like a wikipedia article which is a stub at first, but then evolves in a well written article, through many mostly small changes an improvements. If one of the changes is bad, again the cost of this is minimal. Somebody will notice it and revert the change. Cost: a couple minutes of online time for bad article and 5 minutes work. Compare that to a typo in a printed encyclopedia. Fixing a typo would cost thousands of euros. So it won&#8217;t get fixed until the next revision which might take years to come.</p>
<p>So where is the relationship to the title of this post, namely the ISO 9001? One of the corner stones of modern quality management is to prevent errors to happen. This is a good thing under the assumption that fixing errors is way more expensive then preventing them. For building a car, this is probably still true: &#8220;Oh the brakes didn&#8217;t work? Probably because we installed any in the first place. Let me fix that right away. What do you mean, you don&#8217;t want them anymore? Oh you are dead &#8230; I see.&#8221; But for building software, for creating documentation for the software, for gathering requirements of the software, this assumption is wrong in many cases.</p>
<p>I am trying to write <a href="http://www.amazon.com/gp/product/0132350882?ie=UTF8&amp;tag=schauderhaft-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0132350882">clean code</a>, <a href="http://www.amazon.com/gp/product/1932394850?ie=UTF8&amp;tag=schauderhaft-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1932394850">tested code</a>, <a href="http://www.amazon.com/gp/product/020161622X?ie=UTF8&amp;tag=schauderhaft-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=020161622X">working code</a> all the time and I expect my coworkers to do the same. But that doesn&#8217;t prevent me from checking in less then perfect code into the version control system. Because as soon as it available for others to see and to use, they might find bugs, or even fix some. They might provide feed back for improvement or further development of the piece. I would not accept a rule that disallows less then perfect code (or documentation) to be seen by others.</p>
<p>So, is ISO 9001 obsolete? I&#8217;d say NO for the following reasons:</p>
<ul>
<li>While it is OK to have broken stuff around, it is not OK to leave it that way. An implementation of ISO 9001 may help with making this clear for everybody.</li>
<li>The agile / social media way of doing things does lead some people to the impression that it is OK to write crappy software. Although it is hard to understand how they come to that conclusion when reading the agile manifesto or any of the well known literature on agile software development, it still happens. Fixed rules inside a company of what must be done before releasing software or any development artifact to a customer.</li>
<li>While the ISO 9001 is build on the idea of preventing errors it actually isn&#8217;t hard coded in a form that requires anything like a Waterfall approach.</li>
<li>Even in a software developing company there are processes that need attention and that don&#8217;t need, and maybe shouldn&#8217;t be as flexible as a wiki page (consider the processes of paying the salaries with correct taxes and all)</li>
</ul>
<p>But there are a couple of things that pop up around ISO 9001: Lengthy specifications and lengthy review processes of that specification. Many companies like to create those, and many people seem to think they are a requirement of the ISO 9001. This is not true. The norm requires that you know what you need, before you build it. A specification of the complete system certainly fits that requirement. But since you don&#8217;t create a complete new CRM in an afternoon, you don&#8217;t need the complete specification.</p>
<p>If you agree with a customer on a couple of user stories to be implemented in the next two weeks, and write those down on a whiteboard or in a webbased application or on some sheets of paper, any auditor of ISO 9001 conformance will have a problem criticizing that. If you use a whiteboard, you might want to make a photo of that. And if you write it down as a Fitnesse test, the auditor will probably be impressed.</p>
<p>So no, ISO 9001 is not obsolete. What is obsolete are ways of implementing the ISO 9001 that are damaging the reputation of that norm.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2010/01/03/iso-9001-obsolete/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Are You a Software Developer or a Dabbler</title>
		<link>http://blog.schauderhaft.de/2009/11/01/are-you-a-software-developer-or-a-dabbler/</link>
		<comments>http://blog.schauderhaft.de/2009/11/01/are-you-a-software-developer-or-a-dabbler/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 08:38:23 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[dabbler]]></category>
		<category><![CDATA[good practice]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[solid software]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[version control system]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=307</guid>
		<description><![CDATA[When reading blogs you get the impression, that everybody works in high end environments, using the latest greatest distributed version control system. Writing tons of tests, before they even dream about writing actual code and of course the tests a executed by the continuous integration system after every commit, which happens about 30 times per [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_308" class="wp-caption alignleft" style="width: 310px"><a href="http://www.sxc.hu/photo/289526"><img class="size-medium wp-image-308" title="289526_6178" src="http://blog.schauderhaft.de/wp-content/uploads/2009/10/289526_6178-300x225.jpg" alt="Tools" width="300" height="225" /></a><p class="wp-caption-text">Tools</p></div>
<p>When reading blogs you get the impression, that everybody works in high end environments, using the latest greatest distributed version control system. Writing tons of tests, before they even dream about writing actual code and of course the tests a executed by the continuous integration system after every commit, which happens about 30 times per day and developer. But when I look around in the real world, this is not <a href="/2009/09/20/your-perspective-is-biased/">what I see</a>. Instead the way people work on their code like ancient &#8216;doctors&#8217;. Drilling holes in heads in the hope it will reduce the headache of the patient. It probably did. In many cases in a very final way. I urge you: Don&#8217;t let that happen to your code (or your career). Practice solid software development. And in order to help you with that I compiled a simple list of things you really really should do. Those are basic practices. If you don&#8217;t even adhere to those then I have only two possible explanations: You are not involved in software development at all. Go away, this blog isn&#8217;t for you. Or &#8230; you are a dabbler.</p>
<ul>
<li>Use a Version Control System (VCS). I am not even going to comment on this one.</li>
<li>Commit your changes at least once a day. This does not mean you should commit what ever is on your filesystem at 5pm, but you should break your tasks in so small pieces, that you finish one or two of them on a normal day.</li>
<li>Tag or label everything in the VCS you hand out to somebody outside your team (testers, salespersons and of course customers)</li>
<li>Have a complete and working build script. This means you can build everything you hand of to the customer by getting the source code out of the VCS and start the script. Necessary adjustments are made in a tiny file which contains settings for the local machine. A well commented template for such a file is in the VCS. And NO, hitting the compile button in your IDE is not the same as a build script.</li>
<li>You must have the complete environment necessary to run your application under your control. That means if your application needs a database, you have a database available. One per developer that is, or at least one schema per developer. If you need a queue or ten queues, you have those, again once for every developer. If you have systems that you interface to, that can&#8217;t be installed once per developer, you have mocks, stubs or similar available. In the year 2009 a single developer database for 5 developers is no longer acceptable.</li>
<li>You have an extensive set of automatic Unit tests. These test should cover at the minimum the main execution paths.</li>
<li>Let a Continuous Integration system execute your build script, i.e it compiles your code, executes the automatic tests and builds a setup or jar, or what ever you are deploying.</li>
<li>Have a specification of what a piece of software is supposed to do, before you try to write the software. You don&#8217;t need a full specification of the complete application upfront. Maybe you have just the first user story for the first feature, or only a test. But you must have something that tells you where to go. And where not to go. Flying blindfolded is not the same as being agile.</li>
<li>Adhere to a style guide that describes your naming conventions, indenting and so on. Ideally this gets enforced by the IDE and automatic tests. Fighting about the content of such code conventions is useless. Not having one is dumb. Remember that your tests are code too, so the conventions apply to tests as well.</li>
<li>Document how your code is structured. It should at least describe the different layers, and the way two layers may depend on each other, and it should not allow for circular dependencies. These rules as well should be enforced by automatic tests. Even if the language you use doesn&#8217;t support packages you should use a similar concept, possibly through naming conventions.</li>
</ul>
<p>These are my points. What did I miss?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2009/11/01/are-you-a-software-developer-or-a-dabbler/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Do we need an Agile Maturity Model?</title>
		<link>http://blog.schauderhaft.de/2009/09/06/do-we-need-an-agile-maturity-model/</link>
		<comments>http://blog.schauderhaft.de/2009/09/06/do-we-need-an-agile-maturity-model/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 09:20:53 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Quality Management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[APMM]]></category>
		<category><![CDATA[cmmi]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[Maturity]]></category>
		<category><![CDATA[measurement]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[Scott Ambler]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[SPICE]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=167</guid>
		<description><![CDATA[In a post on developer works Scott Ambler proposes a &#8220;Agile Process Maturity Model&#8221; (APMM), if you are asking &#8220;WTF is that supposed to be?&#8221; Scott tries to answer that in his first sentence:
The goal of the Agile Process Maturity Model (APMM) is to provide a framework which provides context for the plethora of agile [...]]]></description>
			<content:encoded><![CDATA[<p>In a post on developer works Scott Ambler proposes a <a href="http://www.ibm.com/developerworks/blogs/page/ambler?entry=apmm_overview">&#8220;Agile Process Maturity Model&#8221; (APMM)</a>, if you are asking &#8220;WTF is that supposed to be?&#8221; Scott tries to answer that in his first sentence:</p>
<blockquote><p>The goal of the Agile Process Maturity Model (APMM) is to provide a framework which provides context for the plethora of agile methodologies and practices out there today.</p></blockquote>
<p>First I was quite impressed by the BWPS ratio (Buzz Word Per Sentence). I count 6 (counting &#8220;Agile Process Maturity Model (APMM)&#8221; as one). But then I realized that this is what I would highly welcome: Context for Agile Methods. If this means we get an overview of all the process that you need if you do software development and then markers in this process landscape to indicate various Agile Methods to help with this process, that for sure would be helpful. But how would this be a &#8216;Maturity Model&#8217;?</p>
<p>So once again I had no choice but to read the complete article, including the comments. I must say, I was disappointed. What follows is basically a ranking of agile process, methodologies or what ever you want to call these. Such a ranking explains the &#8216;Maturity Model&#8217; part, but it completely voids the agile part. What value can a ranking of processes have in a context where the common understanding is that processes aren&#8217;t that important anyway?</p>
<p>So my clear opinion is: No thanks we don&#8217;t need another maturity model, the existing once are causing enough problems. I know some of my coworkers are reading this blog and are by now probably thinking: &#8220;Interesting opinion for the quality manager of our company&#8221;. So let me explain why I think ISO 9001, SPICE, CMMI &amp; Co are often doing more harm then good.</p>
<p>The problem is the same as with <a href="/2009/02/06/how-to-use-key-figures-and-how-not-to-use-key-figures/">any kind of measurement</a>: If you measure people or they work, they start to optimize for the measurement. For example if you start to measure code coverage and declare high coverage to be good, people will create automated tests for code that gets created automatically, although in most cases these kind of tests are of very limited use. With all the quality norms the auditors look for proofs that a certain aspect of a process gets executed as intended. This is really difficult to do, expect for the cases where documentation is created. But documentation created only for some audit is actually the exact kind of thing you don&#8217;t want to have. It costs money, gets outdated fast after the audit and has no benefit for your project, your company or the customer.</p>
<p>How to avoid this pitfall is a topic for a different post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2009/09/06/do-we-need-an-agile-maturity-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 08: Sprachen,  Concurrency, Security, Architektur</title>
		<link>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/</link>
		<comments>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/#comments</comments>
		<pubDate>Mon, 19 May 2008 18:40:08 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[aop]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[jax08]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/</guid>
		<description><![CDATA[Wie schon erwähnt war ich vor ein paar Wochen auf der JAX 08, und ich bin immer noch mit den Nachwirkungen beschäftigt. Hier meine persönliche Zusammenfassung der wesentlichen Erkenntnisse.
Sprachen
Das aktuelle Thema überhaupt ist sicherlich Sprachen. Durch die Allgegenwart von zwei wesentlichen Laufzeitumgebungen (JVM von Java/Sun und der CLR von .NET/Microsoft) ist es extrem einfach neue [...]]]></description>
			<content:encoded><![CDATA[<p>Wie schon <a href="/2008/04/24/komplexitat-und-die-neuen-sprachen/">erwähnt</a> war ich vor ein paar Wochen auf der <a href="http://it-republik.de/jaxenter/blog/2008/02/12/dynamische-sprachen-ruby-jruby-groovy-co/">JAX 08</a>, und ich bin immer noch mit den Nachwirkungen beschäftigt. Hier meine persönliche Zusammenfassung der wesentlichen Erkenntnisse.</p>
<p><strong>Sprachen</strong></p>
<p>Das aktuelle Thema überhaupt ist sicherlich Sprachen. Durch die Allgegenwart von zwei wesentlichen Laufzeitumgebungen (JVM von Java/Sun und der CLR von .NET/Microsoft) ist es extrem einfach neue Sprachen mal auszuprobieren. Zu dem Thema empfehle ich den <a href="http://www.voelter.de/data/articles/trends2007.pdf">Artikel von Markus Völter</a>.</p>
<p>Meine persönlichen Erkenntnisse dazu:</p>
<ul>
<li>Fast(?) nichts von den Konzepten ist neu. Die Basis für funktionale Sprache z.B. ist das Lambda Kalkül von 1930. Insbesondere das Polyglotte Programmieren ist doch längst Standard. Ich z.B. zähle in den meisten Projekten mindestens Java, SQL, PL/SQL, HTML und CSS zu meinem Handwerkszeug. Was sich ändern könnte, ist warum wir zwei oder mehr Sprachen einsetzen: Weil bestimmte Aspekte in der einen, andere in der zweiten Sprache besser darstellbar sind. Während bisher der Grund der Mangel an Alternativen ist. (Ja ich weiß, man kann auch in Oracle mit Java arbeiten. Aber wer das einwirft hat es noch nicht ernsthaft ausprobiert).</li>
<li>Wir werden uns damit beschäftigen müssen. Heiße Kandidaten für die praktische Anwendung sind für mich: Groovy und Scala.<br />
Auch spannend finde ich Haskell. Ich habe vor vielen Jahren an der Uni <a href="http://de.wikipedia.org/wiki/Miranda_%28Programmiersprache%29">Miranda </a>gelernt und hätte nie gedacht, dass dies mal im Berufsleben relevant werden könnte.<br />
Als Physiker, der einmal intensiv mit Fortran gearbeitet hat finde ich auch <a href="http://en.wikipedia.org/wiki/Fortress_%28programming_language%29">Fortress </a>sehr beeindruckend. Dies Sprache kann zumindest für Mathematiker und ähnliche <a href="http://research.sun.com/projects/plrg/faq/NAS-CG.pdf">sehr leserlich gerendert</a> werden und ist speziell auf (massiv)parallele Ausführung ausgerichtet.</li>
</ul>
<p>Womit wir bei einem weiteren Thema sind:</p>
<p><strong>Concurrency</strong></p>
<p>Das Moore&#8217;sche Gesetz als Basis des Quaketunings (18 Monate Quake spielen, schon ist die Anwendung doppelt so schnell) ist am Ende. Als &#8216;horizontale Ausweichbewegung&#8217; werden uns von AMD und Intel Mehrkern CPUs auf den Schreibtisch gestellt. Dadurch geraten überall Leute in Panik, existierende Anwendungen würden nun wie die Fliegen von den Wänden fallen, da Threadingprobleme sich nun manifestieren.</p>
<p>Nun ja, ich weiß nicht was für Anwendungen ihr schreibt, aber ich schreibe beruflich entweder Swing oder Webanwendungen, die auf Datenbanken gehen. Nur ein sehr kleiner Teil der Arbeit steckt in komplexen Algorithmen, und ich habe noch nie etwas davon parallelisiert. Datenbanken und Webserver laufen &#8217;schon immer&#8217; auf Mehrprozessormaschinen. Es sind heute halt 512 statt 16. Die Art und Weise wie dort Parallelverarbeitung eingesetzt wird, ist extrem einfach und daher handhabbar: Jede Anfrage bekommt einen Thread, und darf ihn für sich alleine verwenden, bis die Anfrage abgearbeitet ist. Zumindest sieht es aus der Sicht des Entwicklers so aus.</p>
<p>Nur in Swing muss man typischer Weise mit mehreren Threads arbeiten, da lang laufende Aktionen sonst die Darstellung der Anwendung blockieren. Dies wird man aber wenn irgend möglich minimieren,  da jeder der <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.de%2FConcurrent-Programming-Java-Principles-Addison-Wesley%2Fdp%2F0321256174%3Fie%3DUTF8%26s%3Dbooks-intl-de%26qid%3D1211220705%26sr%3D1-5&amp;site-redirect=de&amp;tag=schauderhafte-21&amp;linkCode=ur2&amp;camp=1638&amp;creative=6742">Doug Leas Buch</a><img src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=ur2&amp;o=3" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /> gelesen hat, weiß wie schwierig Concurrency ist.</p>
<p>Viele der neuen Sprachen haben aber Konstrukte, die die Verteilte Ausführung unterstützen und es ist ja nicht so, dass wir die nicht zu nutzen wüssten. Unabhängig von der Anzahl der Prozessoren gibt es nämlich einen Bereich, in dem Concurrency eine Rolle spielen sollte: bei dem Zugriff auf verteilte Ressourcen. Egal ob es die Datenbank oder der entfernte Web Service ist, wenn wir eine Anfrage abschicken und warten, bis die Antwort kommt, bevor wir die nächste Anfrage lostreten verschwenden wir mindestens Zeit, und meist auch wertvolle Ressourcen (mindestens den wartenden Thread). Je nachdem wie knapp die Ressourcen sind, wird man früher oder später genötigt sein, die Anfragen parallel anzustoßen und anschließend die Ergebnisse zusammenzuführen. Schön wenn die Sprache mit der man dies tut, ein solches Vorgehen angemessen unterstützt.</p>
<p><strong>Security</strong></p>
<p>Es gibt immer wieder Stimmen, die meinen, Security würde jetzt DAS große Thema. Vertraut mir, wird es nicht. Genauso wenig wie Gasmasken oder Panzertüren DAS große Thema werden. Aber Security ist ein Dauerbrenner, den niemand ignorieren sollte. Oder schließt ihr euer Auto und eure Wohnung nicht ab?  Daher gab es auch auf der JAX Vorträge zu diesem Thema.</p>
<p>Für mich die wichtigsten Punkt waren dabei:</p>
<ul>
<li> * Der <a href="http://de.wikipedia.org/wiki/Demingkreis">Deming Zyklus</a> gilt auch hier. D.h.
<ul>
<li> Plant was eure Sicherheitsziele sind und was ihr dafür tun müsst. Wollt ihr euch gegen Skriptkiddies schützen? Oder haltet ihr die NSA für euren Feind? In letzterem Fall könnte aber auch ein Psychater helfen <img src='http://blog.schauderhaft.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li> Führt die Maßnahmen durch.</li>
<li> Prüft, ob die Maßnahmen wirksam sind.</li>
<li> Wenn die Prüfung negativ ausfällt, reagiert darauf.</li>
</ul>
</li>
<li> Schwierig an dem Security Thema ist, dass selbst gigantische Sicherheitsprobleme nicht von allen erkannt werden. Wenn ich in mein Haus eine Tür aus Pappe einbaue, brauche ich keinen Experten um zu erkennen, dass das eine schlechte Idee ist. Bei Software ist das ganze deutlich weniger offensichtlich. Ich habe die privaten Schlüssel für Zertifikate schon gemailt bekommen. Daher gibt es eine ganz wichtige Aufgabe, wenn eine Anwendung &#8217;sicher&#8217; werden muss: Awareness schaffen. Alle Beteiligten (Entwickler, Designer, Tester, Administratoren, Anwender, &#8230;) müssen in Sachen Security geschult werden. Denn was nützt die schöne Sicherheitsarchitektur, wenn der Benutzer seines Sohnes Namen als Passwort verwendet und das auch noch per E-Mail verschickt und auf den Monitorrahmen schreibt?</li>
<li> Security heißt nicht einfach Benutzer Authentifizierung und Authorisierung sondern durchdringt den gesamten Entwicklungsprozess.
<ul>
<li> Bei der Analyse müssen die Anforderungen aufgenommen werden.</li>
<li> Diese müssen bei der Architektur und dem Design berücksichtigt werden.</li>
<li> Es muss natürlich implementiert werden,</li>
<li> aber auch getestet,</li>
<li> deployed</li>
<li> und genutzt</li>
</ul>
<p>Und wie ich oben skizziert habe, gibt es auch in den Bereichen Herausforderungen, wo man sie normalerweise vielleicht nicht erwartet.</li>
</ul>
<p><strong>Architektur</strong></p>
<p>Ist ein weiterer Dauerbrenner, und ähnlich wie bei Security lautet hier mein Hinweis <a href="http://de.wikipedia.org/wiki/Demingkreis">Deming Circle</a>! Eine Architektur hat eine Aufgabe zu erfüllen. Die Aufgabe sollte vorher klar sein und nachher muss geprüft werden, dass die Aufgabe gelöst wurde. Ansonsten ist Architektur ein Unfall oder Selbstbefriedigung des Architekten.</p>
<p>Durch das Thema Nr.1 &#8216;Sprachen&#8217; gewinnen wir gerade im Bereich Architektur gerade gewaltig an Möglichkeiten:</p>
<ul>
<li>Unterschiedliche Sprachen für unterschiedliche Bereiche.</li>
<li>DSLs für Spezialfälle</li>
<li>AOP oder spezielle Sprachstrukturen für die Umsetzung von Architekturentscheidungen</li>
</ul>
<p><strong>SOA und BPM</strong></p>
<p><a href="/2008/04/23/konferenzen-und-big-player-sessions/">Viel Hype und (fast) nichts dahinter</a>.</p>
<p><strong>Das 5. Element (Quintessenz)</strong></p>
<p>Die Probleme bleiben die alten. Die Lösungen sind auch nicht neu. Die Zeiten bleiben interessant.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
