28
Softwareentwicklungsprozess im Praktikum 25. April 2013

Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Embed Size (px)

Citation preview

Page 1: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Softwareentwicklungsprozessim Praktikum

25. April 2013

Page 2: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 3: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 4: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 5: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 6: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 7: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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“

Page 8: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 9: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 10: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 11: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 12: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Einführung in Android

25. April 2013

Page 13: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 14: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Taentzer Software-Praktikum 2013 27

Android Architektur

developer.android.com

Page 15: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 16: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Starten einer App im Emulator

Android Virtual Device (AVD) anlegen AVD Manager aufrufen mit New ein neues AVD

anlegen

Taentzer Software-Praktikum 2013 29

Page 17: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 18: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 19: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 20: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

Taentzer Software-Praktikum 2013 33

Die Android Manifest-Datei

AndroidManifest.xml informiert Android über die Komponenten der Anwendung:

Start-Activity

Page 21: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 22: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 23: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 24: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 25: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 26: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.

Page 27: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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

Page 28: Softwareentwicklungsprozess im Praktikumswt/ss13/swPrak/files/Folien130425.pdf · Software für mobile Geräte: ... Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener

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.