Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Effective Projects with python

Avatar for Lutz Mende Lutz Mende
October 31, 2012

Effective Projects with python

Get your project things done with SCRUM, use cases, test cases and python tools

Avatar for Lutz Mende

Lutz Mende

October 31, 2012
Tweet

Other Decks in Technology

Transcript

  1. The Pythonic Way für IT-Projekte - Effektive Projektmethodik mit Python

    - pycon 2012 – Lutz Mende, Otto Hockel InQuant GmbH, Ravensburg
  2. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 2 -

    ... hat Python mit effektiver Projektmethodik zu tun? ª People ª Process ª Python (Tools) What the hell... import this
  3. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 3 -

    What the hell... import this – and get your things done. Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC ... hat Python mit effektiver Projektmethodik zu tun? ª People ª Process ª Python (Tools)
  4. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 4 -

    import this In  [1]:  import  this   The  Zen  of  Python,  by  Tim  Peters     •  Beautiful  is  better  than  ugly.   •  Simple  is  better  than  complex.   •  Readability  counts.   •  Special  cases  aren‘t  special  enough  to  break  the   rules.   •  Errors  should  never  pass  silently.   •  If  the  implementation  is  easy  to  explain,  it  may   be  a  good  idea.   •  There  should  be  one-­‐-­‐  and  preferably  only  one  -­‐-­‐obvious   way  to  do  it.  Although  that  way  may  not  be  obvious  at   first  unless  you're  Dutch.  
  5. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 5 -

    Wer hat‘s erfunden? •  Prozess –  Ken Schwaber: „Agiles Project Management with SCRUM“ –  Alistair Cockburn: „Writing effective Use Cases“ –  Wir: Kombi •  Python – Tools –  edgewall.org: TRAC –  Wir: TRAC testman plugin https://github.com/InQuant/TracTestManager Liefern in Kombination das richtige Handwerkszeug für sinnvollen Energie- und Aufwandseinsatz in Projekten.
  6. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 6 -

    Use Case "a user story is to a use case as a gazelle is to a gazebo" –  Allistair Cockburn Wir sprechen von voll ausgeprägten (full featured) Use Cases.
  7. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 8 -

    •  Liste aller Akteure (Stakeholder) und deren Interessen/ Ziele •  Story / Kurzbeschreibung Ziel im Kontext •  Primäres Erfolgsszenario Aktionen für primäre Interessen •  Beschreibung aller möglichen Ausnahmeszenarios Ausnahmen und deren Aktionen für alle anderen Interessen UCs: Notwendige Inhalte Ohne User Interface- und Implementierungsdetails Stakeholder/ Interessen Erfolgs szenario Ausnahmen
  8. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 9 -

    Verblüffende Neben-Effekte (1) •  Focus, Priorität •  Prozess-Verständnis •  Sämtliche Test Case Pfade fix und fertig •  Implizit optimiertes (einfacheres?) Datenmodell •  Implizite Stabilität + Performance für den Standardpfad •  Freiheiten für die Umsetzung bewahrt der Trennung in primäres Erfolgsszenario und Ausnahmeszenarios
  9. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 10 -

    Mögliche weitere Use Case Inhalte •  Hauptakteur •  Story (Ziel im Kontext) •  Ebene / Kontext •  Scope •  Stakeholder / Interessen (Anwender Ziele) •  Minimale Garantie •  Erfolgsgarantie •  Vorbedingungen •  Trigger •  Primäres Erfolgsszenario •  Ausnahmen / Ausnahmebehandlung •  Häufigkeit •  Dauer •  (Business) Regeln •  ... Wenn sinnvoll nach Bedarf
  10. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 11 -

    Test Case Pfade aus dem Bsp. UC 2. Testaktionen listen und 1. TA aktivieren 1. Testcase wählen 3.1.1 exec passed with comment 3. Exec mit Status passed 3.3.1 exec failed 4. Test Case passed 3.1.2 Test Case passed with comment •  TcTestcaseExecute •  TcTestcaseExecutePassedComment •  TcTestcaseExecuteFailed 3.3.2 Test Case failed Mehrere Erfolgs- und mehrere fehlerhafte Pfade möglich ...
  11. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 13 -

    TCs: Notwendige Inhalte •  Story / Kurzbeschreibung Test - Ziel im Kontext des Use Cases •  Test Szenario –  Liste (Sequenz) und Beschreibung aller Aktionen –  konkreten Daten und User Interface Abfolgen –  konkreten erwarteten Ergebnissen pro Aktion. Mit User Interface-Details und konkreten Beispieldaten Daten Beispiel UI Abfolgen Ergebnisse
  12. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 14 -

    Verblüffende Neben-Effekte (2) •  Fertige Anwender Dokumentation –  UCs liefern den Überblick, die Theorie –  TCs liefern das praktische Übungs-Beispiel mit Bedienführung. –  Information über Umgang mit Fehlerzuständen (Negativ – Tests). –  Datenbeispiel •  Spezifikation für Entwickler –  Notwendige Detailtiefe ist erreicht •  Testdriven Development der Ableitung von detaillierten anwenderverständlichen Test Cases aus Use Cases.
  13. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 15 -

    Wat noch? Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC Fehlt noch der Plan – das Wann! ... Wir haben Use / Test Cases ... Wissen also Was zu tun ist... ª People ª Process ª Python (Tools)
  14. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 16 -

    SCRUM Bild: Ken Schwaber: Agile Project Management with SCRUM
  15. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 17 -

    Backlog Inhalte UCs werden Product Backlog – TCs werden Sprint Backlog Items Use Cases Test Cases (UC Pfade)
  16. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 19 -

    Zahlenspiele / Tipps zu Backlogs •  Use / Test Case Aktionen pro UC Pfad/ TC: 3-9 •  Aufwandstage pro ProductBacklog Item: 2-21 •  Aufwandsstunden pro Sprint Backlog Item: 2-21 •  Benutze Fibonacci – Reihe zur Schätzung –  [1,2,3,5,8,13,21, …] •  Benutze Bewertungsmatrix für Backlog Prioritäten. –  (Vergleiche jeden Eintrag mit jedem) Merge / Split – um auszugleichen und gleichwertige Einträge zu erhalten. Ergibt balancierte Backlogs und erhöhte Planungssicherheit. Play Planning Poker – Schätze mit dem SCRUM Team!
  17. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 20 -

    Zeitlicher Ablauf – TODO: Verbessern 1.  Projekt Idee 2.  Brainstorming von Anwender Zielen, Interessen, Stakeholdern 3.  Entwurf Use Cases 4.  Erstellen Product Backlog 5.  Grobe Schätzung Product Backlog Items 6.  Detaillieren Prio 1 Use Cases 7.  Sprintplanning – Sprint Backlog 8.  Finalisieren / Umsetzen der Sprint Use / Test Cases 9.  Neuplanung nach jeder Iteration
  18. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 21 -

    Verblüffende Neben-Effekte (3) •  Jeder hat ein Bild zu jedem Eintrag in den Backlogs –  Keine Misverständnisse: der Kunde weiss, was er bekommt ... –  ... der Entwickler (das Team) was es zu tun hat. •  Alles wird im genau richtigen Moment detailliert Kein verschwendeter Aufwand der Verwendung von Use – und Test Case Titeln (Kurzbeschreibungen) in den Backlogs.
  19. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 22 -

    Wat noch? Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC Und nun das Wie: an dieser Stelle kommt Python ins Spiel :) ... Wir haben Use und Test Cases / einen Plan ... Wissen also Was und Wann ª People ª Process ª Python (Tools)
  20. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 23 -

    Zusammenfassung: Use Cases •  Verständliche Ablaufbeschreibung für alle Beteiligten •  Priorisierte Liste bildet das Product Backlog (und damit den Projekt-Plan nach SCRUM) •  Trennen Primäres Erfolgsszenario von Ausnahme – Situationen und liefern den Focus •  Einzelne UC-Pfade bilden Test Cases mit zusätzlicher Detaillierung •  Zentrales Kommunikationsmittel und Doku für alle Projektbeteiligten Product/Project-Backlog: ü  Priorisierte Liste von Anwender-Zielen (UCs) ü  Gerüst zur Bestimmung von: •  Komplexität, •  Aufwand/Kosten, Terminen, •  Status / Metriken ü  Zeigt, welche Funktionen zuerst implementiert werden Wichtig: Use Cases sollten bei jeder Besprechung offen sein und nach Beschlüssen einem Änderungsprozess mit Versionierung unterliegen.
  21. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 24 -

    Tools für jedes Projekt •  Projekteigene TRAC – Instance –  TracTestManager –  TracGit •  git repositroy
  22. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 25 -

    TRAC •  Issue Tracker –  git integration, diff, bug references •  Wiki Dokumention –  Fulltext Search –  Wiki Markup for everything –  Links, references between everything –  History and versioning Trac nervt nicht! Trac ist schnell und schlank >sqlite3 trac.db >trac-admin export ...
  23. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 26 -

    Macro Beispiel.: Daily Dilbert def execute(hdf, txt, env):! """ returns the daily dilbert image tag.! """! ! htdocpath= os.path.join( env.get_htdocs_dir(), 'dilbert' )! ! imgname= time.strftime("%Y-%m-%d-dilbert.gif", time.localtime())! ! if not os.path.exists( os.path.join(htdocpath, imgname)):! try:! # download and cache the daily img from dilbert.com! downloadimg(htdocpath, imgname)! except:! imgname= ""! ! if imgname:! return "<img src='%s/%s' />" % (htdocpath, imgname)! else:! return "dilbert image download failed."
  24. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 27 -

    TracTestManager •  CRUD von –  Testcases, Testplänen, Testruns •  Use-, Test- Cases, Pläne sind Wikipages (Wiki-Syntax) •  TestRuns sind Tickets •  TestRunMonitor, Testcase, TestEval –  Im Wiki context „normal“ verwendbare Macros TestEval und TicketQuery Features (Use Cases :) •  BucTestDurchfuehren •  UcTestcaseCreate •  UcTestplanCreate •  UcTestplanStart •  UcTestcaseExecute •  UcTestRunInfo •  UcTestRunEvaluate •  UcTestRunReview
  25. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 28 -

    Macro Beispiel.: TestPlanMacro class TestPlanMacro(WikiMacroBase):! """Testplan macro.! Formats a Wiki Testplan. TCs can have wildcards, testers are optional.! Usage example::! ! {{{! #!TestPlan! Id: TestSprintTwo! Build: TracTestMan-0.1.1! Konfiguration: IE7-Win, FF-LUX! Usecases: UcTestcaseExecute! ! TcTestcaseExecute mmuster, susisorglos! TcTestcaseExecutePassedComment! TcTestcaseExecuteFailed*! }}}! """! ! def expand_macro(self, formatter, macro_name, macro_content, macro_args):! """Execute the macro! """! self.env.log.debug("TestPlanMacro.expand_macro()")! ! # Parse config and testcases! params, tcnames_and_users= TestPlanMacroParser(self.env).parse_config(macro_content)! self.log.debug("params: %s" % params)! ! # syntax check the testcases! parser= TestcaseParser(self.env)! for tcname in tcnames_and_users:
  26. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 31 -

    User Goals Strategic Goals (BUC) Usecase (Projekt) Hierarchie (Graph) Test durchführen CRUD Document TestRun Review CRUD Document CRUD Test Case Test Plan TestRun Info TestCase Execute TestRun Evaluate Testcase Status Evaluate TestRun Monitor TestRun Create Sea Level Manage Software Produkt Project Goal TestPlan Start Subfunctions Release erstellen
  27. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 32 -

    import this In  [1]:  import  this   The  Zen  of  Python,  by  Tim  Peters     •  Beautiful  is  better  than  ugly.   •  Simple  is  better  than  complex.   •  Readability  counts.   •  Special  cases  aren‘t  special  enough  to  break  the   rules.   •  Errors  should  never  pass  silently.   •  If  the  implementation  is  easy  to  explain,  it  may   be  a  good  idea.   •  There  should  be  one-­‐-­‐  and  preferably  only  one  -­‐-­‐obvious   way  to  do  it.  Although  that  way  may  not  be  obvious  at   first  unless  you're  Dutch.  
  28. Effektive Projektmethodik mit Python Pycon2012 - Leipzig - 33 -

    Vielen Dank! Farewell – and thanks for all the fish :) Test Cases Use Cases Scrum git / buildout / fabric Testmanager TRAC ? ª People ª Process ª Python (Tools)