Softwareentwicklungsprozess im Praktikum - April 2013
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Agile Softwareentwicklung Eine agile Methodik stellt die beteiligten Menschen in den Mittelpunkt und versucht die Kommunikation und Zusammenarbeit der Beteiligten effektiv und effizient zu gestalten. • Berücksichtigung sozialer Faktoren • Best Practices • gute Akzeptanz und Anwendbarkeit • keine unbedingte Einhaltung der Regeln Taentzer Software-Praktikum 2013 15
Extremes Programmieren möglichst simples Design schnelle testbare Resultate permanentes Testen Entwicklung von Testfällen schon in frühen Phasen Implementierung von Testklassen Testen von kleinen Einheiten, nicht nur Systemtests Refactoring: ständiges Überarbeiten des Modells und der Implementierung ohne Änderung der Funktionalität Taentzer Software-Praktikum 2013 16
Extremes Programmieren (2) Paarprogrammierung: Das Modell und der Programmcode werden immer von zwei Entwicklern/innen gleichzeitig entwickelt. gemeinsame Verantwortung: Jede(r) kann jedes Dokument jederzeit ändern. häufige Integration von Teilen gemeinsame Kodierungsrichtlinien Taentzer Software-Praktikum 2013 17
Softwareentwicklung im Praktikum Agile SW-Entwicklung lässt viele Freiheiten in der Software- entwicklung zu und kann verschiedene Ausprägungen haben. Im Praktikum wenden wir modellbasierte agile Softwareentwicklung an, d.h. externer Auftraggeber: Ökokisten-Betrieb verkürzte Anforderungsanalyse, da Anforderungsbeschreibung schon vorhanden Modellierung des Entwurfs mit UML, simples Design Paarprogrammierung, kurze Iterationen Jede(r) ist für die gesamte Software verantwortlich. stetiges Testen, keine unabhängige Qualitätssicherung einfaches Refactoring keine Einführung der Software beim Anwender generelles Projektmanagement bei den Lehrveranstaltern, detailliertes Projektmanagement in den Arbeitsgruppen Taentzer Software-Praktikum 2013 18
Anforderungsbeschreibung Die funktionalen Anforderungen sind durch eine Menge von Anwendungsfällen gegeben. Aufgabe im Praktikum: Die vorhandene Anforderungsbeschreibung ausbauen: im Forum Fragen stellen fehlende Details einfügen Testfälle skizzieren Taentzer Software-Praktikum 2013 19
Überblick über Anwendungsfälle Konzepte: Akteure: Benutzer, Kunde,… Anwendungsfall Akteur führt Anwendungsfall aus. Anwendungsfall ist einem anderen enthalten (include). Anwendungsfall erweitert einen anderen (extend). Erweiterungspunkt definieren Beispiel „ClickCounter“ Taentzer Software-Praktikum 2013 20
Anwendungsfallbeschreibung Ein Anwendungsfall ist eine abgeschlossene, zusammenhängende Einheit, welche einen Teil der Funktionalität des Systems repräsentiert. Anwendungsfallbeschreibung: Beispiel Titel: Zähler anlegen Kurzbeschreibung: Es wird ein neuer Zähler in einer Gruppe angelegt. Vorbedingungen: Die Liste der vorhandenen Zähler wird angezeigt. Beschreibung des Ablaufs: Es werden ein Name und eine Beschreibung erzeugt sowie eine Gruppe ausgewählt. All diese Angaben sind optional. Es auch eine neue Gruppe angelegt werden. Auswirkungen: Der Zähler ist angelegt worden. Wurde der Name, die Beschreibung oder die Gruppe nicht angegeben, werden Default- Werte verwendet. Anmerkungen: keine Taentzer Software-Praktikum 2013 21
Beispiel: Repräsentative Testfälle Testfälle für den Anwendungsfall „Zähler anlegen“: Zähler ohne Eingabewerte anlegen: Eingabe: eine nichtleere Zählerliste, Befehl zum Anlegen eines neuen Zählers Testbedingung: Ein neuer Zähler mit Default-Werten wird in der Zählerliste angezeigt. Zähler mit Eingabewerten wird in vorhandener Gruppe angelegt: Eingabe: nichtleere Notizenliste, Befehl zum Anlegen eines neuen Zählers, Name, Beschreibung angeben und vorhandene Gruppe auswählen Testbedingungen: Zähler wird in der vorhandenen Gruppe angelegt. Sein Name und seine Beschreibung werden angezeigt. Der Zähler wird in der Zählerliste angezeigt. Taentzer Software-Praktikum 2013 22
Beispiel: Repräsentative Testfälle Testfälle für den Anwendungsfall „Zähler anlegen“: Zähler ohne Eingabewerte anlegen: Eingabe: eine nichtleere Zählerliste, Befehl zum Anlegen eines neuen Zählers Testbedingung: Ein neuer Zähler mit Default-Werten wird in der Zählerliste angezeigt. Zähler mit Eingabewerten wird in vorhandener Gruppe angelegt: Eingabe: nichtleere Notizenliste, Befehl zum Anlegen eines neuen Zählers, Name, Beschreibung angeben und vorhandene Gruppe auswählen Testbedingungen: Zähler wird in der vorhandenen Gruppe angelegt. Sein Name und seine Beschreibung werden angezeigt. Der Zähler wird in der Zählerliste angezeigt. Taentzer Software-Praktikum 2013 23
Beispiel: Repräsentative Testfälle Testfälle für den Anwendungsfall „Zähler anlegen“: Zähler mit Eingabewerten wird in neuer Gruppe angelegt: Eingabe: nichtleere Notizenliste, Befehl zum Anlegen eines neuen Zählers, Name, Beschreibung angeben und neue Gruppe anlegen Testbedingungen: Zähler wird in der neuen Gruppe angezeigt. Sein Name und seine Beschreibung werden angezeigt. Der Zähler wird in der Zählerliste angezeigt. Das Anlegen eines Zählers wird abgebrochen: Eingabe: eine nichtleere Zählerliste, Befehl zum Anlegen eines neuen Zählers, Eingabe eines Namen, ohne sichern wieder zurück in Zählerliste Testbedingung: Es wird kein neuer Zähler in der Zählerliste angezeigt. Taentzer Software-Praktikum 2013 24
Einführung in Android 25. April 2013
Was ist Android? Software für mobile Geräte: Betriebssystem Middleware Kernanwendungen Android SDK: Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform URL für Entwickler: developer.android.com Open Source Software Taentzer Software-Praktikum 2013 26
Android Architektur developer.android.com Taentzer Software-Praktikum 2013 27
Android Anwendungen Android enthält eine Reihe von Kernanwendungen. Email -Client, SMS- Programm, Kalender, Karten, Web-Browser, Kontakte, etc. Alle Anwendungen sind in Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener Linux-Prozess eigene Java-VM eindeutige Linux User Id (kann auch von anderen developer.android.com Anwendungen genutzt werden) Taentzer Software-Praktikum 2013 28
Starten einer App im Emulator Android Virtual Device (AVD) anlegen AVD Manager aufrufen mit New ein neues AVD anlegen Taentzer Software-Praktikum 2013 29
Application Framework Views: graphische Komponenten zum Aufbau einer Anwendung, z.B. Listen, Textfelder, Knöpfe und auch ein einbettbarer Web-Browser Content Providers: ermöglichen den Zugriff auf Daten, auch aus anderen Anwendungen Resource Manager: Zugriff auch Resourcen, die nicht Code sind, z.B. Graphiken Notification Manager: zur Benachrichtigung des Nutzers über Ereignisse Activity Manager: organisiert den Lebenszyklus einer Anwendung Taentzer Software-Praktikum 2013 30
Bibliotheken, Runtime und Kernel Android enthält eine Reihe von C/C++-Bibliotheken. z.B. SGL und 3D Librairies für 2D und 3D-Darstellungen z.B. SQLite als leichtgewichtiges relationales Datenbank- system Android Runtime Jede Android-Anwendung läuft in einem eigenen Prozess mit der sogenannten Dalvik Virtual Machine. Die Dalvik VM basiert auf einem Linux Kernel. Linux Kernel Android basiert auf der Linux Kernel Version 3.0.1 Der Kernel fungiert als Abstraktionsebene zwischen Hardware und dem Rest des Software Stack. Taentzer Software-Praktikum 2013 31
Application Components Ausführbare Anwendungsteile: Activities: visuelle Komponente Beispiel: Liste von textuellen Kommentaren Eine Anwendung kann mehrere Activities haben, die sich gegenseitig benutzen. Eine Activity ist als Start-Activity markiert. Jede Activity hat ein eigenes Fenster, in das sie zeichnet. Services: nicht sichtbare Komponenten Beispiel: Ein Service, der Musik abspielt Broadcast Receiver: hört auf Broadcast-Nachrichten Beispiel: Wechsel der Zeitzone, geringer Batteriestand, Aufnahme eines Fotos, etc. Content Providers: veröffentlicht eine Menge von Daten für andere Anwendungen Daten sind meist in einer SQLite-Datenbank gespeichert. Taentzer Software-Praktikum 2013 32
Die Android Manifest-Datei AndroidManifest.xml informiert Android über die Komponenten der Anwendung: Start-Activity Taentzer Software-Praktikum 2013 33
Aktivieren von Komponenten durch Intents Activities, Services und Broadcast Receivers werden durch asynchrone Nachrichten, sogenannte Intents, aktiviert. Start einer Activity: Intent erzeugen: Intent intent = new Intent(this, MyActivity.class) this – Kontextkomponente, von der der Intent erzeugt wird. MyActivity.class – Activity, die aktiviert werden soll Start der Activity: c.startActivity(intent) c - Kontextkomponente In der gestarteten Activity: getIntent() liefert den initialen Intent zurück. Beenden einer Activity: selten, da in andauernder Kommunikation mit dem Nutzer finish() oder finishActivity() Taentzer Software-Praktikum 2013 34
Lebenszyklus einer Activity Eine Activity hat drei mögliche Zustände: active oder running: auf dem Display zu sehen, Fokus der Ausführung paused: sichtbar, aber hat nicht den Fokus. Eine andere Activity liegt darüber. stopped: nicht sichtbar und ohne Fokus, der Zustand und die Daten werden solange gehalten, wie Speicher vorhanden Zustandswechsel werden durch Methodenaufrufe mitgeteilt: void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() Diese Methoden sollten void onPause() zuerst die entsprechende void onStop() Supermethode aufrufen. void onDestroy() Alle Activities müssen onCreate() implementieren. Taentzer Software-Praktikum 2013 35
Lebenszyklus einer Activity onCreate(): das normale Setup, Bundle-Objekt übergibt den bisherigen Zustand, danach direkt onStart() und onResume() onPause(): eine andere Activity wird aktiv, ungesicherte Daten werden gespeichert onStop(): eine andere Activity wird sichtbar oder Activity wird zerstört, onPause() wird immer vorher aufgerufen developer.android.com Taentzer Software-Praktikum 2013 36
Benutzung von Activities Activities können andere starten, auch wenn sie zu anderen Anwendungen gehören. Beispiel: Eine Activity, die einen Kartenausschnitt anzeigt, kann in verschiedenen Anwendungen genutzt werden. Zur Nutzung einer Activity einer anderen Anwendung muss nur ein passender Intent an diese Activity geschickt werden. Taentzer Software-Praktikum 2013 37
Layout graphischer Komponenten create_counter.xml Layout-Definition durch eine XML-Layout Datei. Jedes XML-Element ist entweder ein View oder ein ViewGroup-Objekt. Vordefinierte ViewGroup- Objekte: LinearLayout RelativeLayout AbsoluteLayout TableLayout etc. Layout-Parameter: height, width vordefinierte Werte: fillParent: füllt Platz des ParentView aus wrap_content: umhüllt den Inhalt minimal @+id/… verweist auf ids in der Datei R.java Taentzer Software-Praktikum 2013 38
Die Datei R.java R.java wird automatisch erstellt und soll nicht geändert werden. Sie enthält einen Index für alle Ressourcen der Anwendung. Diese Klasse kann als Abkürzung für die Referenzierung von Ressourcen genutzt werden. Sie ist direkt abhängig von den Inhalten im Ordner /res. Taentzer Software-Praktikum 2013 39
Debuggen von Android Apps App in Emulator starten Breakpoints im Code setzen In DDMS Perspektive gehen App auf Debug setzen App im Emulator ausführen Zur Debug Perspektive wechseln Schrittweise ausführen Taentzer Software-Praktikum 2013 40
Zusammenfassung Android bietet einen Software-Stack für mobile Geräte, bestehend aus Betriebssystem, Middleware und Kernanwendungen Android SDK bietet Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform Die graphischen Komponenten folgen einem vorgegebenen Zustandsautomaten. Dadurch behält der Benutzer die maximale Kontrolle über die Anwendungen. Jede Anwendung läuft in einem eigenen Prozess mit eigener Virtual Machine. Taentzer Software-Praktikum 2013 41
Sie können auch lesen