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)