Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Konzepte und praktische Arbeiten zur Diplomarbeit: „Eignet sich die Skriptsprache Python für schnelle Entwicklungen im Softwareentwicklungsprozess?“ Ingo Linkweiler, 26. Juni 2002 Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Inhalt: 1.) Vorstellung praktischer Arbeiten: • Struktogrammeditor „PyNassi“ • Umsetzung der Einführung „Von Stiften & Mäusen“ 2.) Konzepte der geplanten Diplomarbeit: • Python für schnelle Softwareentwicklung • Einsatz in der Ausbildung Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Projekt 1: Struktogrammeditor PyNassi Pynassi ermöglicht... • grafische Erstellung von Struktogrammen. (Nassi-Shneiderman) • direkte Eingabe von Python-Anweisungen. • Python-Quelltext aus dem Struktogramm erzeugen. • den Ablauf am Struktogramm und Quelltext zu beobachten. Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Beispiel...[PyNassi.py] Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses 1.2 Von Stiften und Mäusen Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Von Stiften und Mäusen from sum import * # Objekte erzeugen bild = Bildschirm() stift = Stift(bild) # Mit Stift ein Diagramm zeichnen stift.bewegeBis(10,10) stift.schreibe("Funktionsplotter") stift.zeichneLinie(0,200, 639,200) stift.zeichneLinie(320,0, 320,399) for x in range(-20,20): stift.zeichneLinie( x*10+320,198, x*10+320,202) for y in range(-20,20): stift.zeichneLinie(318,y*10+200, 322,y*10+200) # Funktion einlesen print "Funktion eingeben:" funktion = raw_input("f(x)=") # Funktion zeichnen for x in range(-20, 20): y = eval(funktion) print "f(" , x, ")=" ,y stift.bewegeBis( x*10+320,200-y*10) stift.runter() bild.GibFrei() Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Von Stiften und Mäusen SuM erweitert um: • Sprites • Konzeptfehler gefunden: Beziehung zwischen Stift+Bildschirm hergestellt Beispiel: Funktionsplotter Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Konzept der Diplomarbeit Ziel: Untersuchung der Programmiersprache Python auf Eignung für: • Schnelle Softwareentwicklung (Rapid Prototyping) • Einsatz als Programmiersprache in der Ausbildung Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Praxis Vorstellung von Python: • Objektorientierte Skriptsprache • Historische Einordnung • Open Source • Quellen: www.python.org Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Konzepte der schnellen Softwareentwicklung Evolutionäres Prototyping • (Rapid) Prototyping • Code & Fix • Extreme Programming • Pair Programming Anforderungen Prototyp erstellen Rapid Prototyping Validierung Anforderungen durch den Anwender Praxis Prototyp erstellen Eigenschaften von Skriptsprachen Prototyp OK? • Interpreter Nein Modifikation der Anforderungen Änderungen / Erweiterungen des Prototyps Ja Prototyp OK? Fertiger Prototyp • Fehlertoleranz, einfacher Test • Leicht erlernbar ungeeignet geeignet geeignet Verwerfen, Neudesign Konzept übernehmen, Realisieren z.B. nach Wasserfallmodell Weiterentwicklung zum Endprodukt Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Praxis Schnelle Softwareentwicklung Interessen professioneller Entwickler GUI-Entwurf Rapid Prototyping Generatoren Bibliotheken Dokumentation Wiederverwendung … Portabilität Teamarbeit Lesbarkeit Fehlertoleranz … ? Schüler, Ausbilder Grundlagen Erlernbarkeit Algorithmen Leichte Syntax Orthogonalität … Gemeinsamkeiten? Konflikte? Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Zu untersuchen bezüglich schneller Softwareentwicklung Grundlagen • Komplexität (weniger Code schnellere Entwicklung) ++ Kriterien • Portabilität ++ Analyse RP Analyse FD Praxis • GUI-Entwurf ++ und Werkzeuge + • Automatische Quelltexterzeugung + und Modellierungs-Werkzeuge + • Syntax und Semantik ++ • Wiederverwertbarkeit ++ • Dokumentation ++ • Softwaretest ++ • Fehlersuche ++ • Bibliotheken ++ • Datenbanken + • Besonderheiten (pickling) Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Praxis Beispiele aus der Syntax Viele interne Basisdatentypen: Listen, Tupel, Hashes liste=[1,2,3,4] print liste[2:4] Blockbildung durch Einrücken: gut lesbar, keine Anweisungen nötig if x<0: print “negativ“ else: print “positiv“ Standard-Parameter, offene und benannte Parameterlisten def erhoehe_um(a,b=1): return a+b Dynamische Typisierung, volle Polymorphie Python.exe Integrierte Speicherverwaltung und Gargabe Collection , Keine Pointer Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Praxis Python aus fachdidaktischer Sicht • Ziel: Lernen der Modellierung und Problemlösung Paradigmen und Lösungsansätze: prozedural und obj.-orientiert ++, funktional +, logisch • Analyse der Lesbarkeit (statistisch, Umfragen) ++ • Eingabewerkzeuge und integrierte Entwicklungsumgebungen ++ • Verzicht auf Unnötiges ++ • Orthogonalität: Frei von Widersprüchen + • Konzepte und Lernziele (in Arbeit) • Tutorials und Lernhilfen ++ Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Einleitung Grundlagen Kriterien Analyse RP Analyse FD Python im praktischen Einsatz Umfrage & Statistik Meinungen von Entwicklern und Ausbildern, die Python einsetzen oder erproben: • Überwiegend sehr positives Feedback • Probleme allenfalls im Detail Praxis Fazit: • Positiver Eindruck auch in der Praxis vielfach bestätigt • Python ist gut lesbar und schnell erlernbar • Bestens geeignet für schnelle Softwareentwicklung Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Umfrage: „Lesbarkeit“ des Quelltextes VISUAL BASIC: TCL: ADA: SMALLTALK: APL: SCHEME: BETA: SML: C++: PYTHON: COBOL: PROLOG: DELPHI: PERL: EIFFEL: FORTH: PASCAL: FORTRAN: MODULA: JAVA: LISP: LISP: MODULA: JAVA: PASCAL: FORTRAN: PERL: FORTH: PROLOG: EIFFEL: PYTHON: DELPHI: SML: SCHEME: COBOL: SMALLTALK: C++: TCL: BETA: VISUAL BASIC: APL: ADA: 0,00 1,00 2,00 3,00 4,00 5,00 6,00 Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses Diskussion Ingo Linkweiler, [email protected] www.ingo-linkweiler.de/diplom