close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

Ich hab ne 1.1. was ist aktive softwareentwicklung Ziel

EinbettenHerunterladen
Ich hab ne 1.1. was ist aktive softwareentwicklung
Ziel: Softwareentwicklungsprozess flexibler und schlanker als bei
klassischen Vorgehensmodellen
Fokus auf im Projekt zu erreichendes Ziel
Grundgedanke: Ausführbare Software so früh wie möglich im Projekt
Ergebnisse in regelmäßigen, kurzen Abständen dem Kunden zur
gemeinsamen Abstimmung vorlegen
Vorteile:
Kurz nach Projektstart erste Ergebnisse nutzbar
Ergebnisse frühzeitig mit Anforderungen vergleichbar
Neue Ideen und Erkenntnisse für nächste Teilumsetzung
Folge:
Entwicklungsprozess wird flexibler und schneller
Kundenzufriedenheit steigt
2. was passiert da grundlegend
subversion
1.was ist das?
-System zur Erfassung von Änderungen an Dokumenten oder Dateien
(Quelltext!)
-Alle Versionen in Archiv mit Zeitstempel und Benutzerkennung
gesichert
- Frühere Versionen können wieder hergestellt werden
- Ermöglicht sinnvolle Zusammenarbeit an einem Softwareprojekt im
Team
cvs
subversion
git
was macht das
-Protokollieren der Änderungen: Wer hat wann was geändert?
-Wiederherstellung von alten Ständen einzelner Dateien
Z.B. bei versehentlichen Änderungen
-Archivierung der einzelnen Stände eines Projektes
-Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien
-Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. branches) eines Projektes
wie ist das ding aufgebaut ( 3 bestandteile)
- keine Tag- oder Branch-Semantik nativ vorhanden  Strukturierung
und Verwaltung von Kennzeichnungen und Verzweigungen ist Aufgabe
des Benutzers
Best Practice -> im Projekt folgende Basisverzeichnisse anlegen:
-trunk : Hauptentwicklungslinie des Projekts
- branches : weitere Unterverzeichnisse mit alternativen
Entwicklungspfaden
- tags : Kopie von trunk oder einem der branches als
Unterverzeichnis
konzepte des objektorientierten designs(zentrales thema)
1.kohäsion
sagt aus das eine klasse oder funktion nur für eine bestimmte aufgabe zuständig ist
je höher die kohäsion um so besser da man bei änderungen nur die eine klasse oder funktion ändern
muss die für die aufgabe zuständig ist
2.kopplung
bezeichnet die abhängikeit der einzelnen klassen und funktionen untereinander
Möglichst lose Kopplung
weitgehend unabhängige Klassen mit schmaler und wohl definierter Schnittstelle
2 arten explizit implizit
explizite kopplung: öffensichtliche abhängigkeit einer klasse von der implementierung der
anderen
bsp zugriff auf interne datenstruktur
implizit kopplung: nich öffensichtliche abhängigkeit
print beispiel
3. wie kommt man da hin
1. vermeiden von code-Duplizierung weil oft ein indiez für niedrige kohäsion ist
2. verhindern von koplung durch datenkapselung
3. entwurf nach zuständigkeiten
4.code smells vermeiden
5. demeter
datenkapselung
Ein Mittel gegen zu starke Kopplung
-direkter Zugriff auf die interne Datenstruktur unterbunden  Zugriff
nur über definierte Schnittstellen (Black-Box-Modell)
-Nur Informationen über das Was einer Klasse veröffentlichen (Was
leistet eine Klasse)
- Keine Informationen über das Wie (Realisierung) preisgeben
dadurch kann das wie beliebig verändert werden ohne andere klassen zu beeinflussen
codeduplizierung
oft ein Indiz für niedrige Kohäsion
Code-Duplizierung vermeiden: DRY-Prinzip(Don„tRepeat Yourself)
ist problematisch weil wenn man beisielsweise einen bestimmten algorithmus implementiert und
diesen an mehreren stellen verwedet muss dieser überall koriegiert werden
entwurf nach zuständigkeiten
jede Klasse hat eine klare Verantwortung
-Klassen, die verantwortlich für bestimmte Daten sind, sind auch verantwortlich für deren Umgang
Wenn neue Funktionalität zum Programm hinzugefügt werden soll...
-Frage: In welcher Klasse soll die Funktionalität landen?
-Antwort: In der Klasse, die die Daten kapselt, die durch die Funktionalität berührt werden.
Entwurf nach Zuständigkeiten erzeugt lose Kopplung Änderungen im Code bleiben dadurch lokal
demeter
Konsequente Delegation: Law ofDemeter (K. Lieberherr& I. Holland)
-Eine Methode eines Objektes darf nur Methoden aufrufen auf:
-dem eigenen Objekt (this)
-auf ihren Parametern
-auf selbst erzeugten Objekten
-auf assoziierten Objekten
maximale Entkopplung, kein direktes “Durchhangeln” durch Objektstrukturen
Code Smells
Gut zu wissen, wo Code im Entwurf platziert wird
-Manchmal noch wichtiger, zu erkennen, wenn vorhandener Code/Entwurf Probleme verursacht „Code Smell“ (Codegeruch; definiert von Martin Fowler in dem Buch „Refactoring:
ImprovingtheDesign ofExistingCode“)
-Code Smellein Zeichen dafür, dass im Code u.U. etwas falsch ist nicht sofort verwerfen, aber
näher ansehen guter Ansatz zum Beheben kleinerer Probleme in Code und Klassenentwurf, bevor
größere daraus werden
-Die meisten Code Smellssind Zeichen mangelhafter Kohäsion oder gefährlich enger Kopplung
Beispiele für Code Smells
- Divergente Änderungen
 Problem: Einzelne Klasse muss aus unterschiedlichen Gründen in
unterschiedlicher Art und Weise geändert werden  Zeichen für
schlechte Kohäsion der Klassen
 Lösung: Klasse refaktorisieren, um verschiedene Verantwortlichkeiten
in neue Klassen zu extrahieren
- Featureneid
 Problem: Methode in Klasse A zeigt zu viel Interesse an
Funktionsweisen und Datenfeldern von Klasse B  Zeichen für enge
Kopplung zwischen A und B.
 Lösung: Funktionalität der betreffenden Methode in Klasse A nach
Klasse B verschieben, die den meisten Daten in der Aufgabe sowieso
näher ist
- Schrotflintenchirurgie
 Problem: bestimmte Art von Änderung im System führt immer wieder
zu vielen kleinen Änderungen an einer Gruppe von Klassen  zeigt
meistens, dass eine einzelne logische Idee oder Funktion über
mehrere Klassen verteilt ist
 Lösung: Versuch alle Teile des Codes, die geändert werden müssen,
in einer einzelnen, kohäsiven Klasse zusammenfassen
softwaretests
1.einordnen von unit tests bezüglich v modell
- Klassifikation nach V-Modell bzw. W-Modell (Teststufen)
- Unit Level Testing
- Integration Level Testing
- System Level Testing
- Acceptance Level Testing
2.Eigenschaften effektiven Testens
-Erfolgt zeitnah zur Programmierung
-Automatisiert wiederholbar
-Macht Spaß
-Ausführbar so häufig wie Kompilieren
-So einfach wie Kompilieren
-Pragmatisch!
-Mehr Nutzen als Kosten
3.Softwarequalität
Äußere Qualität a.k.a. funktionale Qualität
-Funktionalität
-Fehlerfreiheit
-Benutzbarkeit der Software
->Tests
Innere Qualität a.k.astrukturelle Qualität
-Design und Codestruktur
-Flexibilität
-Testbarkeit
->fortlaufendesRefactoring
4.Zyklus des testen
1. Test schreiben der fehlschlägt
2. Code schreiben das der Test gerade so funktioniert
3. vereinfachen: gerade soviel Code das alle Tests laufen
5.sichtweisen programmierer testen
Programmierer
- Setzt die Problemdomäne in Code um
- Implementiert Funktionalität
Tester
- Fordert das Produkt auf Verhalten zu gewährleisten
- Implementiert Anforderungen
6.probleme beim unit testing wie kann ich die lösen
Unit-Test Probleme
- Benennung von Tests
namen so wählen das man erkennt was getestet wird
- Was testet man (was nicht)
was testbar ist, funktionen die einen rückgabewert haben oder variablen verändern
- Wie testet man
man testet den rückgabewert von funktionen oder die durch die funktion veränderte variable, sowie
die in der funktion zum setzen der werte aufgerufene funktion
- Finden von Testfällen
man testet das was man noch nicht getestet hat fängt bei getter und seter methoden an
- Wie erreicht man eine hohe Code Coverage
viele tests schreiben die viele zeilen code abdecken
7.was sagt die code coverage aus
sagt aus viel prozent des codes der getesteten klassen durch unit test abgedeckt sind
8. muster
- Ist kein Produktionscode (Fokus liegt auf Einfachheit,
Prägnanz, Ausdrucksstärke, nicht auf Effizienz)
- Ein Assert / Konzept pro Test
- Build-Operate-Check Pattern
test in 3 teile unterteilt
1er teil erstellt die testdaten
2er teil manipuliert testdaten
3er überprüft die erwarteten ergebnisse
threads in java
1.was ist nen thread
-thread ist die eigentliche aktivität eines prozesses
-prozess besteht mindestens aus einem thread
-ermöglicht paralelität in einem prozess
→ schnelles umschalten der threads in einem prozess möglich weil systemunabhängig
-besitz eigenen stack, register,befehlszähler
2.wie implementiert das in java
- klasse die den thread beinhaltet muss interface runnable implementiieren
- in der klasse muss dadurch die funktion run implementieren, sie enthält den code der als thread
ausgeführt wird
- thread objekt mit thread verbinden Thread t1=new Thread( new MyRunnable() );
-Thread starten run() wirdnebenläufigausgeführt t1.start
-Alternative zum Interface Runnable: von Thread erben
Nachteil: Einfachvererbung in Java
was passiert wenn man run anstelle von start aufruft
run nicht wird nicht nebenläufig ausgeführt sondern als normale funktion
welche threadzustände gibt es
laufend - nicht laufend - erzeugt - blockiert – terminiert
wie kann man zwichen threadzuständen wechseln
-sleep thread legt sich schlafen
-yield thread reiht sich freiwillig wieder in warteschlagne ein
-start thread wird erzeugt
-stop thread wird an belibiger stelle unterbrochen
-supend thread wird schlafen gelegt
-resume thread wird fortgesetzt
-join thread wartet solange bis der durhc join aufgerufen thread beendet ist
-interupt makiert thread das er unterbrochen werden soll im thread muss mit isinterrupted getestet
werden ob thread makiert ist
warum sollte man den aufruf von stop vermeiden
weil der thread an einer belibigen stelle unterbrochen wird und man deshalb nicht sagen kann
welchen teil der augaben der thread noch erledigt hat und was nicht, dies kann dann zu programm
fehlern führen
-supend und resume betrifft das ebenfalls
.-alternative interrupt benutzen
kritische abschnitte
was ist das problem
sind teile eines programms in dem auf gemeinsam genutzten speicher zugegriffen wird
was kann man dagegen tun
kritischen bereicht mit hilfe von monitoren, mutexen barrieren oder semaphoren schützen
in java kann man beispielsweise den monitor mit synchronize nutzen
wie funktioniert synchronized
synchronize sorgt dafür das sich immer nur ein thread in einem kritischen bereich befindet, indem
es die zugriffe darauf überwach, möchte nun ein thread in den bereich eintreten so wird geschaut ob
ein lock vorhanden ist. Ist einer vorhanden darf der thread nicht eintreten und wird blockiert, ist
keiner vorhanden darf der thread eintreten und der lock wird gesetz, der lock wird entfernt sobald
der thread den kritischen bereich verlässt.
woran wird es synchronisiert
an funktionen und blöcken
warum synchronisiert man nicht alles
-weil man nicht kritischen code ebenfalls schützen würde
- weils keine parralelität ,ehr gibt
- gefahr von deadlocks wir erhöht
-weil jeder synchronize block einen höheren verwaltungsaufwand für die jvm bedeutet
was sind deathlocks
eine gruppe von prozessen befindet sich in einem deadlock zustand wenn jeder dieser prozesse auf
ein ereigniss wartet das nur von einem anderen prozess der gruppe ausgelöst werden kann
refactoring
was bedeuted refactoring (codequalität beispiel)
- Prozess zur Veränderung lauffähiger Software
- Verändert die Struktur (innere Qualität)
- Schließt sich nach dem Testen an
- Fügt keine neue Funktionalität hinzu
- Lesbarkeit
- Wartbarkeit
- Änderbarkeit / Flexibilität
- Bad Code  Good Code /Clean Code
vorgehensweise? wie geht man vor
Die Zwei Hüte
- Alle Tests erfüllt?
- Funktionalität/Anforderungen erfüllt?
- Entwicklerhut absetzen /Refactoringhut aufsetzen
- Code Smells aufspüren
- Refactoringroute überlegen
- Design vereinfachen (kleine Schritte)
durch
- Umbenennen
- Extrahieren / integrieren
- Verschieben
- Zerlegen / Konsolidieren
was ist reflektion im bereich der softwareentwicklung
den code nochmal überdenken und nach verbesserungsmöglichkeiten suchen
solid ein prinzip und am code ein beispiel beschreiben
Swing
unterschied zwichen swing und wat
swing:
-besitzt tastenkombinationen
-drag &drop
-automatisches double buffering
-unterstützt transparenz
-mehr komponenten
-baut auf awt auf
awt
- AWT nutzt die nativen GUI-Komponenten des jeweiligen Betriebssystems zur Darstellung
-ist thread sicher
- awt kompnenten arbeiten nach model view prinzip
was hat es damit aufsich das sie alle vom container erben
- drei Toplevel-Container in Swing: JFrame, JDialog, JApplet
-jede GUI-Komponente muss zu einer Containment Hierarchy gehören, um
sichtbar zu sein  Baumstruktur mit einem Toplevel-Container als Wurzel
- jede GUI-Komponente kann nur in einem Container enthalten sein  bei
Neuzuordnung erst aus dem alten Container entfernt
-jeder Toplevel-Container enthält eine Content Pane, die die sichtbaren GUIElemente enthält
was gibt es bei swing für threads (eventverarbeitung)
-initiale Threads: führen initialen Anwendungscode aus
-Event-Verarbeitungs-Thread : zentraler Thread für Swing-Applikationen verarbeitet events
- Worker-Threads: für zeitintensive Tasks
und was muss man bei deren nutzung beachten
Initiale Threads
legen meist ein Runnable-Objekt an, das die GUI initialisiert und melden dieses Objekt beim EventVerarbeitungs-Thread an
Der Event-Verarbeitungs-Thread
im Event-Verarbeitungs-Thread sollten nur kurze Tasks laufen, sonst „friert das UI ein“
Worker-Threads und SwingWorker
für länger dauernde Aufgaben, z.B. Bilder laden
SwingWorker(seit Java 6 verfügbar) ist abstrakt
was sin dlayoutmanager und warum sollte man die benutzen
was
LayoutManager bestimmt Größe und Position der Komponenten in einem
Container
warum
-ansonsten absolute Positionierung mit entsprechenden Nachteilen
- bei Größenänderungen des Toplevel-Containers
- bei Unterschieden zwischen Nutzern und Systemen (z.B.
verschiedene Schriftgrößen oder UI-Kulturen)
bsp:
BorderLayout: 5 bereiche (page start/end, line start/end, center)
box layout: stapelt auf oder nebeneinander
GridBagLayout: ordnet kompnenten in zellen in einem gitter
design pattern
1.beschreiben was so ein design pattern ausmacht
- Ein Muster ist eine Lösung eines Problems in einem
bestimmten Kontext
- Lösungsschablonen für wiederkehrende Entwurfsprobleme
der Softwareentwicklung
- Wiederverwendbare Design-Vorlage
 Muss in Code „transformiert“ werden
- Bestandteile
 Name, Problembeschreibung, Lösung, Konsequenzen
ein designpatern mal am quellcode erklären bzw. erklären
Singleton (creational Pattern)
- Stellt sicher das es nur eine Instanz der Klasse gibt, und
bietet einen globalen Zugriffspunkt für diese Instanz
- Wesentlich bessere Lösung als globale Variablen
- Wesentlich bessere Lösung als statische Methoden, da
diese Vererbung verhindern
- Ermöglicht variable Anzahl von Instanzen
- Vorsicht bei mehreren ClassLoader, Vererbung,
- Multithreading und Testen
- Wenn möglich auf Singletons verzichten
was bedeutet occam razor in bezug zu designpattern
sagt aus das die einfachste Lösung die beste ist
mvc
mvc in eigenen worden wiedergeben
mvc=modell view controller
auf den begriff model view controller wiedergeben
Model View Controller (MVC, ‚Modell/Präsentation/Steuerung‘) ist ein Architekturmuster zur
Strukturierung von Software-Entwicklung in die drei Einheiten Datenmodell (engl. model),
Präsentation (engl. view) und Programmsteuerung (engl. controller). Ziel des Musters ist ein
flexibler Programmentwurf, der eine spätere Änderung oder Erweiterung erleichtert und eine
Wiederverwendbarkeit der einzelnen Komponenten ermöglicht.
gegenüberstellen zu mvp (model view präsenter)
Konzept der seperated präsentation(view und domain modell)
-Domain Model
Daten und Verhalten
Beispiele
Thermometer Temperatur
Steuererklärung Personendaten, Validierung, Berechnungsregeln
-Presentation
Darstellung des fachlichen Konzepts
was würde es bedeuten wenn ich nicht solche schichten einführe (teller spagetti)
Alternative
Alle Funktionen im visuellen Teil realisieren
Vorteil
 Direkte Programmierung, da es nur eine
große Komponente gibt
 Kurze Wege, keine „Umwege“ über Modell
Nachteil
 Kann sehr schnell sehr komplex werden
 Führt höchstwahrscheinlich zu 
 Schwer zu testen
 Ungefähr so OO wie COBOL-85
welche grundlegenen designpattern werden von mvc umgesetzt bzw. können umgesetzt
werden
Model
Observer
View
Composite
Controller
Strategy
erklären sie das anhand eines beispiel oder quelltext
a also mvc würde ich so erklären nehmen wir an man programmiert einen taschenrechner dann wäre
die gui und die interne event verarbeitung der view, der eventhread wäre dann der controller der das
modell aufruft welches das ergebniss berechnet und die funktion zum anzeigen aufruft also den
view aktualisiert
Gui
was bedeutet usability
Usability (Software-Ergonomie)  Wissenschaft von der Benutzbarkeit und
Gebrauchstauglichkeit von interaktiven Computersystemen und
Computerprogrammen
woran lässt sich das messen
Qualität der Usability lässt nach DIN EN IISO 9241-11 „Anforderungen an die
Gebrauchstauglichkeit“ messen anhand der...
 Effizienz (Nutzer kann mit dem Programm seine Ziele verwirklichen)
 Effektivität (Aufwand zur Zielerreichung möglichst gering)
 Zufriedenheit der Nutzer (Nutzer arbeiten gern mit dem Programm  „joy
of use“)  oft entscheidend für die Akzeptanz
code reviews
was sind ode reviews
Systematische Untersuchung des Quellcodes, um Fehler zu finden
ziele
 Verbesserung der Softwarequalität
 Schnelle und praxisorientierte Weiterentwicklung der Fähigkeiten des
Entwicklers
 Verteilung des impliziten Wissens des Entwicklers auf mehrere Personen
 Typischerweise erkannte Fehler:
 Abweichungen von Standards
 Fehler in den Anforderungen
 Fehler im Design
 Unzureichende Wartbarkeit
 Falsche Schnittstellenspezifikation
xml
welchen zweck erfüllt xml
Überblick
- Darstellung hierarchisch strukturierter Textdaten (Unicode)
- Spezifiziert vom W3C (SGML Variante)
- Zur Beschreibung von Dokumenten (Office 2007)
- Zum Austausch von Daten übers Internet (Webservices ...)
Ziele
- Simplicity (einfach, schlicht, unkompliziert)
- Generality (allgemeingültig)
Usability (benutzerfreundlich, benutzbar, verwendbar)
Grundgedanke: Trennung von Daten und Repräsentation
valid und wellfor ka :D im zusamenhang mit xml
Well-formedness
- Ein root-Tag
- Elemente mit Inhalt besitzen begin- und end-Tag
- begin- und end-Tags sind ebenentreu-paarig verschachtelt
- Ein Element darf nicht mehrere Attribute mit demselben
Namen besitzen
Valid
- Das Dokument ist Well-formed
Das Dokument enthält einen Verweis auf eine Grammatik
– Das Dokument hält das Format der Grammatik ein
xml prozessing stacks und prinzipien (dom)
SAX
Simple API for XML (SAX)
Push-API
Sehr performant
Ereignisgesteuert
Sequentielle Verarbeitung
read-only
Komplex
Speicherbedarf steigt proportional mit Datenstromgröße
DOM
Document Object Model (DOM)
Grundlage: XML Dokumente sind immer Bäume
 Transformation in einen DOM
DOM Objekte können dann problemlos ausgewertet und
traversiert werden
Weniger Performant, hoher Speicherbedarf
Weniger Komplex
Java ArchitectureforXML Binding (JAXB 2.0)
im java buch durchlesen!!!
XML Binding?
XML Elemente werden auf POJOs abgebildet
Referenzimplementierung: https://jaxb.dev.java.net/
In Java6 enthalten
Baut auf Low-Level APIs auf
Deutlich einfacheres Arbeiten mit XML Daten
Robuster, übersichtlicher, skalierbarer,(performanter, speichereffizienter) … als JAXP
Alternativen
XMLBeans, JiBX
Schemasprache publiziert vom W3C mit Konzepten aus vielen anderen Sprachen (DTD,
XDR, SOX)
Ist selbst ein XML-Vokabular
Viele vordefinierte Datentypen +
Mehr Möglichkeiten für Konsistenzregeln
Vererbung, Komposition d.h. aus Teilschemata können neue Schemata erstellt werden
Namespaces
Nachteile
Komplex
Benötigt zur Validierung mehr Ressourcen
ecb ansatz
was hat es mit den 3 dingern auf sich
Entityrepräsentiert Daten
Controlrepräsentiert Prozesswissen/Funktionen
Boundary: repräsentiert Schnittstellen zwischen UseCase und Actor
wie funktioniert das grundlegend
Zeigt einfachen Übergang von Geschäftsprozessmodellierung in
objektorientierte Implementierung
 Geschäftsprozess wird zum Use Case
 bearbeitete und abgelegte Akten werden zu (dummen) Entities...
 Kundenschnittstelle (oftmals der Außendienstler) wird zu Boundaries...
 internes Prozesswissen des Sachbearbeiters findet sich im Control
wieder...
was kann man abwegen um da zu landen
warum benutzen
siehe mvc
wo liegt der unterschied zum mvc
Entities= Models
Boundaries= Views
Controls = Controller
Allerdings doch erhebliche Unterschiede zwischen Controls und Controller
MVC-Controller rein technische Steuerungsfunktion
ECB-Controlbeinhaltet Geschäftsprozessfunktionalität
Ist bei MVC in den Model-Klassen
ECB trennt also Geschäftsprozesse nochmals von den Daten kapselt Prozesse in einem ControlObjekt
ECB also fast Umsetzung des klassischen 3-Schichten-Modells in Objekte
Solid Principles:
Document
Kategorie
Technik
Seitenansichten
11
Dateigröße
121 KB
Tags
1/--Seiten
melden