SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
teaching:labs:xp:2007b:know-how [2007/08/27 15:36]
pascal
teaching:labs:xp:2007b:know-how [2018/05/09 01:59] (current)
Line 1: Line 1:
 +===== Know How =====
  
 +We will meet at **2007-06-30 9h00 - 18h00** to teach ourselves the required techniques for our lab. [[know-how meeting|Here]] you find more information.
 +
 +The topics are:
 +
 +  * OOSC related
 +    * [[#service oriented architecture(osgi)]] //(Andrey, Rainer)//
 +    * [[#aspect oriented programming]] //(Florian, Anette)//
 +      * {{:​teaching:​labs:​xp:​2007b:​aop_intro.pdf|}}
 +    * [[#​refactoring to design patterns]] //(Wenwei, Tobias)//
 +      * {{:​teaching:​labs:​xp:​2007b:​refactor_to_patterns.pdf|}}
 +    * [[#logic programming and prolog]] //(Paul, Boris)//
 +      * {{:​teaching:​labs:​xp:​2007b:​logicprogrammingandprolog.pdf|}}
 +    * [[#​webservices]] //(Thomas, Henning)//
 +      * {{:​teaching:​labs:​xp:​2007b:​webservicepresentationpart2.pdf|}}
 +      * {{:​teaching:​labs:​xp:​2007b:​web_services.pdf|}}
 +    * [[#​introduction into eclipse, swt and jface]] //(Tobias, Daniel)//
 +      * {{:​teaching:​labs:​xp:​2007b:​daniel_tobias_xp.pdf|}}
 +    * [[#​localization (gps, gsm, wlan)]] //(Paul, Daniel)//
 +      * {{:​teaching:​labs:​xp:​2007b:​daniel_paul_xp.pdf|}}
 +  * XP related
 +    * [[:#test first: unit tests]] //(Florian, Wenwei)//
 +      * {{:​teaching:​labs:​xp:​2007b:​unittesting.pdf|}} ​
 +      * [[http://​www.mm.informatik.tu-darmstadt.de/​courses/​helpdesk/​junit4.pdf|Introduction into JUnit 4 (German/​English)]]
 +    * [[:#test first: acceptance tests]] //(Henning, Boris)//
 +      * {{:​teaching:​labs:​xp:​2007b:​acceptance_tests.pdf|}}
 +    * [[#​continuous integration]] //(Thomas, Anette)//
 +      * {{:​teaching:​labs:​xp:​2007b:​continuous_integration.pdf|}}
 +    * [[#planning and tracking]] //(Andrey, Venkatesh)//​
 +      * {{:​teaching:​labs:​xp:​2007b:​planning_tracking_xp2007b.ppt|}}
 +    * [[#extreme code quality]] //​(Venkatesh,​ Rainer)//
 +      * {{:​teaching:​labs:​xp:​2007b:​extreme_code_quality_xp2007b.ppt|}}
 +
 +The idea is, that everyone of you picks two topics he or she is interested in and prepares with a partner((The partner can (should?) be different for both topics)) a presentation of 30 minutes. This presentation can have a tutorial character, so that people can understand the core of the matter.
 +
 +We will have two projectors and (at least) two laptops available at the session. Since the [[know-how meeting|schedule is quite tight]], it is important that everyone sticks to the timeframe. If you have any questions regarding any of the topics, just write a mail at <​xp-organizers@iai-uni-bonn.de>​.
 +
 +** Here you selected your personal favorites((Ideally more than just two!)), so we made the best matching:**
 +
 +<doodle XP-Lab07 Know-How Selection>​
 +^ SOA/OSGI ^ AOP ^ Refactorings/​Design Patterns ^ Prolog ^Webservices ^ Eclipse/SWT ^ Localization ^ Unit Tests ^ Acceptance Tests ^ Cont. Integr. ^ Planning/​Tracking ^ Code Quality ^
 +</​doodle>​
 +
 +
 +==== Service Oriented Architecture (OSGI) ====
 +
 +  * General introduction into Service Oriented Software Development
 +  * Introduction into the OSGi-Adaptation
 +    * http://​www.eclipse.org/​equinox/​
 +  * Slides from last year: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2006b/​attach?​page=doc%2fosgi.ppt|OSGi-Slides]]
 +
 +
 +==== Aspect Oriented Programming ====
 +{{:​teaching:​labs:​xp:​2007b:​aop_intro.pdf|}}
 +
 +  * Introduction into AOP
 +    * See the slides from the last [[http://​roots.iai.uni-bonn.de/​teaching/​vorlesungen/​2006aosd/​|AOSD lecture]]
 +  * Introduction into AspectJ
 +    * [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005a/​attach?​page=doc%2fvortrag_aspectj.ppt|Presentation from 2005 (de)]]
 +
 +==== Refactoring to Design Patterns ====
 +{{:​teaching:​labs:​xp:​2007b:​refactor_to_patterns.pdf|}}
 +
 +=== Design Patterns ===
 +
 +  * What is a design pattern (SHORT!)
 +  * Examples from JUnit
 +  * The classification of the GoF patterns.
 +  * Pattern quiz (?), "​What'​s the difference between State an Strategy?"​
 +
 +===  Refactorings ===
 +
 +  * Rough overview about Fowlers smells and refactorings.
 +  * Explanation of the core ideas. (Relation to automated unit tests. Baby steps. Behavior preservation.)
 +  * Practical exercise!
 +  * (What is good design?)
 +
 +===  Literature ===
 +
 +  * Fowler
 +  * Kerievsky
 +
 +===  Links ===
 +
 +  *[[http://​www.refactoring.com/​]]
 +  *[[http://​www.refactoring.be/​thumbnails.html|Refactoring Thumbnails]]
 +  *[[http://​www.industriallogic.com/​xp/​refactoring/​catalog.html|Refactoring to pattern]]
 +  *[[http://​www.objectmentor.com/​resources/​articles/​xpepisode.htm]]
 +  * Slides from previous courses:
 +    * Very nice presentation from the pre-last course: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​wiki.jsp?​page=vortraege#​ref-vortraege-7|XP2005b]], ​   [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​attach?​page=doc%2fvortragrefactoring.ppt|slides]], ​  There is also a [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​wiki.jsp?​page=doc|poster]]
 +    * Refactoring to Pattern: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2004b/​wiki.jsp?​page=talkrefactoringtopattern|XP2004b]]
 +    * Six talks about the topic: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005a/​wiki.jsp?​page=vortraege|XP2005b]]
 +
 +
 +
 +
 +
 +
 +
 +
 +==== Logic Programming and Prolog ====
 +{{:​teaching:​labs:​xp:​2007b:​logicprogrammingandprolog.pdf|}}
 +  * Introduction into Logic Programming (how does it work, what's the idea of it)
 +  * How is it implemented in Prolog?
 +
 +Here are some links to lectures and examples:
 +  * Introduction to Prolog: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005a/​attach?​page=doc%2fprolog_slides.pdf|Slides]],​ [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005a/​attach?​page=doc%2fprolog_simple_examples.zip|Examples]] (by Tobias Buhr for one of the last XP labs)
 +  * Lecture on [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005a/​attach?​page=doc%2fadvancedprolog.ppt|advanced Prolog]] by Günter Kniesel
 +  * [[:​service:​knowhow:​prolog:​start|Prolog glossary]]
 +
 +
 +
 +
 +
 +==== Webservices ====
 +As usual, the slides are only useful with the spoken word.
 +
 +{{:​teaching:​labs:​xp:​2007b:​webservicepresentationpart2.pdf|}}
 +
 +{{:​teaching:​labs:​xp:​2007b:​web_services.pdf|}}
 +
 +  * How can we "​call"​ a webservice? You should implement a few simple example and show us how to do it.
 +  * Do a web search to find public available web services. We could use web services at least for: 
 +    * Weather
 +    * Amazon
 +    * Google
 +    * places of interest
 +    * landmarks
 +    * public traffic schedulesWe need a formal as well as an intuitive semantic description of this webservices. It would be great if you colaborated with the [[webservices technology]] topic and implement one or two clients for these webservices. Nevertheless your focus should be on building a small catalog of available and useful webservices.
 +
 +===  Links ===
 +
 +  * [[http://​sourceforge.net/​projects/​wsdl4j]]
 +  * Report on why major UDDI-registries were closed recently:​[[http://​www-306.ibm.com/​software/​solutions/​webservices/​uddi/​shutdown_faq.html]] (This link seems to be gone, so perhaps this is another source: [[http://​uddi.microsoft.com/​about/​faqshutdown.htm]])
 +  * List of webservices:​ [[http://​haydn.cs.washington.edu:​8080/​won/​wonservlet]]
 +  * List of webservices:​ [[http://​www.bindingpoint.com/​]]
 +  * Web Services in Java 6 without application server: [[http://​weblogs.java.net/​blog/​vivekp/​archive/​2006/​12/​webservices_in.html]]
 +
 +===  Experts ===
 +  * Mark Schmatz
 +  * Julia Kuck
 +
 +
 +
 +
 +==== Introduction into Eclipse, SWT and JFace ====
 +
 +{{:​teaching:​labs:​xp:​2007b:​daniel_tobias_xp.pdf|}}
 +
 +  * Introduction into the features of the Eclipse Development Suite
 +    * Coding Environment
 +    * Logical Structure (Workspaces,​ Perspectives,​ Views, ..)
 +    * Technical Structure (File System Representations)
 +    * Features, Plugins
 +
 +===  Introdutions into SWT ===
 +
 +  * [[http://​www.tucson-jug.org/​presentations/​swt.pdf]]
 +
 +===  Getting Started with Eclipse and SWT ===
 +
 +  * [[http://​www.cs.umanitoba.ca/​~eclipse/​]]
 +
 +===  SWT ===
 +
 +  * Main information at eclipse.org:​ [[http://​dev.eclipse.org/​viewcvs/​index.cgi/​%7echeckout%7e/​platform-swt-home/​dev.html#​docs]]
 +  * [[http://​eclipse.org/​articles/​main.html#​swt|Articles]]
 +
 +===  Viewing HTML pages in SWT Browser ===
 +
 +  * [[http://​www.eclipse.org/​articles/​article-swt-browser-widget/​browser.html]]
 +
 +===  Even more Links ===
 +
 +  *[[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​attach?​page=doc%2fswt.ppt|Ahmand'​s talk about eSWT]]
 +  *[[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​attach?​page=doc%2fvortragjface.ppt|Verena'​s talk about eJFace]]
 +  *[[http://​www.eclipse.org/​articles/​article-image-viewer/​image_viewer.html|A Basic SWT Image Viewer]]. Includes code for resizing images.
 +
 +Here are some more tips & tricks how to use swt. Especially how to dispose resource (maybe this helps with the leak)
 +
 +  *[[http://​www.eclipse.org/​articles/​article-writing%20your%20own%20widget/​writing%20your%20own%20widget.htm]]
 +  *[[http://​www.cs.umanitoba.ca/​~eclipse/​]]
 +
 +
 +==== Localization (GPS, GSM, WLAN) ====
 +
 +{{:​teaching:​labs:​xp:​2007b:​daniel_paul_xp.pdf|}}
 +
 +=== Experiences ===
 +In the last practical course we did a lot of experiments with a WLAN localization software callged Magic Map. The results in the B-IT building where very disappointing (Ask Tobias, Bernd, Kai, ...). We should definitly focus on the other technologies.
 +
 +=== Experts ===
 +    * For WLAN: Many.
 +    * For GPS: Pascal, Dagmar Kern
 +    * GSM (Co-)location:​ There is a thread about retrieving the cell ID: http://​discussion.forum.nokia.com/​forum/​showthread.php?​t=19693 The suggested solution uses C++ and calls some system module. ​
 +
 +
 +
 +==== Test First: Unit Tests ====
 +{{:​teaching:​labs:​xp:​2007b:​unittesting.pdf|}} ​
 +  * Test-First means the practices to write your tests before the functionality you actually want to implement.
 +  * Test first is really at the heart of XP although it seems so counter-intuitive at the first sight. Besides a radical turn in your programming attitude, test first also needs some basic skills.
 +  * We want to use JUnit 4 in our Lab - please make sure that the team is able to handle this framework :)
 +
 +  * Resources
 +    * Slides from the previous lab: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2007a/​attach?​page=doc%2ftestfirst.ppt|Test First]], [[http://​roots.iai.uni-bonn.de/​lehre/​xp2007a/​attach?​page=doc%2ftestfirstcodecoverageandmocks.ppt|Test First Code Coverage and Mocks]]
 +    * Slides from the lab before the previous lab:​[[http://​roots.iai.uni-bonn.de/​lehre/​xp2006b/​attach?​page=doc%2ftestfirst_%26_junit.pdf|Introduction]],​[[http://​roots.iai.uni-bonn.de/​lehre/​xp2006b/​attach?​page=doc%2ftestfirstadvanced.pdf|Advanced]],​[[http://​roots.iai.uni-bonn.de/​lehre/​xp2006b/​attach?​page=doc%2ftestguidelines.pdf|Guidelines]]
 +    * Slides from the lab before the lab before the previous lab: [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​attach?​page=doc%2fvortragtestfirst.pdf|Test First]], [[http://​roots.iai.uni-bonn.de/​lehre/​xp2005b/​attach?​page=doc%2fvortragtestfirstquellcode.zip|Sources]]
 +    * Nice slides about Test Driven Development with Python by Kevin Dahlhausen: [[http://​powertwenty.com/​kpd/​downloads/​testdrivendevelopmentinpython.pdf]]
 +    *[[http://​pycheesecake.org/​wiki/​pythontestingtoolstaxonomy]]
 +    * Gareth Rees: [[http://​www.garethrees.org/​2001/​12/​04/​python-coverage/​|Statement coverage for Python (coverage.py)]]
 +    * Brian Marick: [[http://​www.testing.com/​writings/​coverage.pdf|How to Misuse Code Coverage]]
 +    * Johannes Link: Unit Tests mit Java, Der Test-First-Ansatz (deutsch!)
 +    * Kent Beck: Test-Driven Development by Example
 +    * Michael Feathers: Working Effectively with Legacy Code
 +    * Frank Westphal: [[http://​www.frankwestphal.de/​testgetriebeneentwicklung.html|Testgetriebene Entwicklung]]
 +    * Frank Westphal: [[http://​www.frankwestphal.de/​unittestingmitjunit.html|Unit Tests mit JUnit]]
 +    * Kent Beck, Erich Gamma: [[http://​junit.sourceforge.net/​doc/​cookbook/​cookbook.htm|JUnit Cookbook]]
 +
 +==== Test First: Acceptance Tests ====
 +{{:​teaching:​labs:​xp:​2007b:​acceptance_tests.pdf|}}
 +
 +  * Goal: Explore how to use FitNesse and prepare a tutorial about Automated Accpetance Tests and how to create them.
 +  * Additional Resources
 +    * Fitnesse in Eclipse integration with [[http://​roots.iai.uni-bonn.de/​lehre/​xp2007a/​attach?​page=automatedacceptancetests%2fconfitsvn.zip|conFIT]]
 +    * http://​agile-cologne.de:​8080/​wiki/​Wiki.jsp?​page=AutomatisierungVonAkzeptanztests
 +    * About embedding FitNesse output into cruise control result publication:​ http://​donie.homeip.net:​8080/​pebble/​Steve/​2006/​03/​03/​1141402099988.html ​
 +
 +
 +
 +==== Continuous Integration ====
 +{{:​teaching:​labs:​xp:​2007b:​continuous_integration.pdf|}} (As usual, these quite sparse slides are only useful with the spoken word.)
 +
 +  * Your talk will be only short, but you have to prepare the infrastructure for the lab and maintain it at least at the beginning of the lab.
 +  * Cruise Control
 +    * Scope
 +      * Unit tests
 +      * Automated Test Coverage would be great
 +      * Execution of Acceptance Tests would be the full monty.
 +    * http://​www.martinfowler.com/​articles/​continuousIntegration.html
 +    * http://​en.wikipedia.org/​wiki/​CruiseControl
 +    * Extreme Feedback Devices
 +      * http://​www.pragmaticautomation.com/​cgi-bin/​pragauto.cgi/​Monitor/​Devices/​BubbleBubbleBuildsInTrouble.rdoc
 +      * http://​xp123.com/​xplor/​room-gallery/​
 +      * http://​www.scruffles.net/​ccMonitor/​
 +      * http://​www.extremeprogramming.org/​rules/​sequential.html
 +      * http://​www.extremeprogramming.org/​rules/​integrateoften.html
 +    * Here is Microsofts understanding of (rapid) feedback: http://​www.youtube.com/​watch?​v=ry7u6JF_B1c ;-) Don't take it seriously. They don't either.
 +  * Preserving consistency of the installed IDEs.
 +  * Subversion
 +  * During the lab you will have to take care that somebody takes care about the consistency of the installation and the CruiseControl integration. (Which usually means that you have to do it on your own at the beginning and to train others as soon as possible.)
 +
 +==== Planning and Tracking ====
 +{{:​teaching:​labs:​xp:​2007b:​planning_tracking_xp2007b.ppt|}} (sorry couldn'​t prepare in pdf format)
 +
 +  *  Your talk will be short and not very complex. The challenge lies in the handling of the (excellent ;-)) excel sheets and the encouragement of your colleagues to carefully supply there tracked values.
 +  * Story Cards (Color codes), Task Cards; How to handle story and tasks estimates; How produce Burn-Down-Charts and Tasks-Estimation-Feedback. (Planning Game only short as we will introduce it in the usual way.)
 +  * During the lab you will have to take care that somebody takes care about the tracking and everybody records the time spent on tasks. (Which usually means that you have to do the tracking on your own at the beginning and to train others as soon as possible.)
 +
 +==== Extreme Code Quality ====
 +{{:​teaching:​labs:​xp:​2007b:​extreme_code_quality_xp2007b.ppt|}} (sorry couldn'​t prepare in pdf format)
 +
 +* Eliminate duplication,​ Express all ideas, Minimize entities ​
 +    * In earlier labs we called this topic ''​refactoring'',​ but we realized that the students didn't refactor that often. We think the reason was that though everybody knew refactoring is a good thing one should do, we had no clear goal that we wanted to achieve by doing our refactorings. So here are the goals: Eliminate duplication,​ express all ideas, minimize entities.
 +* [[http://​roots.iai.uni-bonn.de/​lehre/​xp2006b/​wiki.jsp?​page=codequality|Notes about Code Quality]]
teaching/labs/xp/2007b/know-how.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019