<?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; IT</title>
	<atom:link href="http://www.baldenhofer.eu/blog/category/it/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>Weight-Modell backen</title>
		<link>http://www.baldenhofer.eu/blog/it/weight-modell-backen</link>
		<comments>http://www.baldenhofer.eu/blog/it/weight-modell-backen#comments</comments>
		<pubDate>Tue, 25 Oct 2011 22:53:01 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[model]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2221</guid>
		<description><![CDATA[Nachdem die Personen nun ein Modell (user.php) haben, wollen wir noch die Gewichtsangaben in ein Modell gießen. Dazu gehst du wieder in das Verzeichnis /app und rufst wieder ../cake/console/cake bake auf. Welcome to CakePHP v1.3.10 Console --------------------------------------------------------------- App : app Path: /home/roland/workspace/weightapplication/app --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem die Personen nun ein Modell (user.php) haben, wollen wir noch die Gewichtsangaben in ein Modell gießen.<br />
Dazu gehst du wieder in das Verzeichnis <strong>/app</strong> und rufst wieder <span class=“code“>../cake/console/cake bake</span> auf.</p>
<pre class=“code“>
Welcome to CakePHP v1.3.10 Console

---------------------------------------------------------------

App : app

Path: /home/roland/workspace/weightapplication/app

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

> M   

---------------------------------------------------------------

Bake Model

Path: /home/roland/workspace/weightapplication/app/models/

---------------------------------------------------------------

Use Database Config: (default/test) 

[default] > 

Possible Models based on your current database:

1. User

2. Weight

Enter a number from the list above,

type in the name of another model, or 'q' to exit  

[q] > 2
</pre>
<p>Diesmal bin ich gleich bis zu den Modellen durchgegangen und gebe die 2 für Weight ein.</p>
<pre class=“code“>
[q] > 2

A displayField could not be automatically detected

would you like to choose one? (y/n) 

> y

1. id

2. user_id

3. weight

4. created

Choose a field from the options above:  

> 3
</pre>
<p>Diesmal erkennt Cake Console nicht welche Felder wir später anzeigen lassen wollen. Wir wählen das Gewicht.<br />
Danach generieren wir wieder die Validierungen.</p>
<p>Für id:</p>
<pre class=“code“>
> 3

Would you like to supply validation criteria 

for the fields in your model? (y/n) 

[y] > 

Field: id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 
</pre>
<p>Für User-ID</p>
<pre class=“code“>

[29] > 

Field: user_id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[20] > 
</pre>
<p>Hier wollen wir keine weiteren Validierungen.<br />
Für unser Gewicht wollen wir notempty verwenden:</p>
<pre class=“code“>
[n] > 

Field: weight

Type: float

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 19
</pre>
<p>created lassen wir wie es ist:</p>
<pre class=“code“>
[n] > 

Field: created

Type: timestamp

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 
</pre>
<p>Die Relation zur User-Tabelle ist eine BelongsTo-Relation. Die werden wir mit den folgenden Einträgen erstellen:</p>
<pre class=“code“>
[29] > 

Would you like to define model associations

(hasMany, hasOne, belongsTo, etc.)? (y/n) 

[y] > 

One moment while the associations are detected.

---------------------------------------------------------------

Please confirm the following associations:

---------------------------------------------------------------

Weight belongsTo User? (y/n) 

[y] >
</pre>
<p>Weitere Relationen brauchen wir nicht.<br />
Es wird uns nochmal angezeigt wie das Modell wohl aussehen wird.</p>
<pre class=“code“>
[y] > 

Would you like to define some additional model associations? (y/n) 

[n] > 

---------------------------------------------------------------

The following Model will be created:

---------------------------------------------------------------

Name:       Weight

DB Table:   `weights`

Validation: Array

(

    [user_id] => Array

        (

            [numeric] => numeric

        )

    [weight] => Array

        (

            [notempty] => notempty

        )

)

Associations:

	Weight belongsTo User

---------------------------------------------------------------

Look okay? (y/n) 

[y] > 
</pre>
<p>Auch die Simpletests können wir vorbereiten lassen und fertig ist die Installation.</p>
<pre code=“class“>
[y] > 

Baking model class for Weight...

Creating file /home/roland/workspace/weightapplication/app/models/weight.php

Wrote `/home/roland/workspace/weightapplication/app/models/weight.php`

SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n) 

[y] > 

You can download SimpleTest from http://simpletest.org

Baking test fixture for Weight...

Creating file /home/roland/workspace/weightapplication/app/tests/fixtures/weight_fixture.php

Wrote `/home/roland/workspace/weightapplication/app/tests/fixtures/weight_fixture.php`

Bake is detecting possible fixtures..

Creating file /home/roland/workspace/weightapplication/app/tests/cases/models/weight.test.php

Wrote `/home/roland/workspace/weightapplication/app/tests/cases/models/weight.test.php`

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

> 
</pre>
<p>So, jetzt haben wir für die Tabellen users und weights angelegt. </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/weight-modell-backen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User-Modell für den Datenbankzugriff in CakePHP backen</title>
		<link>http://www.baldenhofer.eu/blog/it/user-modell-fur-den-datenbankzugriff-in-cakephp-backen</link>
		<comments>http://www.baldenhofer.eu/blog/it/user-modell-fur-den-datenbankzugriff-in-cakephp-backen#comments</comments>
		<pubDate>Sun, 23 Oct 2011 22:49:40 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[model]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2218</guid>
		<description><![CDATA[In CakePHP gibt es Konsoleapplikationen mit denen du ohne großen Aufwand Modelle, Controller und Views erstellen kannst. Für unsere Gewichtsapplikation werden wir zuerst die Modelle erstellen. Wechsle in das Verzeichnis /app der Gewichtsapplikation. Dort rufst du mit ../cake/console/cake bake die Bäckerei auf. Wie du sehen kannst, sind die Konsoleanwendungen von Cake im Verzeichnis /cake/console hinterlegt. [...]]]></description>
			<content:encoded><![CDATA[<p>In CakePHP gibt es Konsoleapplikationen mit denen du ohne großen Aufwand Modelle, Controller und Views erstellen kannst.<br />
Für unsere Gewichtsapplikation werden wir zuerst die Modelle erstellen.<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/modelle_anlegen.png"><img class="alignnone size-full wp-image-2219" title="modelle_anlegen" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/modelle_anlegen.png" alt="Komponentenübersicht Modelle anlegen" width="696" height="873" /></a><br />
Wechsle in das Verzeichnis <strong>/app</strong> der Gewichtsapplikation.<br />
Dort rufst du mit <span class="“code“">../cake/console/cake bake</span> die Bäckerei auf.<br />
Wie du sehen kannst, sind die Konsoleanwendungen von Cake im Verzeichnis <strong>/cake/console</strong> hinterlegt. Schau einfach mal rein.<br />
Wenn du den Aufruf durchgeführt hast, erscheint folgende Auswahl:</p>
<pre class="“code“">Welcome to CakePHP v1.3.10 Console

---------------------------------------------------------------

App : app

Path: /home/roland/workspace/weightapplication/app

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

&gt;</pre>
<p>Hier kannst du auswählen was du backen willst.<br />
Wir wollen zuerst unsere Modelle backen, also geben wir M ein.<br />
Die nächste Frage lautet ob wir unsere Modelle anhand der Definitionen der Default-Database-Connection oder der Test-Connection erstellen wollen.</p>
<pre class="“code“">&gt; M       

---------------------------------------------------------------

Bake Model

Path: /home/roland/workspace/weightapplication/app/models/

---------------------------------------------------------------

Use Database Config: (default/test) 

[default] &gt;</pre>
<p>Hier kannst du return drücken, da wir die default-Konfiguration nehmen wollen.<br />
Als nächstes werden die Tabellen, die derzeitig in der Datenbank definiert sind, angezeigt:</p>
<pre class="“code“">[default] &gt; 

Possible Models based on your current database:

1. User

2. Weight

Enter a number from the list above,

type in the name of another model, or 'q' to exit  

[q] &gt;</pre>
<p>Jetzt lassen wir die Modelle erstellen. Du gibst hierfür die 1 und 2 ein.<br />
Fangen wir also mit 1 an:</p>
<pre class="“code“">[q] &gt; 1   

Would you like to supply validation criteria 

for the fields in your model? (y/n) 

[y] &gt;</pre>
<p>Die Modell-Attribute können mit Standard-Validierungen überprüft werden.<br />
Wir wollen das der Name und die E-Mail Adresse korrekt eingegeben werden.<br />
Also sagen wir ja (return)<br />
Das erste Feld ist die id.<br />
Hier werden folgende Optionen angeboten:</p>
<pre class="“code“">[y] &gt; 

Field: id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] &gt;</pre>
<p>Mit 29 (also return) geben wir an, dass wir keine besondere Überprüfung für dieses Feld durchführen wollen.</p>
<p>Als nächstes wird das Feld name angezeigt.</p>
<pre class="“code“">[29] &gt; 

Field: name

Type: string

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[19] &gt;</pre>
<p>Die Cake Console ist ziemlich clever und schlägt und notempty vor. Also machen wir das so.<br />
Als nächstes fragt Die Cake Console uns ob wir weitere Überprüfungen durchführen wollen. Hier können wir vorerst mit Return (also nein) weitergehen.</p>
<pre class="“code“">[n] &gt; 

Field: email

Type: string

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[10] &gt;</pre>
<p>Das nächste Feld ist die E-Mail Adresse. Hier erkennt Cake Console dass wir eine valide E-Mail Adresse eingeben wollen (also irgendwas mit BLA@BLUB.LULL).<br />
Wir akzeptieren die 10.<br />
Die Frage, ob wir noch weitere Validierungen angeben wollen, beantworten wir diesmal mit y.<br />
Jetzt geben wir noch isUnique als Validierungsregel an. Damit wird erreicht, dass jede E-Mail Adresse im System einmalig ist.</p>
<pre class="“code“">[10] &gt; isUnique

Would you like to add another validation rule? (y/n) 

[n] &gt;</pre>
<p>Jetzt können wir wieder return drücken.</p>
<p>Das letzte Feld, mit zu überprüfenden Eigenschaften, ist das Passwort.<br />
Hier können wir z.B. eine Minimallänge vorgeben.</p>
<pre class="“code“">[19] &gt; 16

Would you like to add another validation rule? (y/n) 

[n] &gt;</pre>
<p>Die Beschreibung lassen wir optional.</p>
<pre class="“code“">[n] &gt; 

Field: description

Type: text

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] &gt;</pre>
<p>Als nächstes werden wir gefragt ob wir Verknüpfungen zu anderen Modellen haben wollen.<br />
Hier sagen wir ja, denn wir wollen unsere Personen mit vielen Gewichtsangaben versehen.</p>
<pre class="“code“">[29] &gt; 

Would you like to define model associations

(hasMany, hasOne, belongsTo, etc.)? (y/n) 

[y] &gt;</pre>
<p>Wenn du return drückst wird die weights Tabelle angezeigt. Diese beinhaltet eine user_id und kann daher eine Relation zu unserer users-Tabelle haben.</p>
<pre class="“code“">[y] &gt; 

One moment while the associations are detected.

---------------------------------------------------------------

Please confirm the following associations:

---------------------------------------------------------------

User hasMany Weight? (y/n) 

[y] &gt;</pre>
<p>Wir sagen bei dieser Frage ja (return)</p>
<pre class="“code“">[y] &gt; 

Would you like to define some additional model associations? (y/n) 

[n] &gt;</pre>
<p>Hier bleiben wir bei nein.<br />
Als letztes wird uns angezeigt was wir da so zusammenkonfiguriert haben:</p>
<pre class="“code“">[n] &gt; 

---------------------------------------------------------------

The following Model will be created:

---------------------------------------------------------------

Name:       User

DB Table:   `users`

Validation: Array

(

    [name] =&gt; Array

        (

            [notempty] =&gt; notempty

        )

    [email] =&gt; Array

        (

            [email] =&gt; email

            [isUnique] =&gt; isUnique

        )

    [password] =&gt; Array

        (

            [minlength] =&gt; minlength

        )

)

Associations:

	User hasMany Weight

---------------------------------------------------------------

Look okay? (y/n) 

[y] &gt;</pre>
<p>Das sieht gut aus! Also sagen wir ja.</p>
<pre class="“code“">[y] &gt; 

Baking model class for User...

Creating file /home/roland/workspace/weightapplication/app/models/user.php

Wrote `/home/roland/workspace/weightapplication/app/models/user.php`

SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n) 

[y] &gt;</pre>
<p>Wie du sehen kannst, wird das Modell user.php in das Verzeichnis /app/models/users.php geschrieben.<br />
Die Frage ob wir die Unit-Tests für unser Modell erstellen wollen, können wir mit ja beantworten. Dann können wir später mit SimpleTest alles durchtesten.</p>
<p>Jetzt wird alles fertiggestellt und wir kommen wieder zur Startseite.</p>
<pre class="“code“">[y] &gt; 

You can download SimpleTest from http://simpletest.org

Baking test fixture for User...

Creating file /home/roland/workspace/weightapplication/app/tests/fixtures/user_fixture.php

Wrote `/home/roland/workspace/weightapplication/app/tests/fixtures/user_fixture.php`

Bake is detecting possible fixtures..

Creating file /home/roland/workspace/weightapplication/app/tests/cases/models/user.test.php

Wrote `/home/roland/workspace/weightapplication/app/tests/cases/models/user.test.php`

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

&gt;</pre>
<p>Hier brechen wir mit Q ab und schauen uns zuerst unser Modell an.<br />
Gehe zur Validierung des Passworts und ändere die Validierung so ab, dass wir eine Minimallänge von sechs Zeichen vorsehen:</p>
<pre class="“code“">		'password' =&gt; array(

			'minlength' =&gt; array(

				'rule' =&gt; array('minlength', 6),

				//'message' =&gt; 'Your custom message here',

				//'allowEmpty' =&gt; false,

				//'required' =&gt; false,

				//'last' =&gt; false, // Stop validation after this rule

				//'on' =&gt; 'create', // Limit validation to 'create' or              'update' operations

			),</pre>
<p>Alle anderen vorgefertigten Definitionen lassen wir vorerst einfach mal so stehen.<br />
Das Modell ist jetzt erst einmal ausreichend konfiguriert.</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/user-modell-fur-den-datenbankzugriff-in-cakephp-backen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gewichtsapplikation Datenbanktabellen anlegen</title>
		<link>http://www.baldenhofer.eu/blog/it/gewichtsapplikation-datenbanktabellen-anlegen</link>
		<comments>http://www.baldenhofer.eu/blog/it/gewichtsapplikation-datenbanktabellen-anlegen#comments</comments>
		<pubDate>Sat, 22 Oct 2011 06:49:33 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[tabellen]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2213</guid>
		<description><![CDATA[Hurra! Gestern hatten wir Go-Live und jetzt kann ich die Arbeitszeiten wieder etwas herunterschrauben. Damit kann ich endlich wieder ein bisschen an der CakePHP Grundlagen-Applikation Gewichtsapplikation weiterbasteln Heute werden wir die Datenbanktabellen für die Applikation anlegen. Wir benötigen zwei Tabellen. Eine Tabelle, in der die Namen der einzelnen Teilnehmer und eine Beschreibung abgelegt werden und [...]]]></description>
			<content:encoded><![CDATA[<p>Hurra!<br />
Gestern hatten wir Go-Live und jetzt kann ich die Arbeitszeiten wieder etwas herunterschrauben. Damit kann ich endlich wieder ein bisschen an der CakePHP Grundlagen-Applikation Gewichtsapplikation weiterbasteln <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Heute werden wir die Datenbanktabellen für die Applikation anlegen.<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellenkonfiguration.png"><img class="alignnone size-full wp-image-2215" title="tabellenkonfiguration" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellenkonfiguration.png" alt="Komponentenansicht der Tabellenkonfiguration" width="696" height="873" /></a><br />
Wir benötigen zwei Tabellen. Eine Tabelle, in der die Namen der einzelnen Teilnehmer und eine Beschreibung abgelegt werden und eine Tabelle in der die Gewichtsangaben hinterlegt sind.<br />
Die beiden Tabellen sehen irgendwie wie folgt aus:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellen.png"><img class="alignnone size-full wp-image-2216" title="tabellen" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellen.png" alt="Die Tabellen und ihre Relationen" width="299" height="151" /></a><br />
Um die Datenbank zu konfigurieren habe ich ein kleines SQL-Script geschrieben:</p>
<pre class="“code“"># This SQL-commands create the tables for weightapplication.
drop database weightapplication;
create database weightapplication;
use weightapplication;
create table users (  id          int(11) not null auto_increment primary key \
                    , name        varchar(255) not null \
                    , email       varchar(255) not null \
                    , password    varchar(32) not null \
                    , description text null \
                   );
create table weights (  id          int(11) not null auto_increment primary key \
                      , user_id     int(11) not null
                      , weight      float not null \
                      , created     timestamp NOT NULL DEFAULT now() \
                     );</pre>
<p>Dieses Script habe ich unter dem Namen <strong>create_database.sql</strong> im Verzeichnis <strong>/app/config</strong> abgelegt.<br />
Jetzt wechsle in das Verzeichnis <strong>/app/config</strong> und führe den Befehl <span class="“code“">mysql -uroot -p &lt; create_database.sh</span> aus. Du wirst nach dem Passwort gefragt, dass du für deinen MySQL-Server benötigst.<br />
Das Script löscht eine zuvor angelegte Datenbank, legt die weightapplication Datenbank an und erstellt die Tabellen für Personen (users) und die Gewichtsangaben.</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/gewichtsapplikation-datenbanktabellen-anlegen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Express Queue und das Product-Backlog zusammengestellt</title>
		<link>http://www.baldenhofer.eu/blog/it/express-queue-und-das-product-backlog-zusammengestellt</link>
		<comments>http://www.baldenhofer.eu/blog/it/express-queue-und-das-product-backlog-zusammengestellt#comments</comments>
		<pubDate>Wed, 19 Oct 2011 04:15:28 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[KANBAN]]></category>
		<category><![CDATA[product-backlog]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2209</guid>
		<description><![CDATA[Bevor wir die ganze Product-Backlog Queue ansehen, möchte ich eine letzte Queue einführen. Für die Abwicklung von Produktionsproblemen verwende ich gerne eine Express-Queue. In die kann man immer, wenn die Welt untergeht, eine Story einstellen. Falls ein ganz wichtiger Projektleiter kommt und unbedingt an allen Standard-Projekten vorbei muss, können seine Aufgaben dort auch eingestellt werden. [...]]]></description>
			<content:encoded><![CDATA[<p>Bevor wir die ganze Product-Backlog Queue ansehen, möchte ich eine letzte Queue einführen.<br />
Für die Abwicklung von Produktionsproblemen verwende ich gerne eine Express-Queue. In die kann man immer, wenn die Welt untergeht, eine Story einstellen.<br />
Falls ein ganz wichtiger Projektleiter kommt und unbedingt an allen Standard-Projekten vorbei muss, können seine Aufgaben dort auch eingestellt werden. Er muss dafür jedoch unterschreiben, dass er sich bewusst ist das alle anderen Elemente nicht bearbeitet werden.<br />
Dies muss er dann allen anderen Projektleitern erklären. Im normalen Leben macht er das einmal und danach haben ihn die Kollegen darüber informiert dass sein Verhalten nicht tragbar ist <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Die Product-Backlog Queue sieht nun wie folgt aus:</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Product-Backlog1.png"><img class="alignnone size-full wp-image-2211" title="Product-Backlog" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Product-Backlog1.png" alt="Product Backlog mit Queues" width="204" height="645" /></a></p>
<p>Die Queue kann theoretisch beliebig viele Eintragungen beinhalten. Ich schlage jedoch vor, dass hier auch eine Anzahl vereinbart werden sollte. Wenn Plätze frei werden, kann wieder verhandelt werden.<br />
So muss man nicht alles auf einmal beschreiben, kann zu gegebener Zeit entsprechend handeln und bleibt agil.</p>
<p>Mit diesen Werkzeugen kommt man schon ziemlich weit. Natürlich müsst ihr diese Vorschläge bei euch entsprechend anpassen. Es ergibt keinen Sinn, meine Vorschläge einfach nur zu übernehmen. Sie müssen auf die jeweilige Gegebenheit angepasst werden.</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/express-queue-und-das-product-backlog-zusammengestellt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maintenance Queue im Product Backlog</title>
		<link>http://www.baldenhofer.eu/blog/it/maintenance-queue-im-product-backlog</link>
		<comments>http://www.baldenhofer.eu/blog/it/maintenance-queue-im-product-backlog#comments</comments>
		<pubDate>Sun, 16 Oct 2011 22:21:00 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[KANBAN]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2206</guid>
		<description><![CDATA[Die Entwicklung hat von der Standard-Queue noch nichts. Denn ihre Wartungsarbeiten werden immer noch nicht berücksichtigt. Die bösen Projektleiter kippen nur Features ein, die den Kunden etwas bringen. Die notwendigen Wartungsarbeiten werden immer noch ignoriert. Das müssen wir ändern. Wir erstellen eine zweite Queue und nennen sie Maintenance Queue. Dort fügt die Entwicklung alle Tätigkeiten [...]]]></description>
			<content:encoded><![CDATA[<p>Die Entwicklung hat von der Standard-Queue noch nichts. Denn ihre Wartungsarbeiten werden immer noch nicht berücksichtigt. Die bösen Projektleiter kippen nur Features ein, die den Kunden etwas bringen. Die notwendigen Wartungsarbeiten werden immer noch ignoriert.</p>
<h3>Das müssen wir ändern.</h3>
<p>Wir erstellen eine zweite Queue und nennen sie Maintenance Queue. Dort fügt die Entwicklung alle Tätigkeiten ein, die irgendwann einmal gemacht werden müssen.<br />
Jetzt einigen wir uns noch darauf, dass wir z.B. drei Aufgaben aus der Standard-Queue nehmen und danach eine Aufgabe aus der Maintenance Queue.<br />
Dies legen wir gemeinsam fest. Das bedeutet auch, dass jede vierte Aufgabe wirklich eine Wartungsaufgabe ist und durchgeführt werden muss. So entlasten wir unsere Diskussionen warum die Wartungsarbeiten immer verschoben werden. Wir können unsere Umgebung stabilisieren und werden insgesamt schneller und stabiler.<br />
Wichtig ist nur, dass wir beim täglichen Arbeiten uns an unsere Vorgehensweise halten und grundsätzlich auch Maintenance Aufgaben abarbeiten.<br />
Hier muss das Management zustimmen, dass ihnen diese Abläufe wichtig sind.</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/maintenance-queue-im-product-backlog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product Backlog Queue</title>
		<link>http://www.baldenhofer.eu/blog/it/product-backlog-queue</link>
		<comments>http://www.baldenhofer.eu/blog/it/product-backlog-queue#comments</comments>
		<pubDate>Fri, 14 Oct 2011 22:17:56 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[KANBAN]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2203</guid>
		<description><![CDATA[Bisher habe ich nur den eigentlichen Entwicklungsprozess beschrieben. Die unterschiedlichen Projekte müssen sich jedoch irgendwie einigen können, welche Stories wann umgesetzt werden. Eine Möglichkeit ist nach dem Motto vorzugehen „wer am lautesten brüllt bekommt zuerst“. Diese Priorisierung hat jedoch den Nachteil, dass nach einiger Zeit alle nur noch brüllen und unzufrieden sind. Weiter ist diese [...]]]></description>
			<content:encoded><![CDATA[<p>Bisher habe ich nur den eigentlichen Entwicklungsprozess beschrieben. Die unterschiedlichen Projekte müssen sich jedoch irgendwie einigen können, welche Stories wann umgesetzt werden.<br />
Eine Möglichkeit ist nach dem Motto vorzugehen „wer am lautesten brüllt bekommt zuerst“. Diese Priorisierung hat jedoch den Nachteil, dass nach einiger Zeit alle nur noch brüllen und unzufrieden sind. Weiter ist diese Vorgehensweise für die Firma auf Dauer massiv schädlich.<br />
Die Projektleiter gewöhnen sich an, mit ausgefahrenen Ellenbogen durch die Firma zu schlendern. Das mittlere Management wird sich angewöhnen nur nach irgendeinem definierten Prozess arbeiten entgegenzunehmen.<br />
Die Mitarbeiter werden nur noch an Aufgaben arbeiten, die von Projekten vorgegeben werden. Wichtige Korrekturen an der Infrastruktur, wie Wartung, OS-Upgrade, Testoptimierung, fallen weg.<br />
Die ganze Unternehmung bremst sich selbst aus. Sinnvoller finde ich ist es, wenn die Projektleiter zusammenarbeiten und gemeinsam überlegen wie die einzelnen Artefakte erarbeitet werden können. So entstehen Synergien und die Projekte können schneller, und vor allem sicherer, durchgeführt werden.</p>
<h3>Ich schmeiße die Priorisierung weg</h3>
<p>Um schneller und besser zu werden schlage ich vor, dass die unterschiedlichen Projektpriorisierungen ersteinmal weggeworfen werden. Wir definieren einfach einmal, dass jedes zur Zeit aktive Projekt wichtig ist. Das spart uns mindestens fünf Meetings an denen wir diskutieren warum Karl-Heinz sein Projekt wichtiger ist als meins.</p>
<h3>So, das wäre geklärt.</h3>
<p>Als nächstes legen wir unsere Projektpläne zusammen und schauen mal was von welchem Projekt wann benötigt wird. Und dann einigen wir uns darauf, dass z.B. vier Elemente von Karl-Heinz seinem Projekt und drei von meinem Projekt gestartet werden sollen.<br />
Also ist unsere Requirements-Queue gefüllt und wir diskutieren die weiteren Schritte.<br />
Da es keine Priorisierung mehr gibt, arbeiten wir mit einem FIFO (First In-First Out) Prinzip.<br />
Das bedeutet, wir können uns eine Queue bauen in die alle Elemente der Reihenfolge nach eingestellt werden. Die einzelnen Elemente sollten ungefähr gleichgroß sein, damit die Taktung klar ist. Falls das nicht möglich ist, kann z.B. bestimmt werden, dass mein Monsterpaket durchgewuchtet wird und dafür drei Pakete von Karl-Heinz nachkommen.</p>
<p>Wir haben jetzt nur noch eine Queue für alle Projekte und die Priorisierung wird durch die Reihenfolge der eingefügten Aufgaben festgelegt. Wir arbeiten als Projektleiter wieder miteinander und nicht gegeneinander. Die internen Reibereihen können reduziert werden.</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/product-backlog-queue/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weitere Stories aufnehmen</title>
		<link>http://www.baldenhofer.eu/blog/it/weitere-stories-aufnehmen</link>
		<comments>http://www.baldenhofer.eu/blog/it/weitere-stories-aufnehmen#comments</comments>
		<pubDate>Wed, 12 Oct 2011 22:15:25 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[KANBAN]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2200</guid>
		<description><![CDATA[Im Artikel Begrenzen der aktiven Arbeitspakete habe ich skizziert, dass unserer Requirments-Engineers nur an maximal sieben „Baustellen“ gleichzeitig arbeiten sollen. Jetzt ist aber mindestens eine der Stories fertig und auf Done gesetzt. Also soll die Entwicklung die Story entgegennehmen und daran arbeiten. Bei der Entwicklung habe ich mir überlegt, dass gleichzeitig entwickelt, die Tests beschrieben [...]]]></description>
			<content:encoded><![CDATA[<p>Im Artikel <a href="http://www.baldenhofer.eu/blog/it/begrenzen-der-aktiven-arbeitspakete">Begrenzen der aktiven Arbeitspakete </a>habe ich skizziert, dass unserer Requirments-Engineers nur an maximal sieben „Baustellen“ gleichzeitig arbeiten sollen. Jetzt ist aber mindestens eine der Stories fertig und auf Done gesetzt. Also soll die Entwicklung die Story entgegennehmen und daran arbeiten.<br />
Bei der Entwicklung habe ich mir überlegt, dass gleichzeitig entwickelt, die Tests beschrieben und die Dokumentation erarbeitet werden soll. Also nehmen wir die Story 1 und splitten sie auf die einzelnen Prozessschritte.</p>
<div id="attachment_2201" class="wp-caption alignnone" style="width: 734px"><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Gewichtung-Requirements-Dev.png"><img class="size-full wp-image-2201" title="Gewichtung-Requirements-Dev" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Gewichtung-Requirements-Dev.png" alt="" width="724" height="589" /></a><p class="wp-caption-text">Gewichtung der Requirements- und Development Queue</p></div>
<p>Die Entwicklung habe ich auf maximal 14 gleichzeitige Tätigkeiten aufgeteilt. Im Moment sind drei Tätigkeiten eingelastet. Die Entwicklung kann also noch einige Tätigkeiten annehmen und bearbeiten.<br />
Bei der Requirement-Crew hat sich auch etwas getan. Da Story 1 von Done zur Entwicklung übernommen wurde, kann eine weitere Story besprochen und bearbeitet werden. Wir bekommen also Story 8 übergeben. Weitere Stories sind nicht erlaubt, da Story 2 und 4 bereits auf Done stehen und nicht weitergeleitet werden können.</p>
<h3>Warum ist das jetzt toller als vorher?</h3>
<p>Die Requirement-Crew kann sich vollumfänglich auf maximal sieben unterschiedliche Aufgaben einstellen. Wenn wir drei Mitarbeiter in dieser Crew haben, bedeutet das über den Tag verteilt maximal ein Wechsel von 2-3 unterschiedlichen Aufgaben. Diese können hochkonzentriert angegangen und gelöst werden.<br />
„Weniger ist mehr“ wird helfen, dass die Requirements sinnvoll beschrieben und dokumentiert werden. Es werden weniger Rückfragen entstehen und die Zeit pro einzelner Aufgabe wird reduziert.</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/weitere-stories-aufnehmen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Begrenzen der aktiven Arbeitspakete</title>
		<link>http://www.baldenhofer.eu/blog/it/begrenzen-der-aktiven-arbeitspakete</link>
		<comments>http://www.baldenhofer.eu/blog/it/begrenzen-der-aktiven-arbeitspakete#comments</comments>
		<pubDate>Mon, 10 Oct 2011 22:10:41 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[KANBAN]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2196</guid>
		<description><![CDATA[Bei der Planung von parallel laufenden Projekten werden Mitarbeiter häufig gleichzeitig auf mehrere Projekte angesetzt. Die einzelnen Projektleiter versprechen sich davon, dass ihre Arbeiten umgesetzt werden, denn ihr Plan sagt ja aus dass Story X in diesem Monat umgesetzt werden muss. Am Ende des Monats sind dann sowohl der Projektleiter, der betroffene Mitarbeiter und die [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Planung von parallel laufenden Projekten werden Mitarbeiter häufig gleichzeitig auf mehrere Projekte angesetzt. Die einzelnen Projektleiter versprechen sich davon, dass ihre Arbeiten umgesetzt werden, denn ihr Plan sagt ja aus dass Story X in diesem Monat umgesetzt werden muss. Am Ende des Monats sind dann sowohl der Projektleiter, der betroffene Mitarbeiter und die Stakeholder unzufrieden, da die Arbeiten nicht abgeschlossen werden konnten.</p>
<h3>Was ist passiert?</h3>
<p>Wenn ein Mitarbeiter an einem Tag unterschiedliche Themengebiete bearbeiten muss, muss er / sie sich umstellen. Themen sind hier:<br />
Eventuell muss eine andere Entwicklungsumgebung gestartet werden</p>
<ul>
<li>Der Mitarbeiter muss sich in das Thema einlesen und die Lösung überdenken</li>
</ul>
<ul>
<li>Der Mitarbeiter muss sich selbst auf das neue Thema einlassen</li>
</ul>
<ul>
<li>Eventuell müssen Absprachen mit weiteren Mitarbeitern geführt werden um den aktuellen Stand zu erkennen. Damit werden die weiteren Mitarbeiter aus der Arbeit gerissen und werden auch langsamer.</li>
</ul>
<p>Dieses Umstellen von einer Tätigkeit auf eine Neue Tätigkeit wird im verarbeitenden Gewerbe als Rüstzeit beschrieben. Wenn eine Bohrmaschine zuerst fünfmal mit 4mm Löcher bohrt, und danach der Bohrer auf 10mm gewechselt werden muss, bedeutet dies ein Stillstand in der Produktion.<br />
Dies wird im verarbeitenden Gewerbe entsprechend eingeplant.<br />
In der IT wird dies häufig vergessen, dass wir auch Rüstzeiten haben. Wenn ein Mitarbeiter konzentriert an einem Konzept arbeitet und z.B. angerufen wird,  können bis zu 20 Minuten vergehen bevor er sich wieder voll an die Arbeit machen kann.<br />
Wenn ein Mitarbeiter eine Stunde für Projekt A arbeitet und dann einen Produktionsfehler analysiert und danach am Projekt B arbeitet addieren sich diese Rüstzeiten. So kann es locker passieren, dass ein Mitarbeiter vor lauter Meetings und Umstellungen den ganzen Tag über nur noch heiße Luft produziert.</p>
<h3>Mögliche Lösung</h3>
<p>Die Mitarbeiter müssen sich auf ihre einzelnen Aufgaben vollumfänglich konzentrieren können. Also zuerst einmal die Millionen Meetings reduzieren, nur noch an wenigen Aufgaben gleichzeitig arbeiten und das Telefon abstellen.<br />
Mit KANBAN kann man weiter für Entlastung sorgen. Da ein Mitarbeiter nur begrenzt zwischen Aufgaben wechseln kann, sollten nur begrenzt viele Aufgaben gleichzeitig aktiv sein.<br />
Ich habe im folgenden Bild skizziert wie z.B. bei den Requirements-Arbeiten für Entlastung gesorgt werden kann.</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Gewichtung-Requirements.png"><img class="alignnone size-full wp-image-2197" title="Gewichtung-Requirements" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Gewichtung-Requirements.png" alt="Gewichtung der Requirements im KANBAN Board" width="724" height="589" /></a></p>
<p>In den Queues für Requirements Analyse werden maximal sieben Stories akzeptiert. Dies wird durch die rote 7 links oben angezeigt.<br />
Ich habe hier einen Snapshot des KANBAN-Boards gemacht. Du kannst sehen, dass Story 1 bereits in Done steht. Die weiteren Stories sind irgendwo zwischen In Work und Review verteilt.<br />
Da in den Requirements-Queues sieben Stories verteilt sind, dürfen keine weiteren Stories angefangen werden.<br />
Bevor nicht die Stories von der Development-Crew übernommen werden, werden keine weiteren Stories im Requirements-Umfeld angefangen. Damit wird erreicht, dass nicht zu viele Stories analysiert werden, die später gar nicht umgesetzt werden können.<br />
Die Requirements-Menschen können sich vollumfänglich auf sieben unterschiedliche Stories einstellen. Es werden keine weiteren Stories eingetragen und die „Rüstzeiten“ bleiben überschaubar. Ziel ist es die einzelnen Stories so schnell wie möglich am Stück bearbeiten zu können und nicht unterbrochen zu werden.</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/begrenzen-der-aktiven-arbeitspakete/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache-Webserver konfigurieren</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/apache-webserver-konfigurieren</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/apache-webserver-konfigurieren#comments</comments>
		<pubDate>Sat, 08 Oct 2011 22:54:52 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[config]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2180</guid>
		<description><![CDATA[Als nächstes werden wir den Apache-Webserver für unsere weightapplication-Webapplikation konfigurieren. Hier sind folgende Dateien und Verzeichnisse betroffen: /etc/hosts Damit unser lokaler Webserver überhaupt vom Webbrowser gefunden werden kann, müssen wir unseren Localhost mitteilen, dass wir eine Applikation mit dem Namen weightapplication haben. Öffne die Datei /etc/hosts (mit Root-Rechten) und füge folgende Zeile hinzu: 127.0.0.1 weightapplication [...]]]></description>
			<content:encoded><![CDATA[<p>Als nächstes werden wir den Apache-Webserver für unsere weightapplication-Webapplikation konfigurieren.</p>
<p>Hier sind folgende Dateien und Verzeichnisse betroffen:</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/apache-setup.png"><img class="alignnone size-full wp-image-2181" title="apache-setup" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/apache-setup.png" alt="Setup der Apache Komponenten" width="696" height="873" /></a></p>
<h3>/etc/hosts</h3>
<p>Damit unser lokaler Webserver überhaupt vom Webbrowser gefunden werden kann, müssen wir unseren Localhost mitteilen, dass wir eine Applikation mit dem Namen weightapplication haben.<br />
Öffne die Datei <strong>/etc/hosts</strong> (mit Root-Rechten) und füge folgende Zeile hinzu:</p>
<p>127.0.0.1 weightapplication</p>
<p>Damit wird festgelegt, dass der DNS weightapplication auf der IP-Adresse 127.0.0.1 (localhost) erreicht werden kann.<br />
Speichere die Datei.</p>
<h3>/etc/apache2/sites-available</h3>
<p>In diesem Verzeichnis legst du eine Datei weightapplication an.<br />
Diese befüllst du mit folgenden Zeilen:</p>
<pre class="code">NameVirtualHost weightapplication
&lt;VirtualHost weightapplication&gt;
    ServerAdmin root@localhost
    ServerName weightapplication
    DocumentRoot "/home/roland/workspace/weightapplication/app/webroot"
    &lt;Directory "/home/roland/workspace/weightapplication/app/webroot"&gt;
        Options Indexes FollowSymLinks
        AllowOverride FileInfo Indexes
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;IfModule alias_module&gt;
&lt;/IfModule&gt;
&lt;IfModule mpm_peruser_module&gt;
    ServerEnvironment apache apache
&lt;/IfModule&gt;
&lt;/VirtualHost&gt;</pre>
<p>Anstatt <strong>/home/roland/workspace</strong> fügst du bitte den WORKSPACE Pfad von deiner Konfiguration ein. Spannend ist hier, dass das Webroot von CakePHP in <strong>/app/webroot</strong> liegt. Hier greift der Apache auf die index.php zu. Alle darunterliegenden Verzeichnisse sind für Webanwender versteckt. Damit hat CakePHP eine einfache und effiziente Möglichkeit implementiert, die Konfigurationen der Applikation vor unliebsamen Anwendern zu verstecken. <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nachdem du diese Datei abgespeichert hast, müssen wir noch dafür Sorge tragen, dass Apache diese Konfiguration auch verwendet.</p>
<p>Hierfür führst du den Befehl</p>
<p><strong>a2ensite weightapplication</strong></p>
<p>Dieser Befehl legt in <strong>/etc/apache2/sites-enabled</strong> einen symbolischen Link auf die Datei weightapplication im Verzeichnis <strong>/etc/apache2/sites-available</strong><br />
.<br />
So, fertig ist die Apache Konfiguration.</p>
<p>Nun müssen wir unserem Apache die neue Konfiguration mitgeben.</p>
<p>Mit <strong>apachectl configtest</strong> können wir kontrollieren ob wir uns in der weightapplication Datei vertippt haben. Falls der Check Syntax ok zurückliefert, kannst du mit <strong>apachectl graceful</strong> den Apache neu starten.</p>
<p>Fertig konfiguriert <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/programmieren/apache-webserver-konfigurieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbank Setup für CakePHP Gewichtsapplikation</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/datenbank-setup-fur-cakephp-gewichtsapplikation</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/datenbank-setup-fur-cakephp-gewichtsapplikation#comments</comments>
		<pubDate>Thu, 06 Oct 2011 22:15:36 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2177</guid>
		<description><![CDATA[&#8230; da hatte ich in den letzten zwei Monaten wieder viel zu viel zu tun gehabt &#8230; Naja, jetzt mach ich halt weiter. Der letzte Artikel zur Gewichtsapplikation ist vom August und handelte davon wie man die Entwicklungsumgebung für CakePHP aufsetzt. Vermutlich habt ihr schon völlig vergessen von was ich hier quassele. Deshalb nochmal der [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; da hatte ich in den letzten zwei Monaten wieder viel zu viel zu tun gehabt &#8230; Naja, jetzt mach ich halt weiter.</p>
<p>Der letzte Artikel zur Gewichtsapplikation ist vom August und handelte davon wie man die <a href="http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsrechner-setup">Entwicklungsumgebung für CakePHP</a> aufsetzt.<br />
Vermutlich habt ihr schon völlig vergessen von was ich hier quassele. Deshalb nochmal der Link zum <a href="http://www.baldenhofer.eu/blog/it/programmieren/reload-mit-cakephp-zur-applikation">Reload mit CakePHP zur Applikation</a>.</p>
<p>Dieser Artikel hier kümmert sich um den Setup der notwendigen Datenbank.</p>
<p>Wir wollen unsere Personen- und Gewichts-Angaben in einer MySQL-Datenbank ablegen.<br />
CakePHP kann auch für andere Datenbanken konfiguriert werden, ich habe mich jedoch in diesem Projekt für eine Standard-MySQL-Datenbank entschieden.</p>
<h3>MySQL – Datenbank aufsetzen</h3>
<p>Du hast ja zuvor den MySQL Server aufgesetzt.<br />
Jetzt werden wir die Datenbank weightapplication aufsetzen und unser CakePHP entsprechend dafür konfigurieren.<br />
Folgende Komponenten werden hiermit abgearbeitet:</p>
<h3><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/mysql-setup.png"><img class="alignnone size-full wp-image-2178" title="mysql-setup" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/mysql-setup.png" alt="Komponentendiagramm was hier aufgesetzt wird." width="696" height="873" /></a></p>
<p>MySQL Datenbank</h3>
<p>Gehe auf eine Konsole und füge den Befehl <strong>mysql -uroot -p</strong> ein.<br />
Dann musst du dein Datenbank-Root-Passwort eingegeben dass du beim DB-Server-Setup vergeben hast.<br />
Du bist nun auf der DB-Server Konsole.</p>
<p><em>Welcome to the MySQL monitor.  Commands end with ; or \g. </em><br />
<em>Your MySQL connection id is 1364 </em><br />
<em>Server version: 5.1.54-1ubuntu4 (Ubuntu) </em></p>
<p><em>Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. </em><br />
<em>This software comes with ABSOLUTELY NO WARRANTY. This is free software, </em><br />
<em>and you are welcome to modify and redistribute it under the GPL v2 license </em></p>
<p><em>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the current input statement. </em></p>
<p><em>mysql&gt;</em></p>
<p>Hier gibst du <strong>create database weightapplication;</strong> ein.<br />
Das System liefert dir zurück:<br />
<em>mysql&gt; create database weightapplication; </em><br />
<em>Query OK, 1 row affected (0.03 sec)</em></p>
<p>Mit <strong>quit</strong> kannst du die Konsole wieder verlassen.</p>
<p>Datenbankverbindung im CakePHP konfigurieren.<br />
Kopiere die Datei <strong>/app/config/database.php.default</strong> zu <strong>/app/config/database.php</strong>.<br />
Öffne <strong>/app/config/database.php</strong>.<br />
Darin findest du folgende Zeilen, die du wie hier beschrieben veränderst:</p>
<p>class DATABASE_CONFIG {</p>
<p>var $default = array(<br />
&#8216;driver&#8217; =&gt; &#8216;mysql&#8217;,<br />
&#8216;persistent&#8217; =&gt; false,<br />
&#8216;host&#8217; =&gt; &#8216;localhost&#8217;,<br />
&#8216;login&#8217; =&gt; &#8216;root&#8217;,<br />
&#8216;password&#8217; =&gt; &#8216;DEIN MYSQL LOGIN PASSWORT&#8217;,<br />
&#8216;database&#8217; =&gt; &#8216;weightapplication&#8217;,<br />
&#8216;prefix&#8217; =&gt; &#8221;,<br />
);</p>
<p>var $test = array(<br />
&#8216;driver&#8217; =&gt; &#8216;mysql&#8217;,<br />
&#8216;persistent&#8217; =&gt; false,<br />
&#8216;host&#8217; =&gt; &#8216;localhost&#8217;,<br />
&#8216;login&#8217; =&gt; &#8216;user&#8217;,<br />
&#8216;password&#8217; =&gt; &#8216;password&#8217;,<br />
&#8216;database&#8217; =&gt; &#8216;test_database_name&#8217;,<br />
&#8216;prefix&#8217; =&gt; &#8221;,<br />
);<br />
}</p>
<p>Beim login verwenden wir root, bei password trägst du dein DB-root-Passwort ein. Und bei database wird weightapplication eingetragen.<br />
Fertig ist die Konfiguration (Falls du andere Verbindungseinstellungen verwenden willst, dann darfst du das natürlich gerne tun <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Einfach nachlesen wie du User in MySQL anlegst).<br />
Die Test-DB kannst du entweder löschen oder vorerst so stehen lassen. In unserem kleinen Projektsetup verwende ich sie vorerst nicht.</p>
<p>Jetzt kann sich CakePHP an die Datenbank anmelden.</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/datenbank-setup-fur-cakephp-gewichtsapplikation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KANBAN Board erstellen</title>
		<link>http://www.baldenhofer.eu/blog/it/kanban-board-erstellen</link>
		<comments>http://www.baldenhofer.eu/blog/it/kanban-board-erstellen#comments</comments>
		<pubDate>Thu, 06 Oct 2011 04:21:55 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2173</guid>
		<description><![CDATA[Im Artikel „Sichtbar machen des aktuell vorhandenen Entwicklungsprozesses“ bin ich darauf eingegangen wie wir unseren Entwicklungsprozess sichtbar machen können. Damit wir KANBAN-Karten zwischen den einzelnen Produktionsschritten schieben können, brauchen wir noch entsprechende Queues. Bei KANBAN nimmt ein Mitarbeiter eine KANBAN-Karte entgegen und hängt die Karte in die „In Work“ Queue. Nach getaner Arbeit wird sie [...]]]></description>
			<content:encoded><![CDATA[<p>Im Artikel „Sichtbar machen des aktuell vorhandenen Entwicklungsprozesses“ bin ich darauf eingegangen wie wir unseren Entwicklungsprozess sichtbar machen können.<br />
Damit wir KANBAN-Karten zwischen den einzelnen Produktionsschritten schieben können, brauchen wir noch entsprechende Queues.<br />
Bei KANBAN nimmt ein Mitarbeiter eine KANBAN-Karte entgegen und hängt die Karte in die „In Work“ Queue. Nach getaner Arbeit wird sie z.B. in die Review-Queue gehängt oder auf Done gesetzt. Der Folgeprozess bezieht seine Arbeit aus der Done-Queue des Vorgängerprozesses.<br />
Hier ist unser zuvor beschriebener Prozess mit den betroffenen Queues aufgezeigt:</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/IT-Prozess.png"><img class="alignnone size-large wp-image-2174" title="IT-Prozess" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/IT-Prozess-767x1024.png" alt="IT-Gesamtprozess Darstellung mit KANBAN Queues" width="767" height="1024" /></a></p>
<p>Ich habe hier die Queue „Requirements Not Clear“ eingeführt. Wenn wir erreichen wollen, dass unsere Anforderungen im Lauf der Zeit besser beschrieben werden, müssen wir aufzeigen wann eine Anforderung nicht korrekt beschrieben wurde. Die betroffenen Anforderungen lassen wir in der Queue stehen. So können wir z.B. einen Monat später sehen, dass weitere Anforderungen ähnlich schlecht beschrieben wurden. Dann können wir gezielt Maßnahmen einführen um die Anforderungen sinnvoller zu beschreiben. Diese Maßnahmen können sein:</p>
<ul>
<li>Schulung der Requirement-Engineers</li>
<li>Fragekataloge erstellen</li>
<li>Checklisten erstellen</li>
</ul>
<p>Für Defects habe ich ebenfalls eine Queue „Defect“ eingeführt. Ein Defect wird ebenfalls nicht mehr aus der Queue entfernt. Ein Defect sollte nicht mehrmals vorkommen. Falls ein Fehler zweimal vorkommt müssen wir überlegen was wir bei der Entwicklung, bei der Anforderungsanalyse oder sonst wo falsch machen. Bei vielen anderen Projektvorgehen werden Defects korrigiert und danach vergessen. Das machen wir mit KANBAN nicht mehr. Natürlich nur wenn ihr dieses Feature nutzen wollt. Die Defects sind übrigens nicht dafür da die einzelnen Mitarbeiter an den Pranger zu stellen. Wir wollen damit lernen und besser werden.</p>
<p>Mit KANBAN kann man auch noch dafür sorgen, dass nur so viel Arbeit in die Teams eingelastet wird, wie sie auch verkraften können. Das werde ich in einem weiteren Artikel beschreiben.</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/kanban-board-erstellen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sichtbar machen des aktuell vorhandenen Entwicklungsprozesses</title>
		<link>http://www.baldenhofer.eu/blog/it/sichtbar-machen-des-aktuell-vorhandenen-entwicklungsprozesses</link>
		<comments>http://www.baldenhofer.eu/blog/it/sichtbar-machen-des-aktuell-vorhandenen-entwicklungsprozesses#comments</comments>
		<pubDate>Wed, 05 Oct 2011 04:16:58 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2170</guid>
		<description><![CDATA[KANBAN kann dafür verwendet werden, den im Moment in einer Firma verwendeten Entwicklungsprozess sichtbar zu machen. So kann z.B. folgender Ablauf bei der Entwicklung aktuell durchgeführt werden. Dieser Prozess funktioniert wie folgt: Zuerst wird eine Anforderungsanalyse (Requirement-Analyse) durchgeführt. Hier nehmen die Entwicklungsabteilung zusammen mit den Kunden auf, was aus Kundensicht tatsächlich benötigt wird und wie [...]]]></description>
			<content:encoded><![CDATA[<p>KANBAN kann dafür verwendet werden, den im Moment in einer Firma verwendeten Entwicklungsprozess sichtbar zu machen. So kann z.B. folgender Ablauf bei der Entwicklung aktuell durchgeführt werden.</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/IT-Prozess-Overall.png"><img class="alignnone size-full wp-image-2171" title="IT-Prozess-Overall" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/IT-Prozess-Overall.png" alt="Der Ablauf im Groben" width="750" height="683" /></a></p>
<p>Dieser Prozess funktioniert wie folgt:</p>
<ul>
<li>Zuerst wird eine Anforderungsanalyse (Requirement-Analyse) durchgeführt. Hier nehmen die Entwicklungsabteilung zusammen mit den Kunden auf, was aus Kundensicht tatsächlich benötigt wird und wie die Anforderungen grob  umgesetzt werden können.</li>
<li>Die Ergebnisse dieser Analyse gehen in die Entwicklung.</li>
<li>Die Entwicklungsabteilung analysiert die Anforderungen, die Test-Crew erstellt die Tests, die Dokumentation wird erstellt und natürlich wird auch etwas entwickelt.</li>
<li>Wenn die Zusammenarbeit zwischen dem Requirements-Engineering und der Entwicklungsabteilung nicht sonderlich gut ist, werden viele Rückfragen generiert. Dies führt zu Mehraufwand, Verzögerung und blockiert im Endeffekt die Fertigstellung.</li>
<li>Wenn alles programmiert, dokumentiert, Unit-Tests durchgeführt und Integrationstests erstellt wurden, kann der Integrationstest durchgeführt werden. Im Idealfall wird getestet und keine Fehler festgestellt. Leider ist die Welt  nicht ideal. Dann müssten wir auch nicht testen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Der Normalfall ist, dass diverse Fehler im Integrationstest anfallen werden. Also müssen diese Fehler korrigiert und danach nochmals getestet werden.</li>
<li>Nach den erfolgreichen  Integrationstests können wir in die User Acceptance Tests und Operational Readiness Tests gehen. Dort wird überprüft ob wir das erstellt haben was vom Betrieb und von den Anwendern wirklich benötigt wird.</li>
<li>Dummerweise können hier wieder Fehler auftreten. Diese müssen in der Integrationstestumgebung nachgestellt, korrigiert und nochmals getestet werden.</li>
<li>Wenn das alles geklappt hat, können wir in Produktion gehen und uns neuen Aufgaben widmen.</li>
</ul>
<p>Ich denke mal, ihr könnt eventuell euren eigenen Entwicklungsprozess wiedererkennen oder habt ähnliche Abläufe schon gesehen.<br />
Im Prinzip ist es KANBAN völlig egal wie euer Prozess aussieht. Wichtig ist zuerst einmal, dass wir erkennen was wir tatsächlich machen und wieso wir es tun.<br />
Als nächstes werden wir diesen Entwicklungsprozess mit Queues ausstatten. Mit den Queues können wir mit KANBAN-Karten anzeigen, in welchem Schritt der Relation sich gerade eine Anforderung befindet.</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/sichtbar-machen-des-aktuell-vorhandenen-entwicklungsprozesses/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KANBAN Einführung</title>
		<link>http://www.baldenhofer.eu/blog/it/kanban-einfuhrung</link>
		<comments>http://www.baldenhofer.eu/blog/it/kanban-einfuhrung#comments</comments>
		<pubDate>Tue, 04 Oct 2011 04:09:54 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2166</guid>
		<description><![CDATA[Beim Barcamp in Stuttgart, dass dieses Jahr wieder in den Räumen der MFG stattgefunden hat, führte ich eine Session zu KANBAN in IT Projekten durch. In 45 Minuten kann ich natürlich nicht alle Rahmenbedingungen und Themenblöcke von KANBAN  aufzeigen. Aber für die Grundstrukturen, einen möglichen Aufbau eines KANBAN-Boards und einigen Steuerungsmöglichkeiten hat es auf alle [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Barcamp in Stuttgart, dass dieses Jahr wieder in den Räumen der MFG stattgefunden hat, führte ich eine Session zu KANBAN in IT Projekten durch.<br />
In 45 Minuten kann ich natürlich nicht alle Rahmenbedingungen und Themenblöcke von KANBAN  aufzeigen. Aber für die Grundstrukturen, einen möglichen Aufbau eines KANBAN-Boards und einigen Steuerungsmöglichkeiten hat es auf alle Fälle gereicht.<br />
hier möchte ich ein paar Grundlagen aufschreiben damit die Teilnehmer der Session nochmal nachlesen können was wir da so besprochen haben.</p>
<h3>KANBAN in der Produktion</h3>
<p>Ursprünglich kommt KANBAN aus der Autoindustrie und wurde verwendet um Just In Time Herstellung ohne IT-Hilfe durchzuführen. Toyota konnte hiermit schon sehr früh erreichen, dass Kapital unnötig in der Produktionskette gebunden wurde.<br />
Die Idee ist, dass die einzelnen Artefakte erst dann erstellt werden, wenn sie tatsächlich benötigt werden.<br />
Der Ablauf kann grob skizziert werden:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Produktions-Grundprinzip.png"><img class="alignnone size-full wp-image-2167" title="Produktions-Grundprinzip" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/Produktions-Grundprinzip.png" alt="Zeigt die Grundprinzipien des KANBAN Prozesses" width="715" height="300" /></a><br />
Ein Kunde möchte ein  Auto kaufen. Das Auto steht bereits fertig montiert in der Halle und kann direkt abgegriffen werden.<br />
In dem Moment, in dem das Auto entgegengenommen wurde, kann ein neues Auto erstellt werden.<br />
Hierzu werden Auftragskarten (KANBAN-Karten) zu den einzelnen Produktionsstetten durchgereicht. Einen Auftrag für die Räder und einen für die Karosserie.<br />
Diese stellen exakt vier Räder und exakt eine Karosserie her und unser neues Auto wird zusammengestellt.<br />
Ok, das ist wirklich eine sehr abstrakte Darstellung, sollte aber gut helfen um das Vorgehen zu verstehen. Immer wenn eine Anforderung (ich will ein Auto) anfällt, wird gearbeitet. Ansonsten wird nichts produziert und die Mitarbeiter können sich anderen Aufgaben widmen.<br />
In der IT können wir mit den KANBAN-Karten erreichen, dass unsere Anforderungen durch die einzelnen „Produktionsstellen“ durchgereicht werden. So können wir die Anforderungen, die Entwicklung, das Testen und die Inproduktionsnahme entsprechend darstellen und nur dann Anforderungen umsetzen wenn es Sinn ergibt. In den folgenden Artikeln gehe ich weiter darauf ein.</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/kanban-einfuhrung/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

