Softwareentwicklungsprozess im Praktikum - April 2013

 
WEITER LESEN
Softwareentwicklungsprozess im Praktikum - April 2013
Softwareentwicklungsprozess
        im Praktikum

         25. April 2013
Softwareentwicklungsprozess im Praktikum - April 2013
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
Softwareentwicklungsprozess im Praktikum - April 2013
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
Softwareentwicklungsprozess im Praktikum - April 2013
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
Softwareentwicklungsprozess im Praktikum - April 2013
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
Softwareentwicklungsprozess im Praktikum - April 2013
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