Modern Software Quality & Decremental Development Regaining Simplicity in Software

Ähnliche Dokumente
Software Construction

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Versionskontrolle mit Subversion

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Software development with continuous integration

Programmentwicklung ohne BlueJ

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Software-Engineering Grundlagen des Software-Engineering

Einführung in Eclipse und Java

Enigma2 Plugin Entwicklung mit Eclipse

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Open Source. Hendrik Ebbers 2015

Frontend Migration from JSP to Eclipse Scout

Installation mit Lizenz-Server verbinden

Python SVN-Revision 12

Agile Software Verteilung

Einreichung zum Call for Papers

Kurzanleitung Installation der Zend Studio Sprachpakete

Informationen zur Verwendung von Visual Studio und cmake

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH

Preisliste für The Unscrambler X

CABLE TESTER. Manual DN-14003

Versionsverwaltung mit SVN

Lokale Installation von DotNetNuke 4 ohne IIS

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Java Entwicklung für Embedded Devices Best & Worst Practices!

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Automatisiertes End-to-end Testen von Enterprise Applikationen

Debugging in Magento

Android-Testautomatisierung mit Robotium

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

25 Import der Beispiele

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

Algorithmen mit Python

ENTERPRISE MODERNIZATION

Rene Schneider GEBIT Solutions GmbH. Integrity - ein innovatives Tool zur Acceptance-Test-Automatisierung

Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung

Enterprise Control Center. Systemvoraussetzungen V2.1

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Reporting Services und SharePoint 2010 Teil 1

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Tipp: Proxy Ausschalten ohne Software Tools


OP-LOG

Testen und Testautomatisierung in agilen Projekten

Branching und Merging mit Visual Studio Team System

Java: Vererbung. Teil 3: super()

Programmieren I. Kapitel 7. Sortieren und Suchen

SMART Newsletter Education Solutions April 2015

DIGICOMP OPEN TUESDAY AKTUELLE STANDARDS UND TRENDS IN DER AGILEN SOFTWARE ENTWICKLUNG. Michael Palotas 7. April GRIDFUSION

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Entwicklung in Open-Source- Projekten am Beispiel MediaWiki

Verwendung des IDS Backup Systems unter Windows 2000

Test-Driven Design: Ein einfaches Beispiel

Scriptbasierte Testautomatisierung. für Web-Anwendungen

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

BMC Control M Tipps & Tricks 2. Martin Dienstl, BMC Software martin_dienstl@bmc.com

Uwe Baumann artiso Solutions

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Kurzanleitung zu. von Daniel Jettka

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Continuous Database Integration mit Flyway

Einführung in Subversion. Tutorium SWP

Test Driven Development

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Bildverarbeitung und Algorithmen. Einführung in ImageJ

Deployment Deployment Seite 1 / 25

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Migration von Subversion nach Mercurial und Einsatz dezentraler Versionskontrolle in Unternehmen

Einführung in Subversion

1 Installation QTrans V2.0 unter Windows NT4

Continuous Delivery in der Realität eines Großunternehmens

Das neue Volume-Flag S (Scannen erforderlich)

Source Code Konverter Online: (VB.net <-> C#) Kommerzielle Produkte (VB, C#, C++, Java) Code Nachbearbeitung in der Praxis...

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Eclipse 3.0 (Windows)

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

doubleslash Net-Business GmbH

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle!

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

Christoph Behounek, eggs unimedia

Anwenderhandbuch logiware IO-Stick

Quickstep Server Update

Perceptive Document Composition

Java Script für die Nutzung unseres Online-Bestellsystems

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Abschluss Version 1.0

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

WORKSHOP VEEAM ENDPOINT BACKUP FREE

mini_sendmail, nullmailer & friends

Transkript:

Modern Software Quality & Decremental Development Regaining Simplicity in Software Prof. Peter Sommerlad HSR - Hochschule für Technik Rapperswil Institute for Software Oberseestraße 10, CH-8640 Rapperswil peter.sommerlad@hsr.ch http://ifs.hsr.ch http://wiki.hsr.ch/petersommerlad Innovationstagung HSR 27.6.2007 1

Überblick Praxisrelevante Qualtiät o seriöses Versionsmanagment o automatisiertes (Unit-) Testen o automatische Builds vieles andere auch noch... Blick in die Zukunft: Decremental Development 2

schon erlebt? schon so gemacht? "Jeden Woche wird eine Kopie des Arbeitsverzeichnisses in ein neues Verzeichnis kopiert" o so steht es in der Arbeitsanweisung! o manchmal machen es die Entwickler auch "Jeden Monat wird das Arbeitsverzeichnis auf CD-ROM gebrannt" o das ist kein seriöses Backup, wenn es denn überhaupt passiert o oops eine Woche vor Liefertermin ist der aktuelle Code weg.. Ab heute nie wieder so! 3

Beispiel cvs/subversion gratis! CVS o concurrent version system o http://www.gnu.org/software/cvs/ o Literatur: Pragmatic Version Control David Thomas, Andrew Hunt SVN - subversion o Nachfolger von CVS (Concurrent Versions System [...] goal [...] is a compelling replacement for CVS [...] Schwächen von CVS beseitigen bei Beibehaltung der Grundidee o http://subversion.tigris.org/ o Pragmatic Version Control with subversion Mike Mason 4

CVS/Subversion Clients (Auswahl) Tortoise/TortoiseSVN o Integration in Windows Explorer o Unabhängig von IDE Subclipse o Plugin für Eclipse IDE o Vorbild ist Eclipse CVS Client Weitere Clients: http://subversion.tigris.org/project_links.html 5

Ist das Testen? "es kompiliert" o Compiler sieht keine Fehler "es läuft" o Programm lässt sich starten "es stürzt nicht ab" o keine schwerwiegenden Stabilitätsfehler bei "sinnvollen" Eingaben "Affentest - überstanden" o kein leicht provozierbarer Absturz bei zufälligen (unsinnigen) Eingaben "der use case funktioniert" o einmal bei korrekten Eingaben ein sinnvolles Ergebnis 6

Was ist Testen? all das vorherige, aber professionelle Software Entwicklung braucht mehr! Automatisierte Tests: o Unit Tests o Funktionale Tests o Integrations-, Last- und Performance Tests o Code-Analyse-Tools (lint, Compiler) Manuelle Tests: o ad-hoc Tests (durch Entwickler) o Benutzertests mit Testplan o Usability Tests, GUI Tests 7

Tests erlauben Stressreduktion Teufelskreis ohne (automatische) Tests: keine Zeit für Tests mehr Fehler Stress Testen keine Tests mehr Stress Tests automatisieren und oft laufen lassen! Testing Framework(s) verwenden, z.b. Java - JUnit.NET - NUnit C/C++ - CUTE, CPPUnit 8

Green-Bar for C++ CUTE Plug-In for Eclipse 9

Automatisierte Tests Vorteile von automatisierten Tests o Wiederholbarkeit - Regressionstests Absicherung bei Änderung, Portierung, Erweiterung geringe/keine Kosten bei Wiederholung erlaubt Refactoring! o Eindeutige Spezifikation Testcode ist Programmcode und damit eindeutig o Wiederholbarkeit, Wiederholbarkeit, Wieder... Nachteile o Evtl. mehr Code zu schreiben und zu pflegen? o Testcode ist Programmcode Werden wirklich die richtigen Anforderungen getestet? Was muss überhaupt getestet werden? Auch Testcode muss refaktorisiert werden! 10

Automation Road Map Quelle: Pragmatic Project Automation o Mike Clark Versionsmanagement ist selbstverständlich, oder? o alles, was nicht automatisch generiert werden kann, liegt im Repository! Ziel: Build Prozess auf separatem Build Server setzt auf das Repository auf (next slide) 11

Automatisierung mit Build-Server OOPS, File vergessen einzuchecken So soll es sein! 12

Warum Automation? "IDE (Eclipse, Visual Studio) macht doch schon alles", aber: o jeder Entwickler hat eigene Installation Vergisst Checkin, Abhängigkeiten von lokal installierten Komponenten "bei mir läuft es aber... " o neue Versionen der IDE können inkompatibel sein genauso wie die IDE-Konfiguration unterschiedlicher Entwickler o Wiederholbarkeit der Ergebnisse nicht garantiert wegen der vielfältigen individuellen Einstellmöglichkeiten Automation Tools (Auswahl) o make, ant, CruiseControl, Maven 13

Praktiken Pragmatischer Programmierer Personal Practices P1. Learn Continuously P2. Develop Awareness P3. Fix Broken Windows Infrastructure I1. Use Version Control I2. Unit Test I3. Automate Everything Design Practices D1. DRY Principle D2. Decoupling Code D3. Large-scale Design D4. Program Deliberately von Andy Hunt, 2005 Team Practices T1. Communicate T2. Structure Teams T3. Dig for Requirements T4. Use Iterations 14

Decremental Development Regaining Simplicity in Software Reduce software size TO 10% o while keeping required functionality o while improving its quality o while improving its design 15

Vision Microsoft releases Windows 2020 consisting of fewer source code lines than Windows 95. This Windows 2020 is bug free, fully automatically tested, easily adaptable by its users and runs the software required by those users easily on the hardware they already possess. And, BTW, it is released in the year 2019. 16

Vision Open Source version In 2015 a Linux version is released that has fewer source code lines than Linux 1.0 (1994) This Linux version is bug free, fully automatically tested, easily adaptable by its users and runs the software required by all users easily on the hardware they already chose to run it on. 17

One means of reduction -> choice of language using System; class HelloWorld { public static int Main(String[] args) { Console.WriteLine("Hello, World!"); return 0; } } puts "Hello, World!" 18

Use existing stuff from libraries -> Knowledge a=[42, 1, 7, 2, 34, 64, 29, 2] def swap a, i, j a[i],a[j] = a[j], a[i] end for i in 0..a.length-1 do for j in i+1...a.length do if (a[i] > a[j]) then swap(a, i, j) end end end puts "a:" puts a a=[42, 1, 7, 2, 34, 64, 29, 2] puts "a:" puts a.sort 19

Famous Quotes by Tony Hoare Inside every large program, there is a small program trying to get out. There are two ways of constructing a software design: o one way is to make it so simple that there are obviously no deficiencies, and o the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. 20

(Applied) Research Decremental Development Create Tools for automated Refactoring o for languages lacking support, i.e., o C/C++, PL/1, COBOL(?) o javascript, php, groovy Develop new Approaches for higher-level Software Simplification o beyond Refactoring o i.e., detecting potential for simplification Increase Valuation of Simplicity o as a software design goal o articles, presentations, case studies 21

Existing Results by IFS Eclipse Plug-Ins Ruby Refactoring for RDT o integrated into official release Python Refactoring for PyDev o student project, results integrated into release C++ Refactoring o student project for CDT 2.1 o student project for CDT 3.0 o CDT s Europa Release has minimal infrastructure which was provided by IFS C++ Refactoring plug-in as add-on C++ Unit Testing plug-in o CUTE C++ Unit Testing Easier 22

Why we need Decremental Development Problems solved by Software increase o more problems o larger & more complex Good-enough quality often isn t o when deployed (Beta-Release) o while maintained (updates breaking stuff) Useful Software is used longer than intended o pro-active maintenance often neglected o repeated bug-hunt-fix-patch deteriorates quality 23

Decremental Development Reduce software size TO 10% o while keeping required functionality o while improving its quality o while improving its design This is not a dream, but requires hard work. o We need to start paying attention in the small! 24