Upload
lamkhuong
View
218
Download
0
Embed Size (px)
Citation preview
Softwareentwicklungsprozessim Praktikum
25. April 2013
Taentzer Software-Praktikum 2013 15
Agile Softwareentwicklung
Eine agile Methodik stellt die beteiligten Menschen in denMittelpunkt und versucht die Kommunikation undZusammenarbeit 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 16
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 17
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 18
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
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
Taentzer Software-Praktikum 2013 20
Überblick über AnwendungsfälleKonzepte: 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 21
AnwendungsfallbeschreibungEin 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 22
Beispiel: Repräsentative TestfälleTestfä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älleTestfä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 24
Beispiel: Repräsentative TestfälleTestfä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.
Einführung in Android
25. April 2013
Taentzer Software-Praktikum 2013 26
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 27
Android Architektur
developer.android.com
Taentzer Software-Praktikum 2013 28
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 Anwendungen genutzt werden)
developer.android.com
Starten einer App im Emulator
Android Virtual Device (AVD) anlegen AVD Manager aufrufen mit New ein neues AVD
anlegen
Taentzer Software-Praktikum 2013 29
Taentzer Software-Praktikum 2013 30
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 31
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 32
Application ComponentsAusfü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 33
Die Android Manifest-Datei
AndroidManifest.xml informiert Android über die Komponenten der Anwendung:
Start-Activity
Taentzer Software-Praktikum 2013 34
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 35
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() void onPause() void onStop() void onDestroy()
Alle Activities müssen onCreate() implementieren.
Diese Methoden sollten zuerst die entsprechende Supermethode aufrufen.
Taentzer Software-Praktikum 2013 36
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 37
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 38
Layout graphischer Komponenten 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
create_counter.xml
Taentzer Software-Praktikum 2013 39
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.
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
Taentzer Software-Praktikum 2013 41
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.