Weight-Modell backen

26. Oktober 2011 Roland

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 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

Diesmal bin ich gleich bis zu den Modellen durchgegangen und gebe die 2 für Weight ein.

[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

Diesmal erkennt Cake Console nicht welche Felder wir später anzeigen lassen wollen. Wir wählen das Gewicht.
Danach generieren wir wieder die Validierungen.

Für id:

> 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] > 

Für User-ID


[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] > 

Hier wollen wir keine weiteren Validierungen.
Für unser Gewicht wollen wir notempty verwenden:

[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

created lassen wir wie es ist:

[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] > 

Die Relation zur User-Tabelle ist eine BelongsTo-Relation. Die werden wir mit den folgenden Einträgen erstellen:

[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] >

Weitere Relationen brauchen wir nicht.
Es wird uns nochmal angezeigt wie das Modell wohl aussehen wird.

[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] > 

Auch die Simpletests können wir vorbereiten lassen und fertig ist die Installation.

[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) 

> 

So, jetzt haben wir für die Tabellen users und weights angelegt.

Kategorie IT, Programmieren | 0 Kommentare »

User-Modell für den Datenbankzugriff in CakePHP backen

24. Oktober 2011 Roland

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.
Komponentenübersicht Modelle anlegen
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. Schau einfach mal rein.
Wenn du den Aufruf durchgeführt hast, erscheint folgende Auswahl:

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) 

>

Hier kannst du auswählen was du backen willst.
Wir wollen zuerst unsere Modelle backen, also geben wir M ein.
Die nächste Frage lautet ob wir unsere Modelle anhand der Definitionen der Default-Database-Connection oder der Test-Connection erstellen wollen.

> M       

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

Bake Model

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

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

Use Database Config: (default/test) 

[default] >

Hier kannst du return drücken, da wir die default-Konfiguration nehmen wollen.
Als nächstes werden die Tabellen, die derzeitig in der Datenbank definiert sind, angezeigt:

[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] >

Jetzt lassen wir die Modelle erstellen. Du gibst hierfür die 1 und 2 ein.
Fangen wir also mit 1 an:

[q] > 1   

Would you like to supply validation criteria 

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

[y] >

Die Modell-Attribute können mit Standard-Validierungen überprüft werden.
Wir wollen das der Name und die E-Mail Adresse korrekt eingegeben werden.
Also sagen wir ja (return)
Das erste Feld ist die id.
Hier werden folgende Optionen angeboten:

[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] >

Mit 29 (also return) geben wir an, dass wir keine besondere Überprüfung für dieses Feld durchführen wollen.

Als nächstes wird das Feld name angezeigt.

[29] > 

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] >

Die Cake Console ist ziemlich clever und schlägt und notempty vor. Also machen wir das so.
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.

[n] > 

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] >

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).
Wir akzeptieren die 10.
Die Frage, ob wir noch weitere Validierungen angeben wollen, beantworten wir diesmal mit y.
Jetzt geben wir noch isUnique als Validierungsregel an. Damit wird erreicht, dass jede E-Mail Adresse im System einmalig ist.

[10] > isUnique

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

[n] >

Jetzt können wir wieder return drücken.

Das letzte Feld, mit zu überprüfenden Eigenschaften, ist das Passwort.
Hier können wir z.B. eine Minimallänge vorgeben.

[19] > 16

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

[n] >

Die Beschreibung lassen wir optional.

[n] > 

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] >

Als nächstes werden wir gefragt ob wir Verknüpfungen zu anderen Modellen haben wollen.
Hier sagen wir ja, denn wir wollen unsere Personen mit vielen Gewichtsangaben versehen.

[29] > 

Would you like to define model associations

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

[y] >

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.

[y] > 

One moment while the associations are detected.

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

Please confirm the following associations:

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

User hasMany Weight? (y/n) 

[y] >

Wir sagen bei dieser Frage ja (return)

[y] > 

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

[n] >

Hier bleiben wir bei nein.
Als letztes wird uns angezeigt was wir da so zusammenkonfiguriert haben:

[n] > 

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

The following Model will be created:

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

Name:       User

DB Table:   `users`

Validation: Array

(

    [name] => Array

        (

            [notempty] => notempty

        )

    [email] => Array

        (

            [email] => email

            [isUnique] => isUnique

        )

    [password] => Array

        (

            [minlength] => minlength

        )

)

Associations:

	User hasMany Weight

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

Look okay? (y/n) 

[y] >

Das sieht gut aus! Also sagen wir ja.

[y] > 

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] >

Wie du sehen kannst, wird das Modell user.php in das Verzeichnis /app/models/users.php geschrieben.
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.

Jetzt wird alles fertiggestellt und wir kommen wieder zur Startseite.

[y] > 

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) 

>

Hier brechen wir mit Q ab und schauen uns zuerst unser Modell an.
Gehe zur Validierung des Passworts und ändere die Validierung so ab, dass wir eine Minimallänge von sechs Zeichen vorsehen:

		'password' => array(

			'minlength' => array(

				'rule' => array('minlength', 6),

				//'message' => 'Your custom message here',

				//'allowEmpty' => false,

				//'required' => false,

				//'last' => false, // Stop validation after this rule

				//'on' => 'create', // Limit validation to 'create' or              'update' operations

			),

Alle anderen vorgefertigten Definitionen lassen wir vorerst einfach mal so stehen.
Das Modell ist jetzt erst einmal ausreichend konfiguriert.

Kategorie IT, Programmieren | 0 Kommentare »

Gewichtsapplikation Datenbanktabellen anlegen

22. Oktober 2011 Roland

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.
Komponentenansicht der Tabellenkonfiguration
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.
Die beiden Tabellen sehen irgendwie wie folgt aus:
Die Tabellen und ihre Relationen
Um die Datenbank zu konfigurieren habe ich ein kleines SQL-Script geschrieben:

# 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() \
                     );

Dieses Script habe ich unter dem Namen create_database.sql im Verzeichnis /app/config abgelegt.
Jetzt wechsle in das Verzeichnis /app/config und führe den Befehl mysql -uroot -p < create_database.sh aus. Du wirst nach dem Passwort gefragt, dass du für deinen MySQL-Server benötigst.
Das Script löscht eine zuvor angelegte Datenbank, legt die weightapplication Datenbank an und erstellt die Tabellen für Personen (users) und die Gewichtsangaben.

Kategorie IT, Programmieren | 0 Kommentare »

Express Queue und das Product-Backlog zusammengestellt

19. Oktober 2011 Roland

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. Er muss dafür jedoch unterschreiben, dass er sich bewusst ist das alle anderen Elemente nicht bearbeitet werden.
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 ;)
Die Product-Backlog Queue sieht nun wie folgt aus:

Product Backlog mit Queues

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.
So muss man nicht alles auf einmal beschreiben, kann zu gegebener Zeit entsprechend handeln und bleibt agil.

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.

Kategorie IT | 0 Kommentare »

Maintenance Queue im Product Backlog

17. Oktober 2011 Roland

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 ein, die irgendwann einmal gemacht werden müssen.
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.
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.
Wichtig ist nur, dass wir beim täglichen Arbeiten uns an unsere Vorgehensweise halten und grundsätzlich auch Maintenance Aufgaben abarbeiten.
Hier muss das Management zustimmen, dass ihnen diese Abläufe wichtig sind.

Kategorie IT | 0 Kommentare »

Product Backlog Queue

15. Oktober 2011 Roland

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 Vorgehensweise für die Firma auf Dauer massiv schädlich.
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.
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.
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.

Ich schmeiße die Priorisierung weg

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.

So, das wäre geklärt.

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.
Also ist unsere Requirements-Queue gefüllt und wir diskutieren die weiteren Schritte.
Da es keine Priorisierung mehr gibt, arbeiten wir mit einem FIFO (First In-First Out) Prinzip.
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.

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.

Kategorie IT | 0 Kommentare »

Weitere Stories aufnehmen

13. Oktober 2011 Roland

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 und die Dokumentation erarbeitet werden soll. Also nehmen wir die Story 1 und splitten sie auf die einzelnen Prozessschritte.

Gewichtung der Requirements- und Development Queue

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.
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.

Warum ist das jetzt toller als vorher?

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.
„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.

Kategorie IT | 0 Kommentare »

« Vorherige Einträge

zum Seitenanfang