<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Guggat emol Blog &#187; wie schrumpft man das System Gesund?</title>
	<atom:link href="http://www.baldenhofer.eu/blog/tag/newssystem/feed" rel="self" type="application/rss+xml" />
	<link>http://www.baldenhofer.eu/blog</link>
	<description>Roland bloggt über IT, Programmieren und Linux</description>
	<lastBuildDate>Tue, 25 Oct 2011 22:53:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>wie schrumpft man das System Gesund?</title>
		<link>http://www.baldenhofer.eu/blog/guggat_emol/wie-schrumpft-man-das-system-gesund</link>
		<comments>http://www.baldenhofer.eu/blog/guggat_emol/wie-schrumpft-man-das-system-gesund#comments</comments>
		<pubDate>Mon, 06 Jul 2009 09:04:45 +0000</pubDate>
		<dc:creator>Jozo</dc:creator>
				<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[kategorien]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1437</guid>
		<description><![CDATA[Das ist also die Tabelle in der die Anwendungsfälle mit den Fragestellungen aufgeführt sind. Mir ist dabei aufgefallen, dass durch jeden Anwendungsfall logischerweise Kosten bzw. Zeitaufwendungen entstehen. Ziel wäre gewesen einen Anwendungsfall zu streichen, und dabei die minimalen Anforderungen trotzdem zu erfüllen. Was sind die minimalen Anforderungen? Aus dem vorhergehenden Artikel von Roland sind die [...]]]></description>
			<content:encoded><![CDATA[<p>Das ist also die Tabelle in der die Anwendungsfälle mit den Fragestellungen aufgeführt sind. Mir ist dabei aufgefallen, dass durch jeden Anwendungsfall logischerweise Kosten bzw. Zeitaufwendungen entstehen.</p>
<p>Ziel wäre gewesen einen Anwendungsfall zu streichen, und dabei die minimalen Anforderungen trotzdem zu erfüllen.</p>
<h3>Was sind die minimalen Anforderungen?</h3>
<p><a href="http://www.baldenhofer.eu/blog/it/newssystem-gesundschrumpfen">Aus dem vorhergehenden Artikel von Roland</a> sind die Anforderungen wie folg definiert:</p>
<ul>
<li>Eine Userverwaltung</li>
<li>Eine Kategorieverwaltung (Hier kann man Abstriche machen. Man könnte viele kleine Newssysteme für die jeweilige Kategorie installieren. Dann kann man durch Konfiguration die Komplexität verringern. Dafür hat man halt die Problemstellung, dass die Konfiguration je nach Einsatz ziemlich komplex werden kann.)</li>
<li>Eine Artikelverwaltung</li>
<li>Irgendwas um die Bilder hochzuladen</li>
<li>Eine einfache Art die News auf Webseiten zu positionieren.</li>
</ul>
<p>Ein anderer Lösungsweg für die Kategorieverwaltung bedeutet für mich im Moment, dass diese Anwendungsfälle wegfallen.</p>
<p>Der Bilderupload war die nächste Stelle, um abzuspecken. Die Bilder sollen &#8220;geploaded&#8221; werden, das ist die Anforderung. Das zusätzlich noch Stammdaten angelegt werden, ist nicht definiert. Für mich klingt das im Moment ein Wenig nach Bildverwaltung, und die ist nicht als Anforderung definiert also raus&#8230;</p>
<p>Doch dann kam die Spalte mit den verbauten Chancen und es wurde klar, dass jeder gestrichene Anwendungsfall Chancen auf Übersichtlichkeit, Datenhaltung, Verwaltung, usw. verbaut.</p>
<p>Was kann man da nun tun?</p>
<table border="0" cellspacing="0" frame="void" rules="none">
<colgroup>
<col width="286"></col>
<col width="78"></col>
<col width="101"></col>
<col width="107"></col>
<col width="107"></col>
</colgroup>
<tbody>
<tr>
<td width="286" height="123" align="left"><strong>Anwendungsfall</strong></td>
<td width="78" align="left"><strong>braucht es den?</strong></td>
<td width="101" align="left"><strong>bleiben die minimalen  Anforderungen trotzdem erfüllt?</strong></td>
<td width="107" align="left"><strong>Kosten / Zeitaufwand vorhanden?</strong></td>
<td width="107" align="left"><strong>Werden Chancen verbaut? (Usability, Datenhaltung&#8230;)</strong></td>
</tr>
<tr>
<td height="22" align="left" bgcolor="#99ccff"><strong>Systemadministrator</strong></td>
<td align="left" bgcolor="#99ccff"><strong><br />
</strong></td>
<td align="left" bgcolor="#99ccff"><strong><br />
</strong></td>
<td align="left" bgcolor="#99ccff"><strong><br />
</strong></td>
<td align="left" bgcolor="#99ccff"><strong><br />
</strong></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Add Category</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Add Editor to Category</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Change Editor</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Create Editor</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Delete Category</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Delete Editor</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Edit Category</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Remove Editor from Category</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">nein</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Show Categories</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#99ccff">Show Editors</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff">ja</td>
<td align="left" bgcolor="#99ccff"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320"><strong>Editor</strong></td>
<td align="left" bgcolor="#ffd320"></td>
<td align="left" bgcolor="#ffd320"></td>
<td align="left" bgcolor="#ffd320"></td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Add Image to Newsentry</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Create Newsentry</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Delete Image</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Delete Newsentry</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Edit Image Data</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Edit Newsentry</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Navigate in Newslist</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Remove Image from Newsentry</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Search Image</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">nein</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Search News</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Set Presentation times</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#ffd320">Upload Image</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320">ja</td>
<td align="left" bgcolor="#ffd320"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23"><strong>Webuser</strong></td>
<td align="left" bgcolor="#23ff23"></td>
<td align="left" bgcolor="#23ff23"></td>
<td align="left" bgcolor="#23ff23"></td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23">Navigate Archive News Shortentries</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23">Navigate Shortentries</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23">Show Archive Newsentry</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23">Show Newsentry</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
<tr>
<td height="20" align="left" bgcolor="#23ff23">Show Shortentries</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23">ja</td>
<td align="left" bgcolor="#23ff23"></td>
</tr>
</tbody>
</table>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/guggat_emol/wie-schrumpft-man-das-system-gesund/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Security Komponenten Klassendiagramm</title>
		<link>http://www.baldenhofer.eu/blog/it/security-komponenten-klassendiagramm</link>
		<comments>http://www.baldenhofer.eu/blog/it/security-komponenten-klassendiagramm#comments</comments>
		<pubDate>Tue, 30 Jun 2009 06:49:36 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Klassendiagramm]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1656</guid>
		<description><![CDATA[Im Artikel Security fummelt man am Besten gleich in die Architektur hinein habe ich die verschiedenen Security Umsetzungsvarianten erläutert, die wir für die Erstellung des Newssystems verwenden können. Da keine größeren Klagen eingetroffen sind, gehe ich mal davon aus, dass ihr mit meiner bevorzugten Variante leben könnt. Jetzt wollen wir mal aus der grauen Theorie [...]]]></description>
			<content:encoded><![CDATA[<p>Im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/security-fummelt-man-am-besten-gleich-in-die-architektur-hinein">Security fummelt man am Besten gleich in die Architektur hinein</a> habe ich die verschiedenen Security Umsetzungsvarianten erläutert, die wir für die Erstellung des Newssystems verwenden können.<br />
Da keine größeren Klagen eingetroffen sind, gehe ich mal davon aus, dass ihr mit meiner bevorzugten Variante leben könnt.<br />
Jetzt wollen wir mal aus der grauen Theorie rauskrabbeln und die Welt mit schönen Klassendiagrammen beglücken <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Ich habe jetzt ein Klassendiagramm zusammengesteckt bei dem die Security Komponenten weitgehend außerhalb der Newssystemkomponenten stehen.<br />
<img src="/images/blog/newssystem/SecurityComponents.png" alt="Die Security Komponenten und ihre Interaktion mit den Newssystem Komponenten." /><br />
Das sind doch jetzt schon relativ viele Klassen und Verbindungen zwischen den einzelnen Komponenten.</p>
<h3>Schnittstellen</h3>
<p>In diesem Modell habe ich folgende Schnittstellen (Interfaces) festgelegt:</p>
<h4>IUserModel</h4>
<p>Dieses Interface kapselt die Methoden des UserModels.<br />
Ich benötige ein Modell, mit dem wir unsere User im System ablegen können. Diese User müssen existieren und entsprechend das gewünschte Passwort vorweisen können.<br />
Also LoginName und Passwort ist cool <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Ich habe mich entschlossen diese Security Elemente im UserModel abzulegen und dieses UserModel außerhalb der Security Komponenten zu positionieren.<br />
Vielleicht wäre es noch sauberer gewesen alle Userdaten, wie Name, UserTyp usw. in einem UserModel zu verwalten und alle Security Dinge in einem SecurityUserModel.<br />
Aber dann brauch ich noch mehr Modelle und irgendwann will ich auch mal mit dem Newssystem fertig werden <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Wir brauchen ja noch was zum Reverse Engineering gelle?<br />
So, wir verwenden also den LoginName und das Passwort um den jeweiligen User zu authentisieren.<br />
Da wir ein Interface verwenden, ist es völlig egal wie die Methode realisiert wird. Wir haben das Newssystem an dieser Stelle vom Security System entkoppelt.<br />
Falls wir ein anderes Security System verwenden, können wir einfach auf die Speicherung von LoginName und Passwort im UserModel verzichten.</p>
<h4>ICategory</h4>
<p>Da unsere Redakteure nur in bestimmten Kategorien Zugriff erhalten, werden wir entsprechend die Frage, ob der Redakteur für eine bestimmte Kategorie berechtigt ist an unser Kategoriemodell weiterleiten. Falls das in einer Security Implementation nicht benötigt oder gewünscht ist, können wir hier auch die Systeme leicht voneinander entkoppeln.</p>
<h4>IAuthentication</h4>
<p>Wir greifen in unserem Newssystem über dieses Interface auf die Authentication Methoden zu. Falls ein anderes Security System gewünscht wird, muss es nur diesem Interface genügen. Wenn das andere anzubindende Security System dieses Interface nicht anbietet, können wir eine Fasade oder einen Adapter davorstellen. Das Security System ist somit vollkommen von unserem Newssystem entkoppelt und wir können es immer und überall aufrufen.<br />
Cool ist, dass hiermit auch andere Systeme auf diese Schnittstelle zugreifen können.<br />
Eventuell sollten wir, falls wir unser Security System mehrmals verwenden wollen, wirklich unser IUserModel im Security System realisieren. Dieser Umbau ist später einfach möglich.</p>
<h4>IAuthorisation</h4>
<p>Hierüber wird gesteuert, ob ein User überhaupt berechtigt ist auf eine bestimmte Komponente und Aktion zuzugreifen.<br />
Da wir im Newssystem konzequent das CRUD Pattern umsetzen, können wir auf Komponentenebene jeweils die Create, Read, Update und Delete Aktion auf Userebene absichern.<br />
Na, sind wir nicht stabil und sicher damit?</p>
<h3>Klassen</h3>
<p>Ein paar Klassen sollten wir trotzdem realisieren und uns nicht nur hinter Interfaces verstecken <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4>Authentication</h4>
<p>Hier realisieren wir unsere interne News-Berechtigungsklasse. Nur User, die sich am System anmelden können, lassen wir im System zu.<br />
Diese Klasse verwendet die UserModel Klasse um auf die gespeicherten User und deren Passwörter zugreifen zu können.</p>
<h4>Authorisation</h4>
<p>Wenn ein User angemeldet ist, wird ihm eine bestimmte Rolle zugewiesen.<br />
Bei uns gibt es Redakteuere, Master Redakteure, Administratoren usw.<br />
Jede Rolle hat bestimmte Rechte. Wir können hiermit festlegen, dass der Redakteur nur seine Kategorien sieht und verändern kann.<br />
Der Administrator kann neue Kategorien hinzufügen und verändern.<br />
Diese Klasse kontrolliert, ob der jeweilige User die gegebenen Rechte hat.<br />
Falls ja, liefert sie <strong>true</strong> zurück.</p>
<h4>AuthenticationFactory</h4>
<p>Damit wir unsere Authentication Klasse gegen andere Systeme austauschen können, bauen wir diese Fabrikklasse ein.<br />
Jedesmal wenn wir einen Zugriff auf die Security Klassen benötigen, rufen wir diese Klasse auf. Wir erhalten die jeweils aktive Instanz, die dem Interface IAuthentication genügt. So können wir sicherstellen, dass wir später auch ein anderes Security System mitverwenden können.</p>
<h4>AuthorisationFactory</h4>
<p>Klar, wenn die Authentisierung schon gekapselt werden soll, dann auch die Authorisierung.<br />
Damit haben wir die notwendigen Klassen beieinander um die bisher bekannten Security Anforderungen für den ersten Sprint abzubilden.<br />
Jetzt muss sich nur noch jemand bereiterklären die Teile kurz auszucodieren.<br />
Wenn sich kein Freiwilliger meldet, werde ich das wohl machen dürfen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/security-komponenten-klassendiagramm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Security fummelt man am Besten gleich in die Architektur hinein</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/security-fummelt-man-am-besten-gleich-in-die-architektur-hinein</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/security-fummelt-man-am-besten-gleich-in-die-architektur-hinein#comments</comments>
		<pubDate>Fri, 26 Jun 2009 09:10:40 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1641</guid>
		<description><![CDATA[Ich habe mal meinen Enterprise Architect &#8220;vorgeglüht&#8221; und mich an die grundlegende Architektur des Newssystems gemacht. Da ich als Basispattern das Model View Controller Pattern verwende, und die einzelnen Aktionen nach dem CRUD (Create, Read, Update, Delete) Pattern aufgebaut sind, fing ich mit den Modellen an. Es kommen eine ganze Menge Modelle zusammen, wenn wir [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe mal meinen Enterprise Architect &#8220;vorgeglüht&#8221; und mich an die grundlegende Architektur des Newssystems gemacht.<br />
Da ich als Basispattern das Model View Controller Pattern verwende, und die einzelnen Aktionen nach dem CRUD (Create, Read, Update, Delete) Pattern aufgebaut sind, fing ich mit den Modellen an.<br />
Es kommen eine ganze Menge Modelle zusammen, wenn wir das Newssystem schön und sauber gestalten wollen.</p>
<h3>Mach dir zuerst über die Security Gedanken</h3>
<p>Als ich so meine Architekturtapete pinselte, dachte ich logischerweise auch über die Zugriffsrechte der Anwender nach.<br />
Es gibt, wie immer, verschiedene Vorgehensweisen und Möglichkeiten wie man seine Sicherheitsregeln in das System einbaut.<br />
Hier sind ein paar Gedanken dazu.</p>
<h4>Authorisierung in den Modellen</h4>
<p>Man kann z.B. die Zugriffsrechte fest in den Modellen einschreiben.<br />
Das bedeutet, das jeweilige Modell kontrolliert, ob der Anwender überhaupt diese Aktion durchführen darf.<br />
Dazu können hart kodierte Regeln verwendet werden. Das bedeutet der Redakteur darf nur seine eigenen Artikel verändern, also prüfen wir ob der aktuell angemeldete Redakteur im Artikel eingetragen ist.</p>
<h4>Vorteile</h4>
<ul>
<li>Wir können die Regeln einmal festlegen und eintragen</li>
<li>Die Sicherheit wird auf Modellebene gesteuert<br />
    Ein versehentliches falsches Einfügen und Verändern sollte verhindert werden können.</li>
</ul>
<h4>Nachteile</h4>
<ul>
<li>Die Regeln stehen hart kodiert im Modell drin<br />
    Änderungen an den Sicherheitsregeln müssen in den Modellen vorgenommen werden. Das nachträgliche Anpassen für einen Kunden ist nicht möglich. Wenn aber ein Kunde will, dass der Systemadministrator auch Artikel bearbeiten kann, dann geht das nicht. Wenn das jedoch ein Kundenwunsch ist, finde ich es nicht richtig unser System schon von Anfang an so einzuschränken.</li>
<li>Wenn ein zentrales Security System verwendet werden soll, dann können die Zugriffsregeln nicht von dort aus gesteuert werden. Das System ist in sich geschlossen und nicht erweiterbar.</li>
<li>Duplizierung von Code und Verantwortlichkeiten auf verschiedenen Layern<br />
    Falls die Regeln auch Auswirkungen auf die Views haben, wie Beispielsweise die Anzeige von Löschbuttons nur wenn du auch die notwendigen Rechte hast, dann muss man diese Regeln auch noch in der View implementieren.</li>
<li>Seperation of Concern verletzt<br />
    Das gefällt mir als Architekt natürlich gar nicht. Wieso soll sich eine View oder ein Modell um die Berechtigungen des Users im Detail kümmern? Das macht die Komponenten dick und fett und das kann kein guter Ansatz sein.</li>
</ul>
<p>Oha! Das war noch nichts.<br />
Gut, ich behaupte mal die meisten Systeme sind genau so, oder so ähnlich aufgebaut. Aber wenn es falsch ist, dann ist es auch falsch wenn es meistens so gemacht wird.<br />
Also gut, ein weiterer Versuch:</p>
<h3>Security Rules nur in den Controllern</h3>
<p>Der Controller ist ja dafür da, die Abläufe im System zu steuern.<br />
Da wäre es doch nur rechtens, wenn er sich auch um die Security kümmert.<br />
Wenn unser lieber User jetzt eine Aktion ausführen will, die er nicht ausführen darf, dann hindert ihn der Controller daran.</p>
<h4>Vorteile</h4>
<ul>
<li>Die Zugriffsdefinition wird an einer Stelle gehalten<br />
    Juchu! Klingt doch schon eher nach Seperation of Concerns gelle?. Wenn wir was ändern wollen, dann ändern wir den jeweiligen Controller. View und Modell kümmern sich um die Ansicht und die Speicherung.</li>
<li>Flexibilität der Rechtevergabe deutlich erhöht<br />
    Da wir nun eine zentrale Komponente haben, in der wir die Rechtevergabe steuern, sollte es deutlich leichter sein diese zu verändern.</li>
</ul>
<h4>Nachteile</h4>
<ul>
<li>Auf Modellebene wird keine Zugriffssteuerung implementiert.<br />
    Das ist ein ziemlich dicker Nachteil. Das Modell muß permanent und immer sich um die Richtigkeit der Daten kümmern. Wenn wir dem Modell jetzt diese Verantwortung entziehen, dann muss der Controller immer sauber programmiert sein. Damit entsteht eine Sicherheitslücke. Denn wer weiß? Vielleicht umgeht ein versierter Hacker unseren Controller?</li>
<li>Zentrale Rechteverwaltung nicht möglich<br />
    Da wir wieder unsere Rechteverwaltung im System behalten, können wir eine Verwaltung nicht in einer externen Komponente auslagern. Unser System bleibt dick und wenn wir es irgendwo integrieren wollen, bleibt dem Administrator nichts anderes übrig als verschiedene Administartionstools zu verwenden.</li>
</ul>
<p>Hm&#8230; Schon mal nicht schlecht, bis auf die Nachteile.<br />
Mir gefällt diese Implementation jedoch schon viel besser als die Erste Variante.<br />
Vielleicht gibts da noch was anderes?</p>
<h3>Rechteverwaltung in eigene Komponenten auslagern und über Interface ansteuern</h3>
<p>Das klingt schön kompliziert und gefällt deshalb dem Architekt <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Quatsch, das ist gar nicht kompliziert, hilft uns jedoch die Komplexität zu senken und später ein anderes Rechtesystem mitzuverwenden.<br />
Wir erstellen, z.B. mit einem Singleton oder Factory Pattern, ein eigenständiges Sicherheitsregelwerk. Dieses Regelwerk wird für die Standalone Lösung des Newssystems verwendet.<br />
Die Authorisierung wird über ein Interface angesprochen.<br />
Dieses Interface bietet mindestens eine Funktion.<br />
Und die nennen wir z.B. <span class="code">isActionAllowed(actionID, component)</span>.<br />
Wir übergeben dieser Methode die Aktion die zur Zeit aufgerufen wurde und die Komponente auf die diese Aktion angewendet wird.<br />
Die Methode liefert <strong>true</strong> zurück, wenn der Anwender diese Aktion durchführen darf. Und, rate mal, <strong>false</strong> falls er es nicht darf.<br />
Unglaublich digital! <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Jetzt können wir in jedem Modell und in jedem Controller oder View nach belieben Regeln festlegen und im zentralen Authorisierungssystem implementieren.</p>
<h4>Vorteile</h4>
<ul>
<li>Zentrale Verwaltung aller Rechte möglich<br />
    Vorbei sind die Probleme, dass wir Rechte nicht zentral verwalten können. Je nach Strategie können wir eine Whitelist oder eine Blacklist implementieren. Will heißen, dass wir z.B. nur <strong>true</strong> zurückliefern, wenn die Komponente und Aktion bekannt und erlaubt ist. Oder wir liefern <strong>true</strong> zurück wenn wir keinen Plan haben was da aufgerufen wurde. Dann überprüfen wir nur, was wir auch schon kennen.</li>
<li>Auf Modellebene kann Rechteverwaltung realisiert werden.<br />
    Wenn wir mindestens alle Modelle in der Rechteverwaltung aufnehmen, ist eine Rechtesteuerung auf Modellebne möglich.</li>
<li>Größte Flexibilität bei der Rechtevergabe<br />
    Klar, wir können hier die wildesten Rechtesteuerungen erfinden. Aber Vorsicht! Es ist nicht cool man wenn man damit jedem Anwender alle Rechte gibt.</li>
<li>Einfaches Testen<br />
    Da die Security in einem eigenen System zusammengefasst ist, können wir für jede Aktion von CRUD und jeder Komponente einen <strong>true</strong> und <strong>false</strong> Testfall generieren. Wir können dann sehr sicher sein, dass z.B. die Modelle nur speichern wenn sie auch wirklich speichern dürfen.</li>
</ul>
<h4>Nachteile</h4>
<p>Was? So eine coole Lösung und Nachteile?<br />
Leider ja&#8230;</p>
<ul>
<li>Modelle haben keine direkte Kontrolle über Authorisierung<br />
    Dieser Nachteil ist der gleiche wie wenn wir die Rechtevergabe dem Controller übergeben. Der Entwickler und Administrator unserer Rechtesystems muss wissen was er tut. Das Modell unterstützt ihn hierbei nicht.</li>
<li>Externe Rechtevergabe kann Sicherheitslücken verursachen<br />
    Klar, wenn wir unsere Security &#8220;outsourcen&#8221; dann verlieren wir innerhalb des Systems die Kontrolle darüber. Aber mal ehrlich: Wir bauen hier ein Newssystem, im schlimmsten Fall wird mal eine schlechte Nachricht geschrieben oder gelöscht&#8230;</li>
</ul>
<h3>Wozu hat sich jetzt der (graue) Star Architekt entschlossen?</h3>
<p>Ratet mal!<br />
Ich bin ein faules Tier und möchte die Flexibilität so hoch wie möglich halten.<br />
Also werde ich in die Architektur die dritte Variante einbauen.<br />
Wie bitte? Faul und dann so ein System?<br />
Genau deshalb. Wenn wir nur eine Komponente verwalten müssen, mit der wir die Authorisierung durchführen, sparen wir uns über die Zeit eine menge Arbeit.<br />
Wenn die einzelnen Methoden einfacher aufgebaut sind, können wir sie schneller uns sicherer testen.<br />
Dann kann ich ruhig schlafen und habe das gute Gefühl keine vollständige Standalone Lösung entwickelt zu haben.</p>
<h3>Hätten wir diese Lösung auch noch später einbauen können?</h3>
<p>Ja, das hätten wir gekonnt. Doch wir wären permanent über den User und seine Berechtigungen gestolpert. Im schlimmsten Fall hätten wir die einzelnen Berechtigungen schon irgendwie in den Controller, oder noch schlimmer, nur in die Views eingebaut.<br />
In den Views wäre besonders schlimm, da das erste was ein böser Bube umgehen kann die View ist. Ein Roboter braucht keine View&#8230;</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/security-fummelt-man-am-besten-gleich-in-die-architektur-hinein/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Auf der Suche nach einem Tool um Anforderungen zu erfassen</title>
		<link>http://www.baldenhofer.eu/blog/guggat_emol/auf-der-suche-nach-einem-tool-um-anforderungen-zu-erfassen</link>
		<comments>http://www.baldenhofer.eu/blog/guggat_emol/auf-der-suche-nach-einem-tool-um-anforderungen-zu-erfassen#comments</comments>
		<pubDate>Fri, 19 Jun 2009 11:33:04 +0000</pubDate>
		<dc:creator>Jozo</dc:creator>
				<category><![CDATA[Azubi-Ecke]]></category>
		<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1567</guid>
		<description><![CDATA[In meinem vorhergehenden Artikel habe ich bereits über einige Tools um Anforderungen zu erfassen nachgedacht. In diesem Artikel möchte ich versuchen die Vor- und Nachteile zu verdeutlichen. Eine Anforderung an unser Tool hat sich geändert. Und zwar ist es nicht zwingend Notwendig Anforderungen per Mail an mich zu senden. Eine Möglichkeit sie selber zu einzutragen, [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem <a href="http://www.baldenhofer.eu/blog/azubi-ecke/ein-tool-fuer-die-anforderungen/comment-page-1#comment-600">vorhergehenden Artikel</a> habe ich bereits über einige Tools um Anforderungen zu erfassen nachgedacht. In diesem Artikel möchte ich versuchen die Vor- und Nachteile zu verdeutlichen. Eine Anforderung an unser Tool hat sich geändert. Und zwar ist es nicht zwingend Notwendig Anforderungen per Mail an mich zu senden. Eine Möglichkeit sie selber zu einzutragen, und wenn möglich noch zu kommentieren bzw. zu diskutieren wäre toll. Daher die folgenden Tools nach meiner Beurteilung.</p>
<h3>MediaWiki</h3>
<ul>
<li><strong>Stärken</strong></li>
</ul>
<p>Versionen der Anforderung möglich.<br />
Rechteverwaltung möglich.<br />
Diskussionsmöglichkeit gegeben um evtl. direkt den Status der Anforderung zu besprechen.<br />
Kategorisierung, Suchfunktion, und Anordnung möglich.</p>
<ul>
<li><strong>Schwächen</strong></li>
</ul>
<p>Eingabe der Anforderung ist nicht ganz durchgängig.</p>
<p>Eine für jeden verständliche Anordnung der Anforderungen muss noch erfunden werden.</p>
<ul>
<li><strong>Chancen</strong></li>
</ul>
<p>Es besteht die Möglichkeit einzelne Anforderungen direkt auszudiskutieren und einen Status festzulegen.<br />
Anforderungen müssen nicht unbedingt per Mail entgegengenommen werden, sondern können an passenden Stellen eingetragen werden.<br />
Man kann Bilder oder andere Medien einfügen um Vorgänge oder Anforderungen genauer zu beschreiben.<br />
Erstmaliger Einsatz von einem Wiki.</p>
<ul>
<li><strong>Risiken</strong></li>
</ul>
<p>Es muss eine geeignete Struktur eingesetzt werden, damit keine Anforderungen untergehen.</p>
<h3>Blog</h3>
<ul>
<li><strong>Stärken</strong></li>
</ul>
<p>Diskussionsmöglichkeit gegeben.<br />
Rechteverwaltung möglich.<br />
Kategorisierung möglich.<br />
Anforderungen können direkt eingetragen werden.</p>
<ul>
<li><strong>Schwächen</strong></li>
</ul>
<p>Artikel oder Seiten können nicht nachträglich in andere Kategorien oder Serien geordnet werden.</p>
<ul>
<li><strong>Chancen</strong></li>
</ul>
<p>Jeder ist mit dem System vertraut und man würde sich Einarbeitungszeit sparen.</p>
<ul>
<li><strong>Risiken</strong></li>
</ul>
<p>Man müsste sich auf ein nicht änderbare Anordnung festlegen, und somit evtl. feststellen, dass diese Tool doch unpassend ist.<br />
Keine Erfahrung ob sich dieses Tool als &#8220;Anforderungserfassungssystem&#8221; eignet.</p>
<h3>Gobby</h3>
<ul>
<li><strong>Stärken</strong></li>
</ul>
<p>Dokumente können von mehreren gleichzeitig genutzt werden.<br />
Zeitversetztes arbeiten möglich.<br />
Anforderungen können in ein passendes Dokument eingetragen werden.<br />
Diskussionsmöglichkeit über Chat möglich.<br />
Mehrere Dateien können über ein einzelnes Fenster geöffnet werden.</p>
<ul>
<li>Schwächen</li>
</ul>
<p>Jede Anforderung müsste ein eigenes Dokument erhalten.<br />
Einzelne Dokumente werden durch einen Filebrowser geöffnet, somit bestimmt die &#8220;Ordner/Datei-Anordnung&#8221; die Übersichtlichkeit.<br />
Ein z.B. Tabellendokument (.ods) ist in der Liste der bekannten Dateiformate nicht vorhanden.<br />
Das System ist nicht jedem bekannt.</p>
<ul>
<li>Chancen</li>
</ul>
<p>Wir lernen ein neues Tool kennen.</p>
<ul>
<li>Risiken</li>
</ul>
<p>Kriterien, wie Übersichtlichkeit, Kategorisierung usw. werden evtl. nicht erfüllt.</p>
<table border="0" cellspacing="0" frame="void" rules="none">
<colgroup>
<col width="332"></col>
<col width="152"></col>
<col width="250"></col>
<col width="222"></col>
<col width="189"></col>
</colgroup>
<tbody>
<tr>
<td width="332" height="20" align="left">Tool</td>
<td width="152" align="center"><strong>miradlo Issue Tool</strong></td>
<td width="250" align="center"><strong>Wikis</strong></td>
<td width="222" align="center"><strong>Google Docs</strong></td>
<td width="189" align="center"><strong>Gobby</strong></td>
</tr>
<tr>
<td height="20" align="left">Anforderungen eintragen</td>
<td align="center">sehr gut</td>
<td align="center">ausreichend</td>
<td align="center">gut</td>
<td align="center">ausreichend</td>
</tr>
<tr>
<td height="20" align="left">Rechteverwaltung</td>
<td align="center">nicht vorhanden</td>
<td align="center">vorhanden</td>
<td align="center">vorhanden</td>
<td align="center">vorhanden</td>
</tr>
<tr>
<td height="20" align="left">System bei Anwendern bekannt</td>
<td align="center">teilweise</td>
<td align="center">teilweise</td>
<td align="center">bekannt</td>
<td align="center">teilweise</td>
</tr>
<tr>
<td height="20" align="left">Anforderungen empfangen</td>
<td align="center">E-Mail</td>
<td align="center">über Rechteverwaltung möglich</td>
<td align="center">E-Mail</td>
<td align="center">Chat, Rechteverwaltung</td>
</tr>
<tr>
<td height="20" align="left">Versionierung</td>
<td align="center">nicht vorhanden</td>
<td align="center">vorhanden</td>
<td align="center">nicht vorhanden</td>
<td align="center">vorhanden</td>
</tr>
<tr>
<td height="20" align="left">Ordnen (nach z.B. Kategorien, Status..)</td>
<td align="center">ja</td>
<td align="center">ja</td>
<td align="center">ja</td>
<td align="center">Ordnerstruktur</td>
</tr>
<tr>
<td height="20" align="left">Diskussionsmöglichkeit</td>
<td align="center">nein</td>
<td align="center">ja</td>
<td align="center">nein</td>
<td align="center">ja</td>
</tr>
</tbody>
</table>
<p>Einige dieser Tools habe ich nur angetestet, und sind mir nicht im Detail bekannt. Also falls es z.B. doch sein kann das Gobby auch andere Dateiformate annimmt oder es bei einem Wiki doch noch Schwächen gibt die ich Übersehen habe, könnt ihr es ja kommentieren&#8230; <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In Anbetracht dessen, dass der Weg der Anforderungen doch nicht unbedingt per Mail erfolgen soll, würde ich ein Wiki vorziehen. Dort hätte man tatsächlich die Möglichkeit Anforderungen selber einzutragen und deren Status auszudiskutieren. Darüber hinaus können Änderungen anhand verschiedener Versionen jederzeit ersichtlich sein. RSS-Feeds könnte man ebenfalls benutzen, was somit alle Teilnehmer über Änderungen informiert. Ausserdem wäre ein Einsatz eines Wikis auch mein erstes Mal, und somit eine Erfahrung wert.</p>
<p>Was haltet ihr diesmal davon?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/guggat_emol/auf-der-suche-nach-einem-tool-um-anforderungen-zu-erfassen/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Komponenten die im ersten Sprint umgesetzt werden sollen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/komponenten-die-im-ersten-sprint-umgesetzt-werden-sollen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/komponenten-die-im-ersten-sprint-umgesetzt-werden-sollen#comments</comments>
		<pubDate>Wed, 17 Jun 2009 22:05:54 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1455</guid>
		<description><![CDATA[Damit wir mit dem Newssystem anfangen können, bin ich der Meinung dass wir zuerst die Userverwaltung (Implementation von UserModel, EditorModel, MasterEditorModel, SysAdminModel und die UserModelFactory umsetzen sollten. Weiterhin sollten wir erreichen, dass sich diese User am System anmelden können. Also würde ich folgende fachliche CRUD Anwendungsfälle realisieren: Create Editor Create MasterEditor Create SysAdmin Show Editors [...]]]></description>
			<content:encoded><![CDATA[<p>Damit wir mit dem Newssystem anfangen können, bin ich der Meinung dass wir zuerst die Userverwaltung (Implementation von UserModel, EditorModel, MasterEditorModel, SysAdminModel und die UserModelFactory umsetzen sollten.<br />
Weiterhin sollten wir erreichen, dass sich diese User am System anmelden können.<br />
Also würde ich folgende fachliche CRUD Anwendungsfälle realisieren:</p>
<ul>
<li>Create Editor</li>
<li>Create MasterEditor</li>
<li>Create SysAdmin</li>
<li>Show Editors</li>
<li>Show SysAdmins</li>
<li>Show MasterEditors</li>
<li>Update Editor</li>
<li>Update SysAdmin</li>
<li>Update MasterEditor</li>
<li>Delete Editor</li>
<li>Delete SysAdmin</li>
<li>Delete MasterEditor</li>
</ul>
<p>Weiterhin würde ich die technischen Anwendungsfälle für die Passwortverwaltung erstellen:</p>
<ul>
<li>Reset Password</li>
<li>Change Password</li>
</ul>
<p>Und damit unser Newssystem mal ein paar Datensätze aufnehmen kann, würde ich die erste Version des ArticleModel und der Kategorie erstellen.</p>
<ul>
<li>Create Category</li>
<li>Create Article</li>
<li>Show Categories</li>
<li>Show All Articles</li>
<li>Update Category</li>
<li>Update Article</li>
<li>Delete Category</li>
<li>Delete Article</li>
<li>Add Editor To Category</li>
<li>Add MasterEditor To Category</li>
<li>Remove Editor from Category</li>
<li>Remove MasterEditor from Category</li>
</ul>
<h3>Was ist das Ziel des ersten Sprints?</h3>
<p>Wir haben ein Basissystem mit dem wir rumprobieren können.<br />
Es sind noch keine Userviews vorhanden.<br />
Wir können mit CakePHP umgehen und sehen welche Eigenschaften wir tatsächlich umsetzen müssen.<br />
Testfälle für das Basissystem sind vorhanden.<br />
Wir können abprüfen, ob unsere Komplexität ausreichend ist.<br />
Erste Designfehler sollten auftauchen.<br />
Eventuell müssen wir nach diesem Schritt unser komplettes Design noch einmal überarbeiten.<br />
Vermutlich wird es aber soweit passen&#8230;</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/komponenten-die-im-ersten-sprint-umgesetzt-werden-sollen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Ein Tool für die Anforderungen</title>
		<link>http://www.baldenhofer.eu/blog/azubi-ecke/ein-tool-fuer-die-anforderungen</link>
		<comments>http://www.baldenhofer.eu/blog/azubi-ecke/ein-tool-fuer-die-anforderungen#comments</comments>
		<pubDate>Wed, 17 Jun 2009 15:01:53 +0000</pubDate>
		<dc:creator>Jozo</dc:creator>
				<category><![CDATA[Azubi-Ecke]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1526</guid>
		<description><![CDATA[Wie in den vorhergehenden Artikeln und Kommentaren zu lesen war, ist es wahr, dass es wirklich eine Menge Tools gibt mit denen man Anforderungen verwalten könnte. Ich habe mich mit den folgenden befasst: miradlo Issue Tool Doku Wiki Media Wiki phProjekt wordpress Blog google docs Gobby miradlo Issue Tool Das &#8220;miradlo Issue Tool&#8221; ist wie [...]]]></description>
			<content:encoded><![CDATA[<p>Wie in den vorhergehenden Artikeln und Kommentaren zu lesen war, ist es wahr, dass es wirklich eine Menge Tools gibt mit denen man Anforderungen verwalten könnte. Ich habe mich mit den folgenden befasst:</p>
<ul>
<li>miradlo Issue Tool</li>
<li><a href="http://www.dokuwiki.org/dokuwiki">Doku Wiki</a></li>
<li><a href="http://www.mediawiki.org/wiki/MediaWiki/de">Media Wiki</a></li>
<li><a href="http://www.phprojekt.com/">phProjekt</a></li>
<li><a href="http://wordpress-deutschland.org/">wordpress Blog</a></li>
<li><a href="https://www.google.com/accounts/ServiceLogin?service=writely&amp;passive=true&amp;nui=1&amp;continue=http%3A%2F%2Fdocs.google.com%2F&amp;followup=http%3A%2F%2Fdocs.google.com%2F&amp;ltmpl=homepage&amp;rm=false">google docs</a></li>
<li><a href="http://gobby.0x539.de/trac/">Gobby</a></li>
</ul>
<h3>miradlo Issue Tool</h3>
<p>Das &#8220;miradlo Issue Tool&#8221; ist wie bereits von Roland erwähnt sehr einfach zu benutzen. Man kann wirklich von Eingabefeld zu Eingabefeld &#8220;hüpfen&#8221; um Bearbeiter, Ersteller usw. einzutragen. Es besteht die Möglichkeit nach einem bestimmten Feld zu sortiern. Es müssten allerdings weitere Eingabefelder hinzugefügt werden und Rechteverwaltung ist im Moment auch nicht vorhanden.</p>
<h3>Doku Wiki</h3>
<p>Das  &#8220;Datenbanklose Doku-Wiki&#8221; hat meiner Meinung nach keine der benötigten Eigenschaften erfüllt. Das Erstellen einer Seite, und das Einrichten der Seitenleiste (Navi) war schon nicht sehr durchgängig. Es hat in jedem Fall seine nutzen doch passend für mich kam mir das nicht vor.</p>
<h3>Media Wiki</h3>
<p>Auch hier konnte ich lediglich Seiten erstellen, indem ich über die Suchmaske den Namen der Anforderung eingegeben habe. Ob das wirklich so funktioniert ist mir im Moment nicht bekannt, jedenfalls macht auch dieses Tool nicht den Anschein für unseren Zweck zu passend zu sein.</p>
<h3>phProjekt</h3>
<p>Hier ist klar, dass sich jeder in das Tool einarbeiten müsste. Nach der  ersten Installation, und einigen Versuchen auf der <a href="http://www.phprojekt.com/index.php?name=News&amp;file=article&amp;sid=268">Demoversion</a> fällt auch dieses Tool weg.</p>
<h3>WordPress</h3>
<p>Man kann jede Anforderung als Artikel erstellen, in Serien verpacken und diese dann z.B. in die Serien &#8220;genehmigt&#8221;, &#8220;abgewiesen&#8221;, &#8220;abgeschlossen&#8221; usw. verschieben. Nachträgliches verschieben in andere Serien ist allerdings nicht möglich, somit wäre ein ordentliches &#8220;hin und her&#8221; schieben (Was auch einer meiner Pläne war&#8230; ) nicht gegeben. Auch nachträgliches verschieben in andere Kategorien würde nicht ohne weiteres klappen, daher fällt auch ein Blogsystem als Tool weg.</p>
<h3>Google Docs</h3>
<p>Man hat ein Dokument, das man an einer Stelle pflegt. Jeder kann das Dokument einsehen, Schreibrechte kann man verteilen und verwalten. Das Dokument kann man per &#8220;iframe&#8221; einbinden oder einfach auf das Dokument (<a href="http://spreadsheets.google.com/ccc?key=rUeYMTU6uyR54wIE6cdvALQ">Link zur Anforderungstabelle</a>) verlinken. Es bietet sich die Möglichkeit an, die Tabelle in verschiedenen Formaten (.ods, .txt, .pdf, usw.) zu exportieren um Sicherungen zu generieren.</p>
<h3>Gobby</h3>
<p>Meiner Meinung nach ein tolles Tool, welches einige Möglichkeiten bietet um Dateien gemeinsam, gleichzeitig, oder auch zeitversetzt zu bearbeiten. Ebenso eignet es sich auch um Brainstorming durchzuführen und Ideen auszutauschen (integrierter Chat). Doch auch in diesem Tool habe sehe ich nicht die Lösung.</p>
<h3>Gibt es denn überhaupt ein passendes Tool?</h3>
<p>Vor lauter tollen Tools, mit den verschiedensten Möglichkeiten und Plugins, sollte ich noch einmal an den Anfang gehen und mir einige Fragen stellen.</p>
<h4>Wer bin ich ?</h4>
<ul>
<li>Der Anforderungsmanager</li>
</ul>
<h4>Was soll ich tun?</h4>
<ul>
<li>sammel die Anforderungen</li>
<li>ordne die Anforderungen</li>
<li>publiziere die Anforderungen</li>
<li>tracke die Anforderungen</li>
<li>informiere wie der Status der Anforderungen lautet</li>
</ul>
<h4>Woher bekomme ich die Anforderungen?</h4>
<ul>
<li>ich nehme Anforderungen via Mail auf</li>
</ul>
<h4>Welche Informationen sollen andere von mir erhalten?</h4>
<ul>
<li>Hauptsächlich soll klar werden, was, wie und wann von wem geklärt wird. Am Besten noch auf einem Blick.</li>
</ul>
<h4>Ein paar Tags welche mir ebenfalls noch im Kopf rumschwirren&#8230;</h4>
<ul>
<li>Zeit- und Kostenbudget,  Solche Dinge können leicht zu neuen Projekten ausarten&#8230; <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h3>Fazit</h3>
<p>Von den getesteten Tools, habe ich lediglich beim &#8220;miradlo-Issue-Tool&#8221;  noch am ehesten die Vorgaben entdeckt welche ich an mein &#8220;Wunschtool&#8221; gestellt habe. Doch das Tool ist nicht ganz so vorhanden&#8230; und eine Rechteverwaltung ist ebenfalls nicht vorhanden. Schade&#8230;</p>
<p>Somit ergab sich für mich doch noch die &#8220;LowCost Variante&#8221; am geeignetsten für diesen Anwendungsfall. Also &#8216;sprich&#8217; ein zentrales Dokument welches in regelmässigen Abständen hochgespielt wird. Es ist zwar wirklich eine Steinzeitlösung, doch  sie erfüllt die Vorgaben. Mit Google Docs würde man sich das ständige hochspielen auf den Server sparen. Man hat nur ein Dokument welches die &#8220;Wahrheit&#8221; beinhaltet. Rechteverwaltung ist möglich, falls der Anforderungsmanger nicht erreichbar ist. In regelmässigen Abständen exportiert man eine Sicherung mit dem passenden Datum. Das Dokument ist &#8220;jederzeit&#8221; im Netz ersichtlich&#8230;ich sehe in Google Docs das passende Tool für diesen Anwendungsfall.</p>
<p>Was haltet ihr von meiner Entscheidung?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/azubi-ecke/ein-tool-fuer-die-anforderungen/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Namensänderungen im Newssystem Modell</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell#comments</comments>
		<pubDate>Wed, 17 Jun 2009 04:03:55 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1449</guid>
		<description><![CDATA[Ich bin dabei mir ein paar Gedanken zu den Modellen des Newssystems zu machen. Da ich diesmal CakePHP einsetzen will, habe ich ein paar Fragestellungenzu den Modellnamen zu beantworten. Beispiel: Bisher habe ich das Modell, welches die einzelnen News beinhaltet, sinnvollerweise NewsModell getauft. Nun, in CakePHP gilt die Namenskonvention, dass Modelle im Singular und Controller [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin dabei mir ein paar Gedanken zu den Modellen des Newssystems zu machen.<br />
Da ich diesmal CakePHP einsetzen will, habe ich ein paar Fragestellungenzu den Modellnamen zu beantworten.<br />
Beispiel:<br />
Bisher habe ich das Modell, welches die einzelnen News beinhaltet, sinnvollerweise NewsModell getauft.<br />
Nun, in CakePHP gilt die Namenskonvention, dass Modelle im Singular und Controller im Plural definiert werden sollen.<br />
Supi!<br />
News ist zwar eigentlich ein Singular, aber ich habe da ein New und ein &#8220;s&#8221;.<br />
Also wird das kluge CakePHP mir wohl sagen, dass ich hier einen Plural verwende.</p>
<h3>Was habe ich getan?</h3>
<p>Bevor ich mit dem CakePHP beim Backen ärger bekomme, habe ich mich entschieden die NewsModel Geschichte einfach umzubenennen.<br />
Im Prinzip ist ja jede News ein Artikel.<br />
Also heist das NewsModel ab sofort ArticleModel.</p>
<h3>Was muss jetzt geschehen?</h3>
<p>Da wir zur Zeit noch in der Konzeption sind, muss nicht viel umgewandelt werden.<br />
Wir müssen lediglich kurz durch alle Artikel durch, in denen das NewsModel vorkommt.<br />
Dank der Volltextsuche sollte das ja wirklich kein Problem darstellen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Dann ersetzen wir in den Artikeln NewsModel in ArticleModel und schon sind wir auf alle Fälle CakePHP konform.</p>
<h3>Blogsoftware verwenden hat Vorteile bei der Dokumentation</h3>
<p>Die wirkliche Erkenntnis, die ich dank dieser Aktion erhalten habe, ist das es sich wirklich lohnt ein Content Management System, wie beispielsweise einen Blog, für die Dokumentation zu verwenden.<br />
Da alle Dokumente miteinander verlinkt sind, ist die Suche und das Abändern der einzelnen Artikel kein Problem.<br />
Mit der Kommentarfunktion kann man die Änderungen noch protokollieren und so ist die ganze Dokumentation richtig rund!</p>
<h3>Fazit</h3>
<p>Diese Aktion hat mir gezeigt, dass ein integriertes Tool für die ganze Dokumentation durchaus seinen Reiz hat.<br />
Wir sollten entsprechend über unsere Anforderungsdokumentation nachdenken.<br />
Wenn wir hier ein anderes Werkzeug einsetzen, werden wir sehr schnell inkonsistente Bezeichnungen erhalten.<br />
Die Inflation bei den Blogeinträgen ist zwar nicht unbedingt schön, aber dann haben wir den ganzen Brei auf einem System.<br />
Wir könnten ja noch über die Anforderungsclusterung nachdenken.<br />
Wir können z.B. alle Anforderungen zu einer bestimmten Komponente, oder zu einem bestimmten Thema, in jeweils einen Artikel schreiben.<br />
Damit werden wir deutlich weniger Artikel erhalten und dennoch alle Anforderungen im Blog ablegen können.<br />
Oder wir freuen uns über die vielen Anforderungsartikel.<br />
Eigentlich macht es ja nichts aus, wenn man in einem Blog ein paar hundert Artikel hat. Man kann über die Cloud, oder über die Serie sehr einfach filtern.</p>
<p>Habt ihr hierzu eine Meinung?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Verwalten der Anforderungen</title>
		<link>http://www.baldenhofer.eu/blog/it/verwalten-der-anforderungen</link>
		<comments>http://www.baldenhofer.eu/blog/it/verwalten-der-anforderungen#comments</comments>
		<pubDate>Mon, 15 Jun 2009 22:09:22 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1513</guid>
		<description><![CDATA[Wir hatten in der letzten Zeit diverse Diskussionen wie wir unsere Anforderungen für das Newssystem verwalten können. Ich hatte im Artikel Requirements für Newssystem erfassen beschrieben, welche Informationen zu einer Anforderung beschrieben werden sollen. Im Artikel Welche Tools können wir zur Anforderungsverwaltung einsetzen habe ich verschiedene Tools aufgelistet, mit denen die Anforderungen verwaltet werden können. [...]]]></description>
			<content:encoded><![CDATA[<p>Wir hatten in der letzten Zeit diverse Diskussionen wie wir unsere Anforderungen für das Newssystem verwalten können.<br />
Ich hatte im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/requirements_fuer_newssystem_erfassen">Requirements für Newssystem erfassen</a> beschrieben, welche Informationen zu einer Anforderung beschrieben werden sollen.<br />
Im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/welche-tools-koennen-wir-zur-anforderungsverwaltung-einsetzen">Welche Tools können wir zur Anforderungsverwaltung einsetzen</a> habe ich verschiedene Tools aufgelistet, mit denen die Anforderungen verwaltet werden können.<br />
Dirk hat noch weitere Werkzeuge (Wikis usw.) aufgeführt.<br />
Er hat jedoch auch gesagt, dass man Anforderungen auch mit Stift und Zettel verwalten kann.<br />
Und dann ist noch der Kommentar zu erwähnen in dem Dirk vorschlägt, dass Jozo sich diverse Tools aussucht und damit arbeitet.<br />
Das empfinde ich als eine sehr gute Vorgehensweise.</p>
<p>In unserem Fall, wir sind räumlich voneinander getrennt, bin ich nicht gerade ein Fan von Stift und Zettel <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Damit wir unsere Anforderungen sinnvoll verwalten können, empfehle ich nun folgende Vorgehensweise:</p>
<h3>Jozo ist der Anforderungsmanager</h3>
<p>Toller Titel gelle?<br />
Was sind die Aufgaben eines Anforderungsmanagers?</p>
<ul>
<li>Sammeln der vorhandenen Anforderungen</li>
<li>Ordnen der Anforderungen</li>
<li>Publizieren der Anforderungen</li>
<li>Tracken der Anforderungen</li>
<li>Informieren welche Anforderungen umgesetzt werden müssen</li>
<li>Informieren welche Anforderungen umgesetzt worden sind</li>
</ul>
<h3>Wie geht Jozo hierbei vor?</h3>
<p>Zuerst einmal gehst du her und suchst nach passenden Tools, so wie es Dirk schon im Kommentar beschrieben hat.<br />
Du installierst dir lokal die Tools und evaluierst Diese.<br />
Schreibe deine Erfahrungen in einem Artikel.<br />
Für diese Aufgabe sollst du nicht mehr als maximal zwei Tage Aufwand betreiben.<br />
Wenn du das Supertool gefunden hast und damit umgehen kannst, dann darfst du selbstverständlich das Tool anstatt StarCalc verwenden.</p>
<p>Die einzelnen Aufgaben des Anforderungsmanagements bearbeitest du wie im Folgenden beschrieben:</p>
<h4>Sammeln der vorhandenen Anforderungen</h4>
<p>Du, Jozo, nimmst via Mail (jozo@miradlo.de) die Anforderungen entgegen.<br />
Weiterhin scannst du die bisher erstellten Artikel und filtert dort die bestehenden Anforderungen heraus.</p>
<h4>Ordnen der Anforderungen</h4>
<p>Die gewonnenen Informationen fügst du in ein StarCalc Dokument ein.<br />
Das Format der Anforderungen kannst du aus dem Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/requirements_fuer_newssystem_erfassen">Requirements für Newssystem erfassen</a> entnehmen.</p>
<h4>Publizieren der Anforderungen</h4>
<p>Mindestens einmal pro Woche schreibst du einen Artikel <strong>Status der Newssystem Anforderungen vom tt.mm.yyyy</strong>.<br />
Inhalt dieses Artikels ist welche Anforderungen neu hinzugekommen sind, welche bearbeitet wurden, wo Probleme bestehen.<br />
In diesem Artikel verlinkst du das Anforderungsdokument. Dafür lädst du das Anforderungsdokument auf den Server hoch.<br />
Falls du ein Tracking Tool verwendest, wird entsprechend der Link zu dem Tool hinzugefügt. Hauptsache ist, dass die Anforderungen im Internet einsehbar sind und maxmimal eine Woche &#8220;veraltet&#8221; sind.<br />
Falls sich zu viele Anforderungen unter der Woche verändern (gerade am Anfang), oder wenn eine wichtige Situation auftritt, dann schreibst du entsprechend mehr Artikel pro Woche.</p>
<h4>Tracken der Anforderungen</h4>
<p>Das StarCalc Dokument, oder das von dir betriebene Anforderungssystem, dient zum Tracken. </p>
<h4>Informieren welche Anforderungen umgesetzt werden müssen</h4>
<p>Ist Teil des wöchentlichen Reports.</p>
<h4>Informieren welche Anforderungen umgesetzt worden sind</h4>
<p>Ist Teil des wöchentlichen Reports.</p>
<h3>Wieso finde ich dieses Vorgehen gut?</h3>
<p>Jozo soll lernen mit Anforderungen und dem Arbeiten in verteilten Teams umzugehen.<br />
Weiterhin haben wir so eine Rolle etabliert, die im Projekt sich proaktiv um die Anforderungen kümmert.<br />
Mit dieser Vorgehensweise sind wir sehr nah am Zettel und Stift.<br />
Es sind wenig technische Mittel notwendig und wir haben dennoch den Vorteil immer die aktuellen Anforderungen von verschiedenen Orten einsehen zu können.<br />
Ok, falls Jozo das Wundersuperduppertool findet und verwendet, sind wir weit vom Zettel und Stift weg. Doch dann lernt Jozo immerhin das Tool zu verwenden.<br />
Die Kommunikation und Information innerhalb des Projekts läuft weiterhin über diesen Blog.<br />
So müssen wir nicht aus 1001 Quellen unsere Informationen zusammenkratzen.<br />
Das finde ich auch recht angenehm <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/verwalten-der-anforderungen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Welche Tools können wir zur Anforderungsverwaltung einsetzen?</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/welche-tools-koennen-wir-zur-anforderungsverwaltung-einsetzen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/welche-tools-koennen-wir-zur-anforderungsverwaltung-einsetzen#comments</comments>
		<pubDate>Sun, 14 Jun 2009 22:51:18 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anforderung]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1416</guid>
		<description><![CDATA[Wie im Artikel Requirements für Newssystem erfassen beschrieben, müssen diverse Informationen zu jeder Anforderung aufgenommen werden. Welche Tools können wir nun dafür verwenden? miradlo Issue Tool Hierbei handelt es sich um ein sehr einfaches Werkzeug mit dem die Anforderungen erfasst und gespeichert werden können. Es hat keine nennenswerte Benutzerverwaltung. Jeder der (via .htaccess) Zugriff erhält, [...]]]></description>
			<content:encoded><![CDATA[<p>Wie im Artikel <a href="requirements_fuer_newssystem_erfassen">Requirements für Newssystem erfassen</a> beschrieben, müssen diverse Informationen zu jeder Anforderung aufgenommen werden.<br />
Welche Tools können wir nun dafür verwenden?</p>
<h3>miradlo Issue Tool</h3>
<p>Hierbei handelt es sich um ein sehr einfaches Werkzeug mit dem die Anforderungen erfasst und gespeichert werden können.<br />
Es hat keine nennenswerte Benutzerverwaltung. Jeder der (via .htaccess) Zugriff erhält, kann editieren wie ein König.</p>
<h4>Vorteile</h4>
<p>Schweineeinfach zu installieren und konfigurieren.<br />
Falls wir noch ein Feld mehr brauchen, können wir das anhängen.</p>
<h4>Nachteile</h4>
<p>Wenig Sicherheit gegen unvernünftigen Zugriff. Dies kann jedoch durch eine kleine Erweiterung im Anmeldesystem gelöst werden.<br />
Wenig Funktionalität. Das Ding macht halt nur, was es bisher gemacht hat.</p>
<h3>Anforderungstool mit CakePHP backen</h3>
<p>Wir können natürlich auch kurz ein kleines Anforderungstool zusammenkleben.<br />
Mit CakePHP könnten wir schnell ein CRUD (Create, Read, Update and Delete) für eine Anforderungsliste basteln.<br />
Dann brauchts noch kurz eine e-Mail Bestätigung für die Userverwaltung und fertig ist das Anforderungstool <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4>Vorteile</h4>
<p>Wir können kurz lernen wie eine kleine Anwendung mit CakePHP gemacht wird.<br />
Wir können es so backen wie wir es wollen.<br />
Das Tool ist klein und einfach zum Installieren.<br />
Keine Altlasten und eigentlich keine Einlernzeit da es wirklich winzig sein soll.</p>
<h4>Nachteil</h4>
<p>Noch ein Tool.<br />
Wir vergessen garantiert alles was es sonst noch braucht. (Hat aber beim Issue Tool kein großes Problem gegeben.</p>
<h3>Bugzilla einsetzen</h3>
<p>Wir können uns einfach auch einen Bugzilla installieren.</p>
<h4>Vorteile</h4>
<p>Kann sehr viel und ist in der Entwicklergemeinde sehr bekannt.<br />
Deckt deutlich mehr ab.</p>
<h4>Nachteile</h4>
<p>Ziemlich dickes Ding für unsere Anforderungen.<br />
Deckt die Anforderungsanalyse nicht 100% ab und müsste entsprechend angepasst werden.</p>
<h3>Starcalc Dokument</h3>
<p>Das ist eine Lowcost Variante. Wir können mit Starcalc zentral ein Dokument ablegen und z.B. Jozo pflegt es.<br />
Ein Auszug des Dokuments spielt er in regelmäßigen Abständen auf den Server und so können alle drauf schauen.<br />
Die jeweilige Anforderung wird an eine Mailadresse (z.B. newssystem@miradlo.de) geschickt und Jozo kratzt es da raus.</p>
<h4>Vorteile</h4>
<p>Schweineeinfach zum Umsetzen.<br />
Jozo kann schon vorab filtern und bei Unverständnis nachfragen (Bioschnittstelle hat Gehirn!)<br />
Eine Person ist der Anforderungsmanager (Jozo)<br />
Sehr billig.</p>
<h4>Nachteile</h4>
<p>Wenn Jozo nicht da ist, werden neue Anforderungen nicht gepflegt. Dies könnte durch einen Prozess (ich kann Jozo ersetzen) gelöst werden.<br />
Das Tool ist nicht sexy. Wir haben so viel mit Internet und online usw. zu tun und dann nehmen wir ein Steinzeittool? Einfach aus technischer Sicht uncool.</p>
<h3>Ein Open Source Anforderungstool evaluieren</h3>
<p>Wetten wir, dass es mindestens 20 Open Source Anforderungstools gibt?<br />
Lass Jozo einen Tag suchen und wir haben ein cooles Tool.</p>
<h4>Vorteile</h4>
<p>Super Tool für exakt diesen Einsatz.</p>
<h4>Nachteile</h4>
<p>Das Tool passt vermutlich nicht 100% und wir müssen unseren Prozess entsprechend anpassen.<br />
Eventuell dauert die Evaluation und die Installation länger als einen Tag. Dann wird das Ganze wieder teuer.</p>
<h3>WordPress Artikel verwenden</h3>
<p>Das würde die Anzahl der Artikel pro Tag erhöhen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Auf diesem Blog könnten wir intelligent getackt die Anforderungen aufschreiben. Somit wäre jede Anforderung ein eigener, speziell ausehender Artikel der auch noch in einem Jahr einfach zu finden ist.<br />
Eventuell könnten wir uns auch einfach mit BuddyPress einen eigenen Anforderungsblog für das Newssystem anlegen. Dann würde mein Blog nicht komplett versaut werden und wir könnten die Redaktionsrechte für viel mehr Redakteure zulassen.</p>
<h4>Vorteile</h4>
<p>Wir könnten mal ausprobieren ob Blogs wirklich auch für die Anforderungsanalyse funktionieren kann.<br />
Jeder der Redakteurrechte hat, kann eine Anforderung schreiben.<br />
Viele Möglichkeiten um mit anderen Blogs (z.B dem Guggat emol) zu verlinken und alle Artikel sind online verlinkt.</p>
<h4>Nachteile</h4>
<p>Eventuell stellt sich heraus, dass es voll doof ist einen Blog für die Anforderungsanalyse zu verwenden.<br />
Extra Blog für Anforderungen klingt nach Overhead.<br />
Die Qualität der Anforderungen kann nicht so perfekt gewährleistet werden wie wenn wir hierfür ein spezielles Werkzeug haben.</p>
<h3>Und Jetzt?</h3>
<p>Da ich eigentlich faul bin finde ich die &#8220;Jozo&#8221; Lösung recht geschickt.<br />
Wir hätten einen Menschen der sich um die Anforderungen und deren Qualität kümmert.<br />
Es ist innerhalb von einer halben Stunde aufgesetzt.<br />
Wir können Designänderungen zentral und schnell lösen.</p>
<p>Wenn mich sonst jemand fragt finde ich die WordPress oder die selber gebastelte CakePHP Version richtig cool. Beide helfen uns, neue Sachen zu lernen.</p>
<p>Aus Standardgründen ist natürlich die Bugzilla Lösung relaxed. Ich habe nur ein bisschen Bammel, dass wir dann aus Anforderungen Bugs machen und das ist ja nicht wahr. Wir generieren somit eine negative Grundeinstellung.<br />
Die gleichen Bammel habe ich beim Einsatz eines Open Source zu suchendes Tool. Solche Dinge können leicht zu neuen Projekten ausarten <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ich eröffne die Diskussion!<br />
Was haltet ihr von dem Ganzen und was für eine Lösung sollen wir verwenden?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/welche-tools-koennen-wir-zur-anforderungsverwaltung-einsetzen/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Requirements für Newssystem erfassen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/requirements_fuer_newssystem_erfassen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/requirements_fuer_newssystem_erfassen#comments</comments>
		<pubDate>Thu, 11 Jun 2009 19:51:04 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anforderung]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[Requirements]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1414</guid>
		<description><![CDATA[Für das Newssystem ist mittlerweile sehr viel geschrieben worden. So ganz aus dem Gefühl heraus würde ich sagen, dass wir noch einiges mehr schreiben werden Wenn ich Projekte vorantreibe, habe ich immer ein Requirement Tool. Requirements, also auf deutsch Anforderungen, beschreiben was von einem System alles erwartet wird. Wenn du einen Nagel in die Wand [...]]]></description>
			<content:encoded><![CDATA[<p>Für das Newssystem ist mittlerweile sehr viel geschrieben worden.<br />
So ganz aus dem Gefühl heraus würde ich sagen, dass wir noch einiges mehr schreiben werden <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Wenn ich Projekte vorantreibe, habe ich immer ein Requirement Tool.<br />
Requirements, also auf deutsch Anforderungen, beschreiben was von einem System alles erwartet wird.<br />
Wenn du einen Nagel in die Wand treiben willst, hast du Anforderungen an das zu verwendende Werkzeug.<br />
Es soll einen Griff haben mit dem du das Nagel-in-die-Wandtreib Werkzeug halten kannst.<br />
Dann soll es eine Fläche haben mit der du den Nagel treffen willst.<br />
Und dann soll es noch ein ziemliches Eigengewicht haben, damit die vernichtende Massenträgheitenergie den Nagel in seine Wand wuchten kann.</p>
<h3>Was für Tools setzte ich normalerweise für die Anforderungssammlung ein?</h3>
<p>Wenn es gar nichts gibt, dann nehme ich halt eine Excel Liste und schreibe die Anforderungen da rein.<br />
Wenn ich ein Modelierungswerkeug, wie Enterprise Architect, verwende, dann nutze ich die darin befindlichen Anforderungslisten.<br />
Wenn es gar ein Content Management System gibt, dann nehme ich das.<br />
Beispielsweise können bei ITIL der Incident Manager seine Anforderungen in ein Ticket System eintragen und an den Problem Manager übergeben.<br />
Oder er eröffnet sofort einen Change Antrag. Auch dies kann über das Tickettool laufen.</p>
<h3>Was will ich zu jeder Anforderung beschreiben?</h3>
<p>Für das Newssystem stelle ich mir vor, dass wir die Anforderungen wie eine Issue List betreiben.<br />
In einer Issue List wird beschrieben was, wie und wann von wem geklärt werden soll.<br />
Unsere Anforderungen beinhalten dann:</p>
<h4>Titel</h4>
<p>Pro Anforderung wird ein relativ eindeutiger Titel erwartet.<br />
<strong>Beispiele:</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">JavaScript wird nicht vorausgesetzt</div>
</li>
</ol>
</div>
<p>oder</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">Redakteur kann nur seine Newseinträge editieren</div>
</li>
</ol>
</div>
<h4>Beschreibung</h4>
<p>Ein Text, vielleicht auch mit Bildern falls es die Anforderung leichter beschreibt, mit dem die Anforderung genauer beschrieben wird.<br />
<strong>Beispiele:</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">JavaScript kann <span class="kw1">in</span> jedem Bereich des Newssystems eingesetzt werden um einzelne Abläufe für den Anwender zu vereinfachen.</div>
</li>
<li class="li1">
<div class="de1">Jede Funktion des Newssystems muss jedoch ohne eingeschaltetes JavaScript durchgeführt werden können. </div>
</li>
<li class="li1">
<div class="de1">Es dürfen hierdurch keine massiven Einschränkungen der Funktionsweise auftreten.</div>
</li>
</ol>
</div>
<p>oder</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">Damit keine fremden Newseinträge verändert werden, dürfen jedem Redakteur nur seine eigenen Newseinträge zur Veränderung angezeigt werden.</div>
</li>
</ol>
</div>
<h4>Betroffene Komponenten</h4>
<p>Wenn eine Anforderung analysiert wurde, ist es voll toll zu wissen welche Komponenten davon betroffen sind. Hier beschreibt man was man alles wie umbauen muss um diese Anforderung zu erfüllen.<br />
<strong>Beispiele:</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">Alle Abläufe, alle Views und Controller, sind so anzupassen dass es eine JavaScript und wenn nötig eine JavaScript freie Version gibt.</div>
</li>
</ol>
</div>
<p>oder</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">Die Selektion der Newseinträge wird im Newsmodel <span class="br0">&#40;</span>siehe XXX<span class="br0">&#41;</span> realisiert.</div>
</li>
</ol>
</div>
<h3>Testfallbeschreibung</h3>
<p>Hab ich heute im ITIL Kurs gelernt. Ist doch wirklich sau cool wenn zu den einzelnen Anforderungen gleich noch die Tests festlegt gelle?</p>
<h3>Abhängig von</h3>
<p>Eine Anforderung kann von vielen anderen Anforderungen abhängig sein.<br />
Beispielsweise kann ein Editor erst seine Newseinträge selektieren, wenn wir in der Lage sind einen Editor im System überhaupt anzulegen.</p>
<h4>Ersteller</h4>
<p>Damit wir wissen, wer diese Anforderung gestellt hat, wird der Name und eventuell eine Kontaktmöglichkeit wie e-Mail, abgelegt.<br />
Dies ist vernünftig, da wir manchmal nachfragen müssen was mit der Anforderung gemeint war.<br />
Es macht das Leben viel einfacher, wenn man nachfragen kann <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>Bearbeiter</h4>
<p>Angabe wer sich zur Zeit um diese Anforderung kümmert. Ich bin ein brutaler Fan davon, jeder Anforderung einen Bearbeiter, oder Owner, zu geben. Dann fühlt sich wenigstens jemand für die arme Anforderung verantwortlich <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>Erstelldatum</h4>
<p>Cool ist, wenn man weiss seit wann eine Anforderung vorhanden ist.<br />
Am Anfang ist das noch ene doofe Information. Wenn wir aber schon ein Newssystem Version 0.87 haben, dann ist es durchaus interessant zu wissen wie lange die Anforderungen so rumdümpeln.</p>
<h4>Status</h4>
<p>Folgenden Status kann eine Anforderung annehmen:</p>
<ul>
<li>Erfasst</li>
<li>Genehmigt</li>
<li>Abgewiesen<br />
    Falls eine Anforderung abgewiesen wurde, wird der Grund dafür im Beschreibungstext erledigt.</li>
<li>Zugewiesen</li>
<li>Abgeschlossen</li>
</ul>
<h4>Abschlussdatum</h4>
<p>Wenn man was fertig gemacht hat, dann ist es schön wenn man das auch mitteilen kann.</p>
<h3>Fazit</h3>
<p>Für die Verwaltung der diversen Anforderungen müssen relativ viele Informationen aufgenommen werden.<br />
Der Aufwand, die Anforderungen zu verwalten, lohnt sich jedoch da man dann einfach weniger vergisst.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/requirements_fuer_newssystem_erfassen/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Entscheidung wie das Newssystem jetzt umgesetzt werden soll</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/entscheidung-wie-das-newssystem-jetzt-umgesetzt-werden-soll</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/entscheidung-wie-das-newssystem-jetzt-umgesetzt-werden-soll#comments</comments>
		<pubDate>Thu, 11 Jun 2009 10:38:26 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Newssystem]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1453</guid>
		<description><![CDATA[Ich habe ja einige Artikel über die Entscheidungsfindung ob wir das Newssystem nun selbst entwickeln, in WordPress als Plugin implementieren oder als externe Komponente an WordPress abinden sollen, geschrieben. Wir hatten sehr viele konstruktive Diskussionen und nun müssen wir uns entscheiden was wir machen wollen. Wenn ihr mich fragt, dann bin ich für eine Eigenentwicklung. [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe ja einige Artikel über die Entscheidungsfindung ob wir das Newssystem nun selbst entwickeln, in WordPress als Plugin implementieren oder als externe Komponente an WordPress abinden sollen, geschrieben.<br />
Wir hatten sehr viele konstruktive Diskussionen und nun müssen wir uns entscheiden was wir machen wollen.</p>
<p>Wenn ihr mich fragt, dann bin ich für eine Eigenentwicklung.<br />
Wir können so ein Werkzeug erstellen, dass genau die Aufgabe der Newsdarstellung durchführt.<br />
In letzter Zeit habe ich mit der Admin-Oberfläche von WordPress diverse Schwierigkeiten.<br />
Ich verliere permanent die Tags, die Serien werden nicht richtig publiziert und die Geschwindigkeit der einzelnen Komponenten ist mir einfach zu langsam.<br />
Falls ihr eine andere Meinung habt und eine andere Variante bevorzugt, dann sagt es bitte.<br />
Ansonsten würde ich empfehlen dieses Thema abzuschließen und nun mit der Umsetzung / Anforderungsdefinition zu beginnen.</p>
<p>Was mein ihr?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/entscheidung-wie-das-newssystem-jetzt-umgesetzt-werden-soll/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Rahmenbedingungen für das Newssystem</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/rahmenbedingungen-fuer-das-newssystem</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/rahmenbedingungen-fuer-das-newssystem#comments</comments>
		<pubDate>Thu, 11 Jun 2009 03:18:51 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[rahmenbedingungen]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1404</guid>
		<description><![CDATA[Und noch ein allgemeiner Artikel zum Newssystem. Die letzte Woche hatte ich sehr angeregte Diskussionen (on- und offline) mit einigen Menschen bezüglich der Softwareerstellung. Ich möchte noch ein paar Rahmenbedingungen niederschreiben, die mir im Newssystem wichtig sind. Lauffähig nur mit HTML Das Newssystem muss so gestaltet sein, dass kein JavaScript, Flash usw. notwendig ist. Ich [...]]]></description>
			<content:encoded><![CDATA[<p>Und noch ein allgemeiner Artikel zum Newssystem.<br />
Die letzte Woche hatte ich sehr angeregte Diskussionen (on- und offline) mit einigen Menschen bezüglich der Softwareerstellung.<br />
Ich möchte noch ein paar Rahmenbedingungen niederschreiben, die mir im Newssystem wichtig sind.</p>
<h3>Lauffähig nur mit HTML</h3>
<p>Das Newssystem muss so gestaltet sein, dass kein JavaScript, Flash usw. notwendig ist. Ich möchte damit erreichen, dass das System auch auf Links und anderen Browsern, sowie auf Browsern auf denen alles abgeschalten ist, funktioniert.</p>
<h3>Lauffähig auch ohne Cookies</h3>
<p>Ok, wenn nur HTML zugelassen ist, dann sind Cookies natürlich auch nicht möglich.<br />
Bei z.B. Links werden Cookies nicht gespeichert. WordPress zum Beispiel benötigt Cookies für das Sessionhandling.<br />
Da müssen wir uns was anderes überlegen.</p>
<h3>JavaScript und Cookies für Vereinfachung</h3>
<p>Falls ein User Cookies und JavaScript eingeschalten hat, dürfen wir das natürlich verwenden.<br />
Das bedeutet, dass falls diese Funktionalität aktiviert ist, dann darf das Newssystem auch Features freigeben die das Leben leichter machen.<br />
Falls wir doch auf WordPress oder ähnliches aufsetzen, müssen die bisherigen Einschränkungen explizit akzeptiert werden.</p>
<h3>Eingabeprozesse sollen an User anpassbar sein.</h3>
<p>Wenn ein User gerne zuerst seinen Text und dann seinen Titel eingeben will, oder wenn er zuerst das Ende- und dann das Startdatum eingeben will, dann muss das möglich sein.<br />
Die Controller und Views müssen entsprechend flexibel gestaltet werden.</p>
<h3>Exportfunktionen</h3>
<p>Falls die News in einem Fremdsystem benötigt werden, muss es möglich sein die News in mindestens folgenden Formaten ausgelesen werden können:</p>
<ul>
<li>rss feeds</li>
<li>Formatiertes HTML (logisch oder?)</li>
<li>Kommaseparierte Werte (CSV comma seperated values)</li>
<li>XML</li>
</ul>
<h3>Importfunktionen</h3>
<p>Die News müssen nicht nur über die Oberfläche, sondern auch als css, XML und csv eingelesen werden können.<br />
Frage: Wäre es nicht cool auch über rss feeds News einzulesen?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/rahmenbedingungen-fuer-das-newssystem/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Wer sind unsere Kunden für das Newssystem?</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/wer-sind-unsere-kunden-fuer-das-newssystem</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/wer-sind-unsere-kunden-fuer-das-newssystem#comments</comments>
		<pubDate>Tue, 09 Jun 2009 22:28:18 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[kunden]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[projekt]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1418</guid>
		<description><![CDATA[Dirk hat sinnvollerweise nachgefragt wer eigentlich unser Newssystem kaufen soll. Ich habe da im Kommentar so lapidar gesagt, dass Ute, Jozo und ich die Kunden sind. Im Prinzip stimmt das auch. Ute hat bei miradlo im Moment eine kleine Eigenkonstruktion im Einsatz mit der unsere Kunden ihre News verwalten können. Die Kunden sind voll glücklich, [...]]]></description>
			<content:encoded><![CDATA[<p>Dirk hat sinnvollerweise nachgefragt wer eigentlich unser Newssystem kaufen soll.<br />
Ich habe da im Kommentar so lapidar gesagt, dass Ute, Jozo und ich die Kunden sind.<br />
Im Prinzip stimmt das auch.<br />
Ute hat bei miradlo im Moment eine kleine Eigenkonstruktion im Einsatz mit der unsere Kunden ihre News verwalten können.<br />
Die Kunden sind voll glücklich, da dass Newssystem wirklich minimal ist und nur das macht, was ein Newssystem machen soll.<br />
Es generiert News.<br />
Wenn wir das Newssystem jetzt &#8220;in Groß&#8221; bauen, dann soll es einfach ein bisschen Mächtiger sein und ein wenig einfacher zum Verwenden sein.<br />
Ute und ich wollen also das neue Newssystem für weitere Kunden, aber auch für die bestehenden Kunden einsetzen.<br />
Vermutlich werden wir bei den bestehenden Kunden kein großes Geld damit verdienen, ihnen aber ein angenehmes Update liefern. Damit sind die Kunden mehr zufrieden und kaufen eventuell ein paar mehr Dienste bei miradlo.<br />
Außerdem werden sie vielleicht miradlo weiterempfehlen und so ist es eine schöne Werbemaßnahme so ein Tool zu bauen.<br />
Ganz nebenbei lernt Jozo, Ute, die Menschen die hier mitmachen und ich eine ganze Menge.<br />
Jeder soll das Teil nachher einsetzen können. Also so ein bisschen Open Source Gedanke gelle?<br />
Deshalb möchte ich im Moment die Definition, wer unsere Kunden sind, so festlegen:<br />
miradlo, und somit Ute, ist Hauptkunde da wir das Bedürfnis haben ein etwas passenderes Newssystem für unsere Kunden anbieten zu können.<br />
Dirk ist auch Kunde da du, lieber Dirk, ja im Moment so fleißig mitmachst und somit die Gestaltung des Systems mitbestimmst.<br />
Der Entscheid, was in das System reinkommt und was nicht, wird von miradlo gefällt. Wir werden auf alle Fälle die Wünsche von Dirk, und falls noch weitere Personen sich einklinken auch deren Wünsche, mit einbauen.</p>
<h3>Klingt das gut?</h3>
<p>Was haltet ihr davon?<br />
Wäre das für unser Newssystem eine passende Stakeholder Analyse oder habe ich alles voll falsch verstanden?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/wer-sind-unsere-kunden-fuer-das-newssystem/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
	</channel>
</rss>

