Software Engineering 1

Werbung
Software Engineering 1
Vorlesung 5
2005W - 24. November
Implementierung von SW Systemen (mit Java)
Mario Bernhart
[email protected]
www.inso.tuwien.ac.at
INSO - Industrial Software
Institut für Rechnergestützte Automation | Fakultät für Informatik | Technische Universität Wien
Implementierung Grundlagen
Codierungsrichtlinien
▪ Namensrichtlinien
▪ Layoutvorgaben für den Source-Code
▪ Vorgaben für die Kommentierung
Verzeichnisstruktur
Versionsmanagement
Fehlerbehandlung
Idiome und Muster
Integrationsstratiegie
Entwicklungsplattform
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Entwicklung von Programmiersprachen
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Beispiel einer Richtlinie für Versionsbezeichnungen
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Projekttagebuch
Erstel.dat.
Dokument
Version
Autor
Kommentar
3.3.00
Problemanalyse
0.1
KH
Struktur festgelegt
8.3.00
Problemanalyse
0.2
KH
Kundenstruktur besch.
12.3.00
Problemanalyse
0.3
KH
IST-Betriebsabläufe
beschrieben
25.3.00
Systemspezifikation
0.1
CJ
Struktur festgelegt
31.3.00
Problemanalyse
1.0
KH
Endfassung für Kunden Ja
1.4.00
Systemspezifikation
0.2
CJ
SOLL-Betriebsabläufe
beschrieben
3.4.00
Entwurf des User 0.1
Interface
GH
Menüstruktur
entworfen
10.4.00
Problemanalyse
1.1
KH
Änderungswünsche
berücksichtigt
Ja
12.4.00
Systemspezifikation
0.5
CJ
Änderungen umgesetzt
Ja
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Frei.
Integrationsstrategien / Big-Bang-Integration
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Top-down- und Bottom-up-Integration
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Build-Integration
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Schichten-Integration
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Produkte im Arbeitsschritt Implementierung
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Aktivitäten im Arbeitsschritt Implementierung
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Implementierung in XP
Der Kunde ist immer verfügbar
Codierungsstandards
Zuerst der Test, dann das Modul (TDD)
Programmierung in Paaren
Sequenzielle Integration
Oftmalige Integration
Kollektiver Codebesitz
Optimierung erst am Schluss
Keine Überstunden
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Gemeinsame Verantwortlichkeit für den Code
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Granularität von Software-Komponenten
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Model Driven Architecture (MDA)
PIM´s (Platform Independent
Model)
PIM
▪ vollkommen unabhängig von
einer plattformspezifischen
Syntax
PSM (Platform Specific Model)
und Interface-Definitionen
▪ beschreiben, wie das
Basismodell auf verschiedenen
(Middleware-)Plattformen
implementiert wird.
PSM 1
PSM 2
PSM n
Plattform 1
Plattfom 2
Plattfom n
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Zusammenfassung
Zu Beginn des Arbeitsschritts Implementierung muss in einem
Integrationsplan die Reihenfolge der Implementierung der Klassen
sowie der Integration zu Subsystemen und dem fertigen System
festgelegt werden.
Einen hohen Einfluss auf die Implementierung hat auch die
richtige Wahl der Entwicklungplattform.
Bei der Implementierung der Architektur und aller Klassen des
Entwurfs basiert die Qualität größtenteils auf der Erfahrung der
Programmierer.
Richtlinien wie Namenskonventionen, Vorgaben zur Gestaltung
und Kommentierung erhöhen die Wartbarkeit des Codes
beträchtlich.
Die Qualität des Programms selbst kann durch Werkzeuge und
wiederverwendbare Komponenten zwar erhöht werden, ist
letztendlich aber ausschließlich vom Wissen und der Disziplin der
Programmierer abhängig.
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Implementierung
Plattformentscheidung (z.B. mit Java)
▪ J2SE (Core/Desktop)
▪ J2EE (Enterprise/Server)
▪ J2ME (Mobile/Wireless)
▪ Java Card
▪ Java Web Services ( SOA)
▪ Java Business Integration
▪ …
Systemtyp (Webanwendung, WS, Fatclient)
Architekturelle Vorgaben
Integrationsstrategie
Richtlinien
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Entwicklungplattform
Entwicklungsumgebung
Services
Frameworks/Komponenten
Tools
Dokumentation
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Entwicklungsumgebung (IDE)
Integraler Teil einer Entwicklungsplattform
Basisfunktionalität (Coding, Code Management,
Refactoring)
Integration von Tools und Services
Modeling
Team Collaboration
Testing und Test-Management
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Round Trip Engineering
Model
Source
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
/* * Hello World in Java (Servlet
(Servlet)
Servlet) */
import java.io.*;
java.io.*; import
javax.servlet.*;
javax.servlet.*; import
javax.servlet.http.*;
javax.servlet.http.*; public class
HelloWorld extends HttpServlet {
public void doGet
(HttpServletRequest request,
request,
HttpServletResponse response)
response)
throws ServletException,
ServletException,
IOException { PrintWriter out; String
text = "Hello
"Hello World in Java
(Servlet)";
Servlet)";
response.setContentType("text/
response.setContentType("text/html
"); out = response.getWriter();
response.getWriter();
out.println("<html><head><title>");
out.println("<html><head><title>");
out.println(text);
out.println(text);
out.println("</title></
out.println("</title></head><body
("</title></head><body>")
head><body>")
; out.println(text);
out.println(text);
out.println("</
out.println("</body
("</body></
body></html
></html>");
html>");
out.close();
out.close(); } }
Services
Applikationsserver (J2EE, EJB)
Verzeichnisserver (LDAP, JNDI)
Messaging (JMX, MOM)
Datenbank (JDBC)
Webserver/Webcontainer (JSP,
Servlets)
Webservices (JAX*, SOAP,
WSDL)
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
J2EE Overview – A 3 tier architecture
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
J2EE cont.
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Loosly Coupled Systems - Web Services
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Service Orientation / SOA
Viele verschiedene Ansätze
Noch kein genereller Konsens
Versuch Services auf hohem Level zu Orchestrieren (z.B.
WS-Coordination)
Versuch Geschäftsprozesse zu nutzen um Services
dynamisch zu Applikationen zu verbinden (z.B. BPEL)
Versuch die Sicht der Geschäftswelt (Processes) und die
Sicht der IT (Services/OO-Implementierung)
zusammenzuführen
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
SOA cont.
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Tools und Frameworks
Persistenz (JDO, EJB (CMP) Persistency, Hibernate)
Logging/Monitoring (Log4j, Java Logging API)
Unit Tests (JUnit)
UI Komponenten (Swing, SWT, JSF)
Web(UI)frameworks (JSF, Struts)
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Tools und Frameworks cont.
IDE (Eclipse, JSC, Rational SDP, …)
Modeling (UML Extensions) / Round-Trip-Engineering
Versioning (CVS, Subversion)
GUI Builder
Build und Deploy (Maven, Ant)
Debugging (Eclipse Debugger)
Code Style (Checkstyle)
Source Dokumentation (Javadoc)
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Bsp. Webframeworks
UI Komponenten
Request - Response Cycle Management
Session Handling / Session Security
Caching
Formularvalidierung
Internationalisierung
basieren auf niedrigeren Technologien (zB Servlets/JSP)
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Bsp. ORM
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Offene vs. kommerz. Entwicklungsplattformen
Offen
kommerziell
Lizenz
frei
eingeschränkt
Kosten
frei
teilw. hohe
Kosten
Flexibilität
hoch
tlw.
eingeschränkt
Support
Community
professionell
Integrität
weniger
hoch
Funktionalität
tw.
eingeschränkt
hoch
Entwicklungen
klein - mittelgroß
gross
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Future Trends
Service Orientation als Strategie die IT zu „entwirren“ und
zu „dirigieren“
SOA als Strategie Business und IT natürlich zu
verschmelzen
Deklarative statt programmatische Modelle (z.B. Deklarative
Transaktionen, Deklarative Security)
Integration (in verschiedene Ebenen z.B. ERP) wird noch
lange und stark weiterlaufen
XML und QoS von Datenbanken
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Future trends cont.
Domain Specific Languages (DSL)
Time-to-market und Kontrolle für das Management immer
wichtiger (
viel mehr Transparenz in der Entwicklung)
Agile Methoden beeinflussen Prozessmodelle (Hybride
Prozessmodelle z.B. MSF-agile)
A fool with a tool is still a fool – Methodik bestimmt die
Werkzeuge nicht umgekehrt
Software Engineering 1 2005W | Vorlesung 5 – Implementierung von SW Systemen (mit JAVA)
Herunterladen