<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-33881329</id><updated>2012-01-21T13:16:29.504+01:00</updated><category term='j-spring'/><category term='j-fall'/><category term='xmi'/><category term='java'/><category term='smart use case'/><category term='tobago'/><category term='soa'/><category term='qse'/><category term='hudson'/><category term='koffie'/><category term='conference'/><category term='eda'/><category term='service'/><category term='ica'/><category term='han'/><category term='rest'/><category term='mda'/><category term='code generatie'/><category term='scrum'/><category term='agile'/><category term='plugin'/><category term='software'/><category term='nl-jug'/><category term='heliview'/><category term='capgemini'/><category term='up'/><category term='ddoa'/><category term='saas'/><category term='uml'/><category term='ead'/><category term='architecture'/><category term='gba-v'/><category term='j2ee'/><category term='symposium'/><category term='adp'/><category term='xp'/><category term='avisi'/><title type='text'>Rody Middelkoop</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rodymiddelkoop.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33881329.post-7139066291121928103</id><published>2012-01-21T13:13:00.000+01:00</published><updated>2012-01-21T13:13:04.070+01:00</updated><title type='text'>Push based builds using Jenkins and GIT</title><content type='html'>Recently we switched to Git as our Version Control System solution and I still like it. Coming from “(good) old” CVS we used Jenkins as CI server polling CVS for changes. Besides other nice features and advantages, Git also brings nice commit hooks (well, CVS also does but I finally got to use this nice feature).&lt;a href="http://blog.avisi.nl/2012/01/13/push-based-builds-using-jenkins-and-git/"&gt;Read more....&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-7139066291121928103?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/7139066291121928103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/7139066291121928103'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2012/01/push-based-builds-using-jenkins-and-git.html' title='Push based builds using Jenkins and GIT'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6933228106234836483</id><published>2010-08-13T19:46:00.004+02:00</published><updated>2010-08-13T19:56:30.251+02:00</updated><title type='text'>How to add calendar controls to a Joomla administrator component</title><content type='html'>Being home during summer holiday means doing some "home development". Being forced to do a re-make of the &lt;a href="http://www.feestbordindetuin.nl/"&gt;feestbordindetuin&lt;/a&gt; I found a nice component for showing products and categories (&lt;a href="http://dj-extensions.com/dj-catalog2/overview-files"&gt;DJ Catalog&lt;/a&gt;), without having to implement a whole e-commerce-solution. One of the disadvantages is that is doesn't support the administration of customers and reservations so I built that myself using the MVC structure for Joomla components. Customers can make a reservation for a product, having a start-date and an end-date and of course a reference to the product itself. I wanted to be able to edit the dates myself but I also wanted a calendar-control, well that was easy:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;input class="text_area" type="text" name="date_from" id="date_from" size="32" maxlength="250" value="&amp;lt;?php echo $this-&amp;gt;item-&amp;gt;date_from;?&amp;gt;" /&amp;gt;&lt;br /&gt;&amp;lt;img id="date_from_img" alt="calendar" src="/templates/system/images/calendar.png" class="calendar" onclick="return showCalendar('date_from','%d-%m-%Y');" &amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Just add an image next to the input type and don't forget to add the calendar behaviour on top of your form:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;JHTML::_('behavior.calendar');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Tada:&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_NhuGNGyj40I/TGWGEB0PFGI/AAAAAAAAAFQ/45Fk98ALClw/s1600/Screenshot+1.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="280" src="http://3.bp.blogspot.com/_NhuGNGyj40I/TGWGEB0PFGI/AAAAAAAAAFQ/45Fk98ALClw/s640/Screenshot+1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Making a reservation for a product using the Joomla built-in calendar control.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6933228106234836483?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6933228106234836483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6933228106234836483'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2010/08/how-to-add-calendar-controls-to-joomla.html' title='How to add calendar controls to a Joomla administrator component'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NhuGNGyj40I/TGWGEB0PFGI/AAAAAAAAAFQ/45Fk98ALClw/s72-c/Screenshot+1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5111207484979066294</id><published>2010-05-05T18:45:00.005+02:00</published><updated>2010-05-06T00:51:27.469+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='ddoa'/><category scheme='http://www.blogger.com/atom/ns#' term='han'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='up'/><category scheme='http://www.blogger.com/atom/ns#' term='ica'/><category scheme='http://www.blogger.com/atom/ns#' term='smart use case'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>How to (not) manage a one-person software development project</title><content type='html'>&lt;span xmlns=""&gt;&lt;h1&gt;Introduction&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;As a consultant and as a lecturer I am constantly working on quality both on the softwareproduct and the softwareprocess. On the one hand I try to (let my colleages) deliver software using a small &lt;a href="http://avisi.nl/display/avisinl/2010/01/29/Lancering+ontwikkelstraat+InSight"&gt;software factory&lt;/a&gt;, on the other hand I try to convince students to deliver sofware using the right process. This article will give some background on choosing the right process for a very small project-team (to be specific, a size of one) for a softwareengineering-project. This article is written mainly from the point of view of a lecturer, but I can't help drawing parallels between education and "real" life.&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;Academy of Communication and Information Technology (ICA)&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;&lt;em&gt;"HAN University of Applied Sciences' Academy of Communication and Information Technology (ICA) offers state-of-the-art study programmes in the fields of Computer Science, Information Technology, Business Information, Media and Communication Systems." &lt;/em&gt;[HAN10]&lt;em&gt;&lt;br /&gt;   &lt;/em&gt;&lt;/p&gt;&lt;p&gt; Although ICA uses a graduation-assessment based on levels of &lt;a href="http://www.hbo-i.nl/default.aspx?pageID=28"&gt;standardized competencies&lt;/a&gt;, there are five key aspects to consider:&lt;em&gt;&lt;br /&gt;   &lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Process:    is the student capable to choose it's own process and use it wisely?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Product:     is the student capable to deliver the required product (mostly software, but can also be a report or a visual prototype)?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Presentation:     is the student capable to present his product and process and answer questions about his own choices?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Report:     is the student capable to write a structured report that contains the most important information about the project?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reflection:     does the student knows his own strengths and weaknesses and is he able to use his strengths and to minimize his weaknesses?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Before graduating, ICA students have followed a unique program with three semesters of their own choice. Each semester focusses on a specific professional task within the field of Computer Science, Information Technology, Business Information or Media and Communication Systems. Some tasks are better performed using Scrum, other tasks have a better match with Evo, Unified Process, UCD or Prince2. Most of the tasks are performed in a team consisting of five, so students don't have that much experience in choosing a process for a one-person project like the graduation assignment which is performed by the individual student.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Because &lt;em&gt;Process&lt;/em&gt; is one of the five aspects to determine whether the student succeeds graduating, they need more help in choosing the right process. Scrum is one of the most popular processes among students, however Scrum is also the process that is understood and applied badly by students and other junior professionals. The same applies more or less for Unified Process and other agile methods like Evo and XP: very popular, often misunderstood.&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;What process to pick?&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;At ICA several softwaredevelopmentprocesses are used during 8-week Software Engineering projects:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.icaprojecten.nl/display/PUBL/Home"&gt;Scrum&lt;/a&gt; combined with XP best practices (semester Develop a Distributed OO Application, DDOA);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Evo (semester Make a High Performance Network Application, MPNA);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unified Process (semester Develop an Information System, DIS).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Most students tend to stick to what they (think they) know, and I think that's good when you're a junior professional. That means that most of the students wil pick one of (or a combination of) the above mentioned processes. In the next paragraph Scrum, UP en XP will be discussed using a short introduction and some principles that can be used to determine what (not) to do.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Scrum&lt;br /&gt;&lt;/h2&gt;&lt;h3&gt;Short introduction&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Scrum was formalized as a softwaredevelopmentprocess in 1995 by Jeff Sutherland and Ken Schwaber. In Scrum, a team delivers a "potentially shippable product" every increment ("sprint") of 2-3 weeks, using several recurring ceremonies, like the daily stand-up, sprint planning, sprint review and sprint retrospective, like described in Figure 1.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://blog.mdlware.nl/images/050510_1645_Howtonotma1.jpg" /&gt;&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(79, 129, 189);font-size:9pt;" &gt;&lt;strong&gt;Figure 1: Recurring activities during a sprint [ONEDOTO10]&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The team consists of a:&lt;br /&gt;&lt;/p&gt;&lt;ul style="margin-left: 38pt;"&gt;&lt;li&gt;ScrumMaster: "… primary job is to remove impediments to the ability of the team to deliver the sprint goal/deliverables. The ScrumMaster is not the leader of the team (as the team is self-organizing) but acts as a buffer between the team and any distracting influences." [SCR10]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ProductOwner: "... represents the voice of the customer. He/she ensures that the Scrum Team works with the "right things" from a business perspective. The ProductOwner writes customer-centric items (typically user stories), prioritizes them and then places them in the product backlog." [SCR10]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Teammembers: "… has the responsibility to deliver the product. A team is typically made up of 5–9 people with cross-functional skills who do the actual work (design, develop, test, technical communication, etc.)." [SCR10]&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Do's and don'ts for a one-person project&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;It might look strange to run around in the field alone with a rugbyball in your hands, however with a pragmatic approach Scrum can be applied to a one-person project. Some principles also yield for "ordindary Scrum teams":&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 318px;"&gt;&lt;col style="width: 301px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;strong&gt;Do&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;&lt;strong&gt;Don't&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;1. Assign/find a ProductOwner. Let the customer-disharmony be his or her problem, not yours.&lt;span style="color:black;"&gt;&lt;strong&gt;&lt;br /&gt;         &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;1. Be your own ProductOwner. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;2. As a teammember be your own ScrumMaster:&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 54pt;"&gt;a. Estimate work.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 54pt;"&gt;b. Manage impediments.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 54pt;"&gt;c. Log and re-estimate work and manage your velocity.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 54pt;"&gt;d. Use lightweight tooling like a &lt;a href="http://wiki.icaprojecten.nl/download/attachments/721351/Empty+Sprint+Backlog.xls?version=1&amp;amp;modificationDate=1260731525000"&gt;spreadsheet&lt;/a&gt; or (a little less lightweight) dashboard.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;2. Hold  your own private daily stand-up, instead you could still pick a regular moment every day to manage impediments and (re)gain focus on your work. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;3. Choose a fixed length for your sprints. You are the one and only developer so two weeks can be problematic. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;3. Keep the sprint-length fixed, even when you're not capable of delivering value through product increments. Also see 5. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;4. Create a high level design on a whiteboard during the first sprint. Take pictures. Detail the design every upcoming sprint in case you build something difficult or risky.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;4a. Create a big design up front (BDUF). Although you are the one and only developer and you need some structure, BDUFs don't increase the business value of your project.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;4b. Be a cowboy-coding idiot. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;5. Focus on a architectural slice during a sprint, each slice should be able to operate independently of another slice. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;5. Build your application completely layer for layer. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;6. Write a manageable &lt;a href="http://wiki.icaprojecten.nl/display/PUBL/Definition+of+Done"&gt;definition of done&lt;/a&gt; (DoD) [GUP08]. Focus on code complete with just enough design to keep your product maintainable with help of other parties. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;6a. Freeze your DoD during the project. Tune the DoD during the sprints, after two of three sprints it should be solid.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;6b. Cut down unittests. Although time saving, you need (automated) testcases every time there's a nasty bug in your software. Because your team lacks reviewers, your testcases might be your safetybelt. Never cut down quality. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;7. Perform Sprint Reviews. Show demo's of your potentially shippable product and let a key user get some feeling of the product. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;7. Use Sprint Reviews to "just show what you've got". Remember, Scrum is about commitment, if you can't commit, lower your amount of user stories, rethink your DoD of lengthen your upcoming sprints. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;8. Use a fully integrated IDE (buildtools, versioncontrol, formatting, etc.). &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;8. Dress up a continuous integration environment. With a professional IDE you have sufficient tooling in most cases. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;9. Concrentrate on two Scrum values: Commitment and Focus.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;9. Be disrespectful to your customer representatives and hide all your problems.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;10. Perform Sprint Retrospectives. Find out what you've done well (and what not) and how to improve. Adapt.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;10. Think there is no need to change and that the world around you will change in favor of you. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;UP&lt;br /&gt;&lt;/h2&gt;&lt;h3&gt;Short introduction&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Unified Process (UP) is a use-case- and risk-driven, architecture-centric, iterative and incremental  software development process framework. There are several  implementations or refinements of UP available, among which:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rational Unified Process (RUP): developed by Ivar Jacobson, Grady Booch and James Rumbaugh when working for the Rational company, currently part of IBM. RUP is fact the first known refinement of UP, you could say that UP was retracted from RUP. Simply put: UP = RUP minus Rational tools, artifacts and templates that support the process (like versioncontrol, requirements management, documenttemplating, processcomposing, etc.).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Agile Unified Process (AUP): Simplified version of RUP, developed by Scott Ambler [AMB09]. AUP has less disciplines and conforms to the principles of the &lt;a href="http://www.agilealliance.org/"&gt;Agile Alliance&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enterprise Unified Process (EUP): Instead of simplifications like AUP, EUP is an extension for UP, developed by Scott Ambler [AMB09-1]. EUP solves the problem of the lack of system support and eventual retirement of a software system, so new phases and new disciplines were added.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open Unified Process (OpenUP): "OpenUP is a lean Unified Process that applies iterative and incremental approaches within a structured lifecycle. OpenUP embraces a pragmatic, agile philosophy that focuses on the collaborative nature of software development. It is a tools-agnostic, low-ceremony process that can be extended to address a broad variety of project types." [OPENUP09]&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All refinements can be visualized in the same way, however the disciplines on the left may differ:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://blog.mdlware.nl/images/050510_1645_Howtonotma2.gif" /&gt;&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(79, 129, 189);font-size:9pt;" &gt;&lt;strong&gt;Figure 2: Iterative development in UP using phases and disciplines [UP10]&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Being part of one of the first RUP-projects in the Netherlands in 2001, I found out that UP tends to be heavy-weight when you apply all the disciplines, roles and artifacts so the first thing we learned was how to make a good Development Case and Software Development Plan.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Do's and don'ts for a one-person project&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;So, how do you pick your predefined flavor of UP and how do you tailor this flavor? Well, for a one-person project it figures that full EUP and RUP are not an option, OpenUP should be tailored to your needs and AUP could be the closest to what you need but could still need some adjustments. Regardless of the refinement of UP you want to apply, there are some pragmatic principles that apply:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 319px;"&gt;&lt;col style="width: 300px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;&lt;strong&gt;Do&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;&lt;strong&gt;Don't&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;&lt;span style="color:black;"&gt;1. Develop iteratively. All phases can be performed more than once, use risk as the driving factor. Create a Risk Plan. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style="color:black;"&gt;1. Consider Inception as Requirements, Elaboration as Design, Construction as Build and Transition as Test. It's NOT a traditional waterfall process. Instead, use Inception to determine whether your project is feasable and use Elaboration to build and executable architecture that proves your high-level design. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;2. Use templates specificly for requirements management and software architecture.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;2a. Re-invent the wheel.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;2b. Use the templates in a dogmatic way. Instead,  remove what you don't need and add what you do need. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;3. Manage your changing requirements, preferably using use cases. Create cross-references from use-case, through design, implementation and test to delivery. Obtain traceability, a small spreadsheet will do. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;3a. Build software that does not relate in any way to the requirements. You want unhappy or even no customers? Please continue.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;3b. Consider all your requirements equally important, they're not. Instead, &lt;a href="http://www.dsdm.org/knowledgebase/details/165/moscow-prioritisation-briefing-paper.html"&gt;prioritize&lt;/a&gt; [DSDM10] and &lt;a href="http://www.ibm.com/developerworks/rational/library/4706.html"&gt;categorize&lt;/a&gt; [EEL05] them.  &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;4. Use UML. Even for a one-person project use the following diagrams, preferable on a whiteboard:&lt;br /&gt;&lt;/p&gt;&lt;ul style="margin-left: 54pt;"&gt;&lt;li&gt;Use Case Model (also write brief use cases, optionally create expanded use cases for risky or hard stuff) with stereotypes. Consider using &lt;a href="http://www.accelerateddeliveryplatform.com/SmartUseCase.ashx"&gt;smart use cases&lt;/a&gt; [HOO10] for better planning and estimation.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Class Diagram (Domain Model), you might skip the conceptual level, but invest in getting to know the business domain and think about assigning responsabilities to the right class.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sequence Diagram, especially on the &lt;a href="http://www.agilemodeling.com/artifacts/sequenceDiagram.htm"&gt;architectural-level&lt;/a&gt; [AMB09-2]. It helps you to identify components. &lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;4a. Stick to the UML meta-model. Instead, create diagrams that illustrate the tricky parts of your software, if you need usecase-elements in a sequencediagram, draw them.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;4b. Model all parts of your software, even the obvious ones.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;4c. Reverse engineer diagrams from code and call it "design". It can be useful to have a picture of how your software is structured, but I consider that as code visualization. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;5. Track issues, like technical issues and project risks. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;5. Pretend that nothing can go wrong. In a way, that can be the case when you've done this kind of project over and over and over, however: will you need process then?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;XP&lt;br /&gt;&lt;/h2&gt;&lt;h3&gt;Short introduction&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Starting in 1996, Extreme Programming (XP) has grown to a broadly used agile sofware development method. XP emphasizes teamwork and states several rules that must be followed. Most of the rules also apply to one-person projects, some do not: pair-programming is going to be hard and your code is always immediately integrated (unless you work on different branches).&lt;br /&gt;&lt;/p&gt;&lt;p&gt; XP is an iterative development process, which is illustrated in Figure 3:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://blog.mdlware.nl/images/050510_1645_Howtonotma3.gif" /&gt;&lt;br /&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(79, 129, 189);font-size:9pt;" &gt;&lt;strong&gt;Figure 3: Activies during an XP managed project [WEL00]&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Do's and don'ts for a one-person project&lt;br /&gt;&lt;/h3&gt;&lt;div&gt;&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 311px;"&gt;&lt;col style="width: 308px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;strong&gt;Do&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 18pt;"&gt;&lt;strong&gt;Don't&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;span style="color:black;"&gt;1. Write user stories including acceptance criteria. Perform acceptancetests on a regular basis and publish results. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style="color:black;"&gt;1. Leave out acceptance criteria. Instead, discuss with the customer what criteria the software should meet and use UI mocks whenever possible.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;2. Create a release planning with small releases. Divide the project into several iterations and start iteration planning each iteration.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;2a. Constrain your activities to coding only. Instead, also focus on communication  and feedback (two of the five XP values).&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;2b. "Try to catch up by working harder or longer, that's the fastest way to get further behind. Instead call for a planning meeting, accept how far you have come and create a new plan." [WEL00]&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;3. Set a sustainable pace and measure velocity.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;3. Hold  your own private daily stand-up, instead you could still pick a regular moment every day to manage impediments and (re)gain focus on your work. Also when you're the one and only developer you can't "move people around".&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;4. Use a simple design and a system metaphor. Assign responsibilities to the right classes. Create spike solutions and refactor continuously.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;4. Use CRC-cards. Instead, use GRASP [LAR04] patterns. You can do without CRC-cards in a one-person project. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;5. Have the customer always available. That's hard in a one-man project, however you may decide to make the customer's office your office. Face to face communication is faster and more reliable that anything else. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;5. Work iteratively without showing the results to your customer. Why work iteratively?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;6. Apply to coding standards. Use available standards and/or modify it to your own needs. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;6. Break rule 6. Even in a one-man project, you need coding standards to make your code readable, understandable and debuggable. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;7. Code the testcase first.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;7. Write testcases afterwards. In a projectteam that sometimes is an option, but only when the developer of the testcase is not the same developer as the code under test. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;8. Use an integration computer.&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;8. Believe that when it works on your computer, it works on another computer as well. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;9. All code must have unit tests and all code must pass all unit tests before it can be released. When a bug is found, tests are created. &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p style="margin-left: 36pt;"&gt;9. Break rule 9. However, you could negotiate the test coverage. Is it really important to have 100% coverage?&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;Wrap up&lt;br /&gt;&lt;/h1&gt;&lt;p&gt;We have seen three processes in more detail, each described using simple principles that can guide you what to do and what not to. These processes have a some characteristics in common that makes every process valuable, even for a one-man project:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Adaptive: every process can be tailored, even if it's not made to be. You might start a holy war by changing the process, but if it works for you and your project it can't be a crappy process, can it? Some (parts of) processes can even be combined, like &lt;a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches"&gt;XP and Scrum&lt;/a&gt;, or &lt;a href="http://www.ibm.com/developerworks/rational/library/feb05/krebs/"&gt;Scrum and UP&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Agile: every process is iterative, some are incremental. Only when the customer refuses to participate in an agile process or when requirements are well known up-front and fixed during the whole project you could consider a more waterfall-like approach. Most of the graduation assignments are projects with lots of unknown factors, you risk failure when choosing a waterfall-approach.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quality: every process focuses on high-quality software, sometimes explicitly through defining the definition of done or by requiring a simple and/or visual design.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Transparency: every process gives several stakeholders insight through velocity, issuetracking, backlogs, acceptancecriteria or  –tests.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;References&lt;br /&gt;&lt;/h1&gt;&lt;div&gt;&lt;table style="border-collapse: collapse;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width: 92px;"&gt;&lt;col style="width: 527px;"&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;AMB09 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.ambysoft.com/unifiedprocess/agileUP.html"&gt;http://www.ambysoft.com/unifiedprocess/agileUP.html&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;AMB09-1&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.enterpriseunifiedprocess.com/"&gt;http://www.enterpriseunifiedprocess.com/&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;AMB09-2 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.agilemodeling.com/artifacts/sequenceDiagram.htm#Figure2ServiceLevel"&gt;http://www.agilemodeling.com/artifacts/sequenceDiagram.htm#Figure2ServiceLevel&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;DSDM10 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.dsdm.org/knowledgebase/details/165/moscow-prioritisation-briefing-paper.html"&gt;http://www.dsdm.org/knowledgebase/details/165/moscow-prioritisation-briefing-paper.html&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;EEL05 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.ibm.com/developerworks/rational/library/4706.html"&gt;http://www.ibm.com/developerworks/rational/library/4706.html&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;GUP08 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.scrumalliance.org/articles/106-definition-of-done-a-reference"&gt;http://www.scrumalliance.org/articles/106-definition-of-done-a-reference&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;HAN10&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.han.nl/start-en/corporate/about-han/faculties/academy-ict/"&gt;http://www.han.nl/start-en/corporate/about-han/faculties/academy-ict/&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;HOO10 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.accelerateddeliveryplatform.com/SmartUseCase.ashx"&gt;http://www.accelerateddeliveryplatform.com/SmartUseCase.ashx&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;LAR04 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;Apply UML and Patterns, Craig Larman, Prentice Hall, 2004.  &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;ONEDOTO10&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.1dot0.com/dev_process.html"&gt;http://www.1dot0.com/dev_process.html&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;OPENUP09 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://epf.eclipse.org/wikis/openup/index.htm"&gt;http://epf.eclipse.org/wikis/openup/index.htm&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;SCR10 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;http://en.wikipedia.org/wiki/Scrum_(development)&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;UP10 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Unified_Process"&gt;http://en.wikipedia.org/wiki/Unified_Process&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;WEL00 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://www.extremeprogramming.org/map/project.html"&gt;http://www.extremeprogramming.org/map/project.html&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;WIK10 &lt;/p&gt;&lt;/td&gt;&lt;td style="padding-left: 7px; padding-right: 7px;"&gt;&lt;p&gt;&lt;a href="http://wiki.icaprojecten.nl/display/PUBL/Scrum"&gt;http://wiki.icaprojecten.nl/display/PUBL/Scrum&lt;/a&gt;&lt;br /&gt;       &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5111207484979066294?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5111207484979066294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5111207484979066294'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2010/05/how-to-not-manage-one-person-software.html' title='How to (not) manage a one-person software development project'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6807648597387999537</id><published>2010-02-21T22:04:00.004+01:00</published><updated>2010-02-21T22:35:13.239+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avisi'/><category scheme='http://www.blogger.com/atom/ns#' term='ddoa'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='qse'/><category scheme='http://www.blogger.com/atom/ns#' term='hudson'/><title type='text'>Thinking of developing for the Hudson CI</title><content type='html'>At &lt;a href="http://www.avisi.nl/"&gt;Avisi&lt;/a&gt;, we started working with &lt;a href="http://hudson-ci.org/"&gt;Hudson&lt;/a&gt; some year ago and I must say, Hudson does the job well. Having a "real" monitor on our company fridge keeps all developers and non-developer eager to commit quality code.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NhuGNGyj40I/S4GmPfzVGXI/AAAAAAAAACs/aCMqGeyK2uo/s1600-h/hudsonbuildmonitor.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_NhuGNGyj40I/S4GmPfzVGXI/AAAAAAAAACs/aCMqGeyK2uo/s320/hudsonbuildmonitor.jpg" alt="" id="BLOGGER_PHOTO_ID_5440812610005309810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For about half a year ago we had a student team from the &lt;a href="http://www.han.nl/ica"&gt;HAN University&lt;/a&gt; doing an &lt;a href="http://wiki.icaprojecten.nl"&gt;internship&lt;/a&gt; for 8 weeks, they developed a nice quality plugin (QSE) for Hudson, which - for now - is only used in our company.  Lots of people have been developing plugins for Hudson, and we're using some of them (like the Checkstyle, PMD, Findbugs, Cobertura and Green Ball-plugin). One nice plugin is the Jira Plugin which is able to update Jira with comments that contain a link to the Hudson-build that built the code with the Jira-issue as check-in comment.  As with every piece of software it does not work exactly as you thougt it would, this specific plugin adds comments publicly visible (so our customers see them). I think I'll join the developers and fix some &lt;a href="http://issues.hudson-ci.org/browse/HUDSON-1489"&gt;issues&lt;/a&gt;, gain profit for our company and commit it to the community.&lt;br /&gt;&lt;br /&gt;Wow, I guess this is my first open source project I am really "committed" to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6807648597387999537?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6807648597387999537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6807648597387999537'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2010/02/thinking-of-developing-for-hudson-ci.html' title='Thinking of developing for the Hudson CI'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NhuGNGyj40I/S4GmPfzVGXI/AAAAAAAAACs/aCMqGeyK2uo/s72-c/hudsonbuildmonitor.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5341538717179945205</id><published>2009-10-23T22:10:00.007+02:00</published><updated>2009-10-24T15:33:00.291+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='eda'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>SOA Symposium 2009 Revisited</title><content type='html'>Right. So far for making plans. After having visited enough conferences, I had to know that plans may still change just before the sessions start. Kind of like agile development I could have postponed some decisions to a later moment. For some stuff the YAGNI acronym counts.&lt;br /&gt;&lt;br /&gt;For starters, this edition was much better organized than the 2008 edition. Better sessions, better food, better facilities (Amsterdam Arena as soccer stadium is still questionable, but as a conference facility it really sucks, liked Rotterdam WTC much more).&lt;br /&gt;&lt;br /&gt;Some specific highlights of the sessions I visited:&lt;br /&gt;&lt;br /&gt;Stuart Boardman made a clear distinction between User Identity Context and Service Identity Context in his session about Identity in the Cloud. He also explained concepts like PEP, PDP and Claims Bases Access Control. Also native speaker so didn't take extra effort to understand, did also participate in the debate on Agile development of SOA.&lt;br /&gt;&lt;br /&gt;Clemens Utschig-Utschig brought some German friends who did not add anything viable to the session about Next Generation SOA. Gladly Clemens mentioned some clear solutions to problems like stale data and shaping data into events (EDA) and he endorsed my impression that he is a passionate presenter.&lt;br /&gt;&lt;br /&gt;In "an in depth session on Service Oriented Modeling and Architecture" the depth was a bit disappointing. Ali Arsanjani did a good presentation, however stayed too long at the global level of SOMA. I hoped to learn more about Service Identification but I wil surely take some time to take a peek at the SOMA, specificly the SOMA Agile Profile.&lt;br /&gt;&lt;br /&gt;Wondering how you can do a SAP-project on time, on budget and a happy customer? Sander Hoogendoorn and Twan van de Broek presented their experience with doing a SAP project in a agile way using smart use cases and a development process which mixes Scrum and Smart. Nice session, however not within time. Let's say that doing an agile SAP project is easier than doing an agile presentation.&lt;br /&gt;&lt;br /&gt;Thoughtworks is known to have splendid architects and engineers that can present in a authentic and attractive style. Ian Robinson opted in his session for a new way to identify and prioritize services measured by added business value. Finally a PowerPoint without bullets and a nice story about the distinction between what and how using stories, capabilities, services and contracts.&lt;br /&gt;&lt;br /&gt;After a good diner and a few beers with some of the EAD students, I had a good sleep (sleep late, hurray), breakfast and appeared reasonably fresh at the second day. I decided that I could use a wake-up call (actually not used to sleep late so I stated "reasonably" fresh) and visited Jim Webbers' session being "not a REST talk". Again a Thoughtworks representative with a loose style of presenting, I actually think Jim could succeed as a stand-up comedian as well, had a good laugh and learned a lot in little time. Good emphasis on high cohesion over loose coupling, the (not) need for an ESB, power of the web and French bridges.&lt;br /&gt;&lt;br /&gt;The effect of the wake-up call disappeared when visiting John Davadoss' talk about Software and Services. John talked about Monetization, Experience, Composition/Mashup, Federation and Delivery of Services, however his talk a bit looked like it was a Mashup of other peoples' ideas. Nevertheless, I liked the example that illustrated that services - when concentrating on what instead of how - do not necessary have to be used in an equal way by different user profiles. A manager might have to use Outlook/Exchange/AD because of required audit tracing, a production worker might be better satisfied with Gmail or Live Mail.&lt;br /&gt;&lt;br /&gt;Again a session by Ian Robinson illustrating the "power of the web" with a good old D&amp;amp;D game. Again no bullets, only images and codefragments that show the power of hypermedia. A bit disappointing was the fact that didn't mention how to define your own contracts using user defined hypermedia, but he got save by Jim Webber in the late session on "Hypermedia, the confusing bit in REST". Great humor, catchy example on Restbucks. Didn't expect too see pictures of Hillary Clinton here, her name has a much positive association for me now after attending Jim's talk.&lt;br /&gt;&lt;br /&gt;Between the 'Thoughtworks-talks' I did visit a session on Building .NET Services for Collaboration and Composition from Herbjorn Wilhelmsen. First session that shows some actual code. So far for being positive: non-inspired and non-persuasive speaker and a non-cohesive presentation.&lt;br /&gt;&lt;br /&gt;After all two great days with lots of new insight on software architecture, especially by the way Grady Booch performed a keynote session through SecondLife, really impressive (including the yawning caused by the difference in timezones :)). Let's see whether the organization can uphold or improve the quality of this 2009 edition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5341538717179945205?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5341538717179945205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5341538717179945205'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2009/10/soa-symposium-2009-revisited.html' title='SOA Symposium 2009 Revisited'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5004345959773909168</id><published>2009-10-20T22:37:00.004+02:00</published><updated>2009-10-23T22:10:28.167+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='symposium'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><category scheme='http://www.blogger.com/atom/ns#' term='ead'/><title type='text'>Plans for SOA Symposium 2009</title><content type='html'>After a succesful SOA Symposium in 2008, I'll visit the 2009 edition next thursday and friday. I am thinking of visiting the following sessions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Identity In The Cloud" Speaker: Stuart Boardman (CGI) &lt;/li&gt;&lt;li&gt;"Cloud Computing and The Missing Trust Relationship" Speaker: Andor Demarteau (Capgemini) &lt;/li&gt;&lt;li&gt;"A Case Study: Combining Services, Events and Rules" Speaker: Art Ligthart and Michael Widjaja (Accenture) &lt;/li&gt;&lt;li&gt;"Mission impossible? Applying Agile to the World of SOA and ERP" Speaker: Sander Hoogendoorn, Capgemini and Twan van den Broek&lt;/li&gt;&lt;li&gt;"The Future's In Scope, But Where Do We Start?" Speaker: Ian Robinson (ThoughtWorks)&lt;/li&gt;&lt;li&gt;"This is Not a REST Talk" Speaker: Jim Webber (ThoughtWorks)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;How Smart Use Cases Drive Service-Oriented Projects" Speaker: Sander Hoogendoorn (Capgemini)&lt;/li&gt;&lt;li&gt;"Real-Life Use Cases of SOA Design Patterns at the Dutch Tax and Customs Administration" Speaker: Brian Lokhorst (Dutch Tax and Customs Administration) &lt;/li&gt;&lt;li&gt;"Introducing Transactions to REST" Speaker: Michael Musgrove (Red Hat)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Event-Driven SOA in a Dredging Environment" Speaker: Alexander den Hartog (Royal Boskalis Westminster N.V.) and Linda Terlouw (ICRIS) &lt;/li&gt;&lt;/ul&gt;I will publish my findings around these sessions in a next blogpost, or follow me on &lt;a href="http://twitter.com/rodmidde"&gt;twitter&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5004345959773909168?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5004345959773909168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5004345959773909168'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2009/10/soa-symposium-2009.html' title='Plans for SOA Symposium 2009'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-1068497258787375022</id><published>2009-03-08T20:44:00.005+01:00</published><updated>2009-03-09T23:04:15.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code generatie'/><category scheme='http://www.blogger.com/atom/ns#' term='mda'/><category scheme='http://www.blogger.com/atom/ns#' term='nl-jug'/><category scheme='http://www.blogger.com/atom/ns#' term='j-spring'/><title type='text'>J-Spring here we come!</title><content type='html'>Zojuist bericht gehad van de paper-commissie van de NL-JUG dat de inzending van Sander Hoogendoorn en mij is &lt;a href="http://www.nljug.org/pages/events/content/jspring_2009/sessions/00018/"&gt;goedgekeurd&lt;/a&gt;. Exacte details volgen nog, maar hieronder ons voorstel:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Titel &lt;/u&gt;&lt;br /&gt;Pragmatic model driven development in Java with smart use cases and domain driven design&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Naam / namen van de spreker(s)&lt;br /&gt;&lt;/u&gt;Sander Hoogendoorn, Principal Technology Officer Capgemini&lt;br /&gt;Rody Middelkoop, Technical Evangelist Avisi&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Korte omschrijving van de sessie (minimaal 100 woorden)&lt;br /&gt;&lt;/u&gt;Model driven development has a promise of high productivity. However, many approaches fail to deliver. Sander Hoogendoorn (Capgemini) and Rody Middelkoop (Avisi) will present a very pragmatic approach to model driven development, based on modeling smart use cases and domain models in UML. The speakers elaborate enthusiastically on this approach and the techniques used, and they will model and generate a fully deployable Java applications live on stage!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Niveau (beginner / intermediate / advanced)&lt;br /&gt;&lt;/u&gt;Intermediate&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Track waarbinnen deze kan worden geplaatst (zie boven)&lt;br /&gt;&lt;/u&gt;This highly interactive session can be placed in the New &amp;amp; Cool, Methodology or Tools tracks.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Vereiste voorkennis&lt;/u&gt;&lt;br /&gt;Although some knowledge around use cases, domain driven design and Java is preferable (for everyone), it is not required for this session.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Een structurele beschrijving van de opbouw van de presentatie&lt;br /&gt;&lt;/u&gt;In this unstable economy, organizations target software development at shorter time-to-market and high productivity. Model driven development has a promise of raising productivity in projects. However, many approach fail to deliver this promise. During this high-paced, interactive talk speakers Sander Hoogendoorn (Principal Technology Officer and agile thought leader at Capgemini) and Rody Middelkoop (Technical evangelist at Avisi, and lecturer at the Hogeschool Arnhem Nijmegen) share their very pragmatic approach to delivering software using model driven development. First, Sander will elaborate on the modeling and code generation approach, that relies on smart use cases and smart use case stereotype, a solid software architecture and domain driven design. Next, Rody will take the stage and demonstrate how this approach effects building Java web applications, generating a fully deployable Java EAR live on stage! Although other architectures and frameworks can be applied, Rody will use open source Java frameworks such as Ant, FreeMarker, Struts2, Spring and JPA/Hibernate3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-1068497258787375022?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/1068497258787375022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/1068497258787375022'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2009/03/j-spring-here-we-come.html' title='J-Spring here we come!'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5297179248751788053</id><published>2009-03-04T11:07:00.004+01:00</published><updated>2009-03-09T23:04:59.214+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='avisi'/><category scheme='http://www.blogger.com/atom/ns#' term='gba-v'/><category scheme='http://www.blogger.com/atom/ns#' term='koffie'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='heliview'/><title type='text'>Software AND Service</title><content type='html'>Last February I represented Avisi at a SAAS conference in Zoetermeer. It went well and afterwards we were informed that the session was rewarded as one of the best presentations at the conference.&lt;br /&gt;&lt;br /&gt;Highlights of the presentation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is SaaS (tagcloud)&lt;/li&gt;&lt;li&gt;Why SaaS?&lt;/li&gt;&lt;li&gt;10 Questions to ask your SaaS-supplier?&lt;/li&gt;&lt;li&gt;Avisi's vision on SaaS: Software AND Service.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you want to re-experience the session please visit: &lt;a href="http://www.slideshare.net/rodym/Saas-1059030"&gt;http://www.slideshare.net/rodym/Saas-1059030&lt;/a&gt; and &lt;a href="http://avisi.nl/pages/nieuws/avisi-kijkt-terug-op-een-succesvol-saas-congres.php"&gt;http://avisi.nl/pages/nieuws/avisi-kijkt-terug-op-een-succesvol-saas-congres.php&lt;/a&gt;. Next station on the conference-trip is a session at the J-Spring 2009, I did a sessionproposal with Sander Hoogendoorn on &lt;a href="http://sanderhoogendoorn.org/blog/?p=129"&gt;Pragmatic Model Driven Java Development&lt;/a&gt;, let's hope we can do our presentation there. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5297179248751788053?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5297179248751788053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5297179248751788053'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2009/03/software-and-service.html' title='Software AND Service'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-3732400270311401047</id><published>2009-02-10T19:57:00.006+01:00</published><updated>2009-10-23T22:08:37.465+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='tobago'/><category scheme='http://www.blogger.com/atom/ns#' term='xmi'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Generating Java with Tobago MDA</title><content type='html'>In the past two years we have been investigating several alternatives to kick start our Java applications. Most important requirements for the kickstart-tools for use were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Model based, we prefer UML&lt;/li&gt;&lt;li&gt;Adjustible and flexible stack so other frameworks can be applied&lt;/li&gt;&lt;li&gt;Code quality equal to our handwritten code quality&lt;/li&gt;&lt;li&gt;Based on Ant, rather than Maven2&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After having looked at JBoss Seam and AppFuse, we tried CapGemini’s Tobago MDA. The generator comes with a simple but powerful objectmodel and an easy to understand templating mechanism. Tobago is able to parse an UML XMI metamodel containing smart use cases and a UML class diagram containing business classes, value types and smart reference and applies our own templates (instead of the ADP templates for .NET projects) to the parsed metamodel.&lt;/p&gt;&lt;p&gt;In January 2009 we did present our own Java templates which took me about two months to develop. We applied these templates to two small business cases, and the results are promising: we can generate a fully deployable Java EAR using several open source Java frameworks like Ant, Freemarker, Struts2, Spring and JPA/Hibernate3. The templates implement several patterns from the ADP like the Smart Reference, Factories and Value Objects which are used in components like EJB3 business services and JPA business entities.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;a href="http://3.bp.blogspot.com/_NhuGNGyj40I/SZHPrU-OikI/AAAAAAAAABk/Vnu-VILVY1I/s1600-h/avisistack.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5301246579662817858" style="width: 453px; height: 273px;" alt="" src="http://3.bp.blogspot.com/_NhuGNGyj40I/SZHPrU-OikI/AAAAAAAAABk/Vnu-VILVY1I/s400/avisistack.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;When you are interested in our progress, please keep up with the wiki &lt;a href="http://wiki.trinidadplatform.org/GeneratingJava.ashx"&gt;http://wiki.trinidadplatform.org/GeneratingJava.ashx&lt;/a&gt; or visit the Avisi website &lt;a href="http://www.avisi.nl/"&gt;http://www.avisi.nl/&lt;/a&gt;. &lt;/p&gt;In reference to the previous post I can announce the I am working together with Sander Hoogendoorn on a proposal for several Java oriented conferences in the Benelux, so we can share our experience with other developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-3732400270311401047?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3732400270311401047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3732400270311401047'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2009/02/generating-java-with-tobago-mda.html' title='Generating Java with Tobago MDA'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NhuGNGyj40I/SZHPrU-OikI/AAAAAAAAABk/Vnu-VILVY1I/s72-c/avisistack.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-4414905384266736955</id><published>2008-11-12T23:43:00.006+01:00</published><updated>2009-03-09T23:06:41.319+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='j-fall'/><category scheme='http://www.blogger.com/atom/ns#' term='nl-jug'/><title type='text'>JFall: "Elk nadeel hep zun voordeel"</title><content type='html'>Although I promised myself to blog in English to train myself in using the language and to offer non-Dutch-speaking people to read the posts, I have no better way of expressing my feelings about the second NL-JUG conference this year, the fall edition, JFall. It isn't even proper Dutch, but it is based on a quote from Johan Cruijf who obviously was a better soccerplayer than he spoke Dutch. Let's say that 'every con has its pro'.&lt;br /&gt;&lt;br /&gt;Let's face the facts, we do have a lot of qualified Java developers in Holland. Lots of them were visiting the fall edition of the NL-JUG event and some of them were presenters for the sessions. Despite all the available ingredients for a nice conference day, I wasn't all that great for me.&lt;br /&gt;&lt;br /&gt;Con: Most sessions were to basic or to badly presented (I'll make an exception for Jeroen Benckhuijsen)&lt;br /&gt;Pro: I'm thinking of being one of the speakers for the next conference to show that I can do better. I have about half a year to think about a nice subject which I do like myself.&lt;br /&gt;&lt;br /&gt;Con: The number of attendants is maximized on 1000, which means that 't Spant is quiet busy when changing sessions or having lunch.&lt;br /&gt;Pro: I see a recurring group of attendants which makes the conference a nice social event to meet with former colleages and potential partners for one of my employers. Also I have to thank the NLJUG-board for inviting 70 HAN students to the conference.&lt;br /&gt;&lt;br /&gt;Con: The conference aimed to much at JavaFXScript and Flex.&lt;br /&gt;Pro: Adobe brought nice goodies and some 'representative' people (I say one word: nurse) with good communication skills, my kids are happy with the little duckies that can be used in the bathtub.&lt;br /&gt;&lt;br /&gt;Conclusion: you can whine and be a pessimist, one can see chances and improve and be an optimist. For now I am optimist, hoping that the next conferences will have less cons and more pros.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-4414905384266736955?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/4414905384266736955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/4414905384266736955'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/11/jfall-elk-nadeel-hep-zun-voordeel.html' title='JFall: &quot;Elk nadeel hep zun voordeel&quot;'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-3139378617963092793</id><published>2008-10-21T19:03:00.013+02:00</published><updated>2009-03-09T23:03:34.350+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avisi'/><category scheme='http://www.blogger.com/atom/ns#' term='mda'/><category scheme='http://www.blogger.com/atom/ns#' term='capgemini'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='adp'/><category scheme='http://www.blogger.com/atom/ns#' term='smart use case'/><title type='text'>Model driven development of Java Web Application</title><content type='html'>At Avisi, I have been experimenting with the development of Java webapplications based on UML. UML in, deployable Java app out. With thanks to the Advanced Develivery Platform (ADP) of CapGemini, we are allowed to use Tobago MDA, a tool which enabled model driven developement. Tobago takes an XMI 1.1 compliant UML model (smart use cases and a domain model) and builds an internal object-tree on which you can run several templates to generate all kinds of files.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;For the last two weeks I have been developing templates for Tobago which enables the generation of a Java webapplication based on the stack we use at Avisi: Freemarker, Sitemesh, Struts2, Spring, JPA Entities en JBoss appserver. We use a standard Ant build.xml, standard Eclipse-project (which by the way can be generated too) and some standard markup templates for Freemarker/Sitemesh. &lt;/div&gt;&lt;ol&gt;&lt;li&gt;Create a UML-project in Enterprise Architect and model smart use cases and a domain model. No platformspecific types are used, these are mapped within the templates.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_NhuGNGyj40I/SP4RHnrDNwI/AAAAAAAAAAo/vWA8k6LLbdw/s1600-h/hrvisi-ucdiagram.jpg"&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_NhuGNGyj40I/SP4Rns4NPBI/AAAAAAAAAA4/gKTCpJMw_hs/s1600-h/hrvisi-ucdiagram.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_NhuGNGyj40I/SQMYTNw9iyI/AAAAAAAAABQ/L79EGFPYMQo/s1600-h/hrvisi-ucdiagram-medewerker.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5261075508090473250" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 213px" alt="" src="http://3.bp.blogspot.com/_NhuGNGyj40I/SQMYTNw9iyI/AAAAAAAAABQ/L79EGFPYMQo/s400/hrvisi-ucdiagram-medewerker.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;a href="http://1.bp.blogspot.com/_NhuGNGyj40I/SP4wyjw6IsI/AAAAAAAAABA/OlcXpsE7Aok/s1600-h/hrvisi-clsdiagram.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_NhuGNGyj40I/SQMYf-l2UkI/AAAAAAAAABY/dxSIaq2cdEk/s1600-h/hrvisi-clsdiagram.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5261075727355630146" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 310px" alt="" src="http://3.bp.blogspot.com/_NhuGNGyj40I/SQMYf-l2UkI/AAAAAAAAABY/dxSIaq2cdEk/s400/hrvisi-clsdiagram.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Export the UML project as XMI&lt;/li&gt;&lt;li&gt;Create/Generate an Eclipse project with empty folders/packages and predefined build.xml and markup-templates for Freemarker/Sitemesh decoration.&lt;/li&gt;&lt;li&gt;Import the XMI-file into Tobago MDA&lt;/li&gt;&lt;li&gt;Generate sources using Tobago templates for Freemarker pages, Struts2 Action classes, Spring applicationContext.xml, EJB3 Stateless Session Beans for Services/DAO and JPA Entities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package nl.$Class.Model.Name.Lower$.dao;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Local;&lt;br /&gt;import nl.$Class.Model.Name.Lower$.model.$Class.Name$;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;@Local&lt;br /&gt;public interface $Class.Name$Dao {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;void create($Class.Name$ $Class.Name.Lower$);&lt;br /&gt;void save($Class.Name$ $Class.Name.Lower$);&lt;br /&gt;void remove($Class.Name$ $Class.Name.Lower$);&lt;br /&gt;void remove(Long id);&lt;br /&gt;$Class.Name$ find(Long id);&lt;br /&gt;List&lt;$Class.Name$&gt; findByName(String name);&lt;br /&gt;List&lt;$Class.Name$&gt; findAll();&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Run build.xml&lt;/li&gt;&lt;li&gt;Deploy war on JBoss 4. &lt;/li&gt;&lt;/ol&gt;&lt;a href="http://4.bp.blogspot.com/_NhuGNGyj40I/SP4zeNwLUiI/AAAAAAAAABI/bErjaDUy-K8/s1600-h/hrvisi-screenshot.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259698008996139554" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_NhuGNGyj40I/SP4zeNwLUiI/AAAAAAAAABI/bErjaDUy-K8/s400/hrvisi-screenshot.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;In the first phase (which I've just completed) we are able to generate CRUD-functionality, in the next phases we are implementing security, validation (using Value Types and Smart References) and master-detail relations. The last thing we want to investigate is the possibility to support process-oriented design (like flowcharts) using activity- or state-chart diagrams. For now we are happy with the results, which in the future will possibly presented in some other blogs, seminars or conferences. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-3139378617963092793?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3139378617963092793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3139378617963092793'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/10/model-driven-development-of-java-web.html' title='Model driven development of Java Web Application'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NhuGNGyj40I/SQMYTNw9iyI/AAAAAAAAABQ/L79EGFPYMQo/s72-c/hrvisi-ucdiagram-medewerker.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6827010354855057619</id><published>2008-10-08T21:44:00.003+02:00</published><updated>2008-10-09T13:01:21.361+02:00</updated><title type='text'>Two days of SOA stuff</title><content type='html'>As I announced recently we (lecturers and students) were going to visit the first SOA Symposium held at the Amsterdam Arena Conference Centre. Today was the last day, so play time is over and back to school again.&lt;br /&gt;&lt;br /&gt;Before I move from listening state to talking state again, I want to share my impressions. Let me first start with the conference location. Besides the FC is not my favourite one, the location is not suitable at all as a conference location because of the conferencerooms in which - in most cases - I missed major parts of the powerpoint slides. Only when you were seated at the front or second row, you had a clear view.&lt;br /&gt;&lt;br /&gt;Now the content of the conference. In order of viewing:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Thomas Erl: The Architecture of Service Orientation&lt;/em&gt;&lt;br /&gt;Apparently a man with lots of experience, but talks as he writes. Uses to much words to make a point and a boring (sorry) speaker. The session however learned me that service have to be stateless not because they have to be stateless but because of scalability, also he made a good point on how much detail you have to put into your service contract: detailed service contracts (e.g. XSDs) offer tighter service descriptions (interfaces), the downside is that more changes on the service are expected which leads among others to versioning. Visited the session because we use one of his books, we might consider using books that are more to the point. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Radovan Janecek: The criteria for the decision, REST, SOAP or both&lt;/em&gt;&lt;br /&gt;I always have trouble understanding not native speakers, so I had a hard time this session. Radovan spoke about several criteria which you can use to determine which strategy to use to implement webservices. Key considerations were requirements, scalability, legacy and organization (time, budget) and to my surprise "REST wins!". First of all the speaker claimed to not have any competition, second if you do any way of competition you have to issue the right arguments and use correct examples, which in my opinion were not used. Questions were handled not that gracefully and often not assessed well. Despite these issues, I learned that the comparison as indicated in the title is like comparing apples to oranges, also indicated by the speaker. It's better to not compare REST to SOAP, but you can compare REST ws. WSDL, URIs vs. parameterized operations, uniform vs. arbitrary interfaces or as I quote "simple mechanism and hard to build vs. complex mechanism and easy to build".&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Umit Yalcinalp: Enterprise Mashups with SOA&lt;/em&gt;&lt;br /&gt;A lot of talking and lots of words on lots of slides. In a nutshell: the reintroduction of fat and rich (also called 'fit') clients enables composite services on the client and on the server. Client services are more datacentric, serverside services are more businessprocess-like. You need publish-subscribe models which introduces a mini-ESB on the client, implemented with mostly Javascript libraries. You also need policies which made me think how WS-Policy relate to composing services on the client. The session ended with an example, which to my opinion had to be on the first slide.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Jim Webber: Starbucks Example&lt;/em&gt;&lt;br /&gt;On of the best speakers at the conference, together with Mark Little from Redhat. Highly motivated, funny, well informed, a bit arrogant and being able to inform me with good examples about his journey throught web service standards, falling in love and web abuse. Jim showed me how you can be sure you get &lt;a href="http://www.infoq.com/articles/webber-rest-workflow"&gt;bad coffee&lt;/a&gt; for to much money using a resource based state machine using links and microformats. Further, he managed to clarify the principles of REST/HTTP without using the term REST, nice.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Toufic Boubez: The future of SOA Security&lt;/em&gt;&lt;br /&gt;Let me first recall the fact that we attended the conference with 14 bachelor ICT student, who are almost graduated. Most of them have not learned the PPK-principles of cryptograpy. Toufic managed to push loads of information about the weaknesses of WS-Security (we are going to cover that in the next course) and strengths of specifications like SAML, WS-Policy and WS-Trust. I learned from this session that having services connect to each other using different ways of transport (HTTP, SMTP, JMS), the security cannot be in the transportprotocol, but has to be in the message. Also you need to decouple security from the service consumer and provider using a kind of mixing board (analogy to monolithic audio devices and loosely connected components like the tuner and cd player that can be of a different brand communicating with each other using standardized media and protocols). Toufic referred to the mixing board as Policy Enforcement Points (PEPs) which can sit on the side of the consumer and provider liks stubs or proxies. Heavy session for me, most of the students got blown away I guess.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Mark Little: Web Services and Transactions&lt;/em&gt;&lt;br /&gt;I recently saw Mark speak at the &lt;a href="http://www.infoq.com/articles/webber-rest-workflow"&gt;CapGemini Java Night&lt;/a&gt; and he impressed me by his detailed knowledge on distributed systems and his way of speaking. This session was all about how to relax the parts of the ACID acronym, Atomicity, Consistency, Isolation and Durability. The analogy used to explain two-phase commit (2PC) couldn't be better chosen by referring to the marriage procedure: brooms says yes, bride says yes, priest says you're married now. It's about first stating that you want to commit and later actually get committed by a coordinator. Mark explained the role of the coordinator in the standards Atomic Transactions (AT), Business Activity (BA) and Coordination. I learned from this session that ACID transaction only work on closely coupled environments and short duration activities, which are in most cases not the preconditions for a web service transaction. As a result, you must be able to commit early and define compensation activities.&lt;br /&gt;&lt;br /&gt;I also went to other sessions but they're not worth blogging about it. As multiple students asked me: why is the school bugging us with presentation skills when several people on this conference are presenting even worse by staring at the floor and serving powerpoints? Well, let's say that being smart and experienced does not automatically make one a great speaker. Most students can present well enough, but about what? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6827010354855057619?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6827010354855057619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6827010354855057619'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/10/two-days-of-soa-stuff.html' title='Two days of SOA stuff'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6516214362147704810</id><published>2008-09-15T20:21:00.003+02:00</published><updated>2008-09-15T21:00:49.619+02:00</updated><title type='text'>SOA Symposium 2008</title><content type='html'>On October 7/8 I am going to visit the &lt;a href="http://www.soasymposium.com/"&gt;SOA Symposium &lt;/a&gt;in Amsterdam, together with a group of students who attend the minor Enterprise Application Development (EAD). This minor is part of a bachelor study on Computer Science at the &lt;a href="http://www.han.nl/ica"&gt;HAN University &lt;/a&gt;and focuses on state-of-the-art (or maybe 'avant la lettre'?) integration and software-architecture issues like service oriented architectures, SOAP and REST webservices, object relational mapping, messaging/queueing and ESB.&lt;br /&gt;&lt;br /&gt;Comments and feedback about the symposium will be added to this blog, students will write about their experiences on the confluence-website from EAD: &lt;a href="http://wiki.icaprojecten.nl/display/EADPUBL/Home"&gt;http://wiki.icaprojecten.nl/display/EADPUBL/Home&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6516214362147704810?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6516214362147704810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6516214362147704810'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/09/soa-symposium-2008.html' title='SOA Symposium 2008'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-8884416120209862481</id><published>2008-09-09T21:30:00.003+02:00</published><updated>2008-09-09T21:45:14.293+02:00</updated><title type='text'>More on quality and auditing</title><content type='html'>As a consultant 'devoted' to delivering high quality work, we (Avisi) are developing a model on auditing software quality. We intend to develop several levels of detail in which we can audit &lt;em&gt;software&lt;/em&gt; or a &lt;em&gt;project developing software&lt;/em&gt;. It's fun to see that how more detail is brought into the audit, the more interpretable the results are: it's easier to fill in a yes/no checklist which results in a mark then to audit software on a code level. What's good quality code anyway?&lt;br /&gt;&lt;br /&gt;The first thing I am trying to do in the next two months is to set up a checklist which has low code detail and focuses on learning from mistakes from the past made in choosing the development process, defining scope (requirements and financial), etc..&lt;br /&gt;&lt;br /&gt;Does the project run for more than one year?&lt;br /&gt;Is the project estimated on more than €100K? &lt;br /&gt;Isn't there a SAD available?&lt;br /&gt;Does the project concern more than one or two handsful of developers?&lt;br /&gt;&lt;strong&gt;That's a minus!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you have any comments, recommendations or questions, feel free to &lt;a href="mailto:r.r.middelkoop@avisi.nl"&gt;e-mail&lt;/a&gt; me or comment this blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-8884416120209862481?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/8884416120209862481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/8884416120209862481'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/09/more-on-quality-and-auditing.html' title='More on quality and auditing'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-2795424123724279993</id><published>2008-08-21T11:37:00.004+02:00</published><updated>2008-08-21T12:10:30.685+02:00</updated><title type='text'>"Crossing the Hudson river"</title><content type='html'>Sinds ik begonnen ben bij Avisi heb ik als belangrijkste taak het verhogen van de kwaliteit van de software en het softwareontwikkelproces. Na het introduceren van enkele qualitychecks op de software middels PMD, Checkstyle, Cobertura, FindBugs en JavaNCSS en in het inbouwen van deze checks in onze manual builds, was het vandaag tijd om ons buildproces te automatiseren.&lt;br /&gt;&lt;br /&gt;Nadat we al eerder CruiseControl hadden is er nu gekozen voor Hudson voor nightly en continuous builds. In een later stadium zal ik wat meer details uit de doeken doen, vooralsnog ben ik blij met de foto: een echte buildmonitor waarop iedereen de status van onze lopende projecten kan zien en de betrokken developers notificaties krijgen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_NhuGNGyj40I/SK0-kFhNAGI/AAAAAAAAAAY/OiOG7W5ehR8/s1600-h/hudsonbuildmonitor.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236910731379408994" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_NhuGNGyj40I/SK0-kFhNAGI/AAAAAAAAAAY/OiOG7W5ehR8/s320/hudsonbuildmonitor.jpg" border="0" /&gt;&lt;/a&gt;Verder zijn we blij met de grafische elementen van Hudson waarin we o.a. het verloop van de SLOC en de andere kwaliteitsattributen zien.&lt;br /&gt;&lt;br /&gt;Later zal ik nog een post wagen aan een custom Ant-task die ik geschreven heb die alle verschillende kwaliteitsmetrieken in een formule gooit, waar een eindcijfer tussen 0 en 10 uit komt. We zijn druk doende om alleen software te releasen die minimaal een 7 haalt, alle cijfers hieronder breken de build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-2795424123724279993?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/2795424123724279993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/2795424123724279993'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/08/crossing-hudson-river.html' title='&quot;Crossing the Hudson river&quot;'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NhuGNGyj40I/SK0-kFhNAGI/AAAAAAAAAAY/OiOG7W5ehR8/s72-c/hudsonbuildmonitor.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-9209660655186812577</id><published>2008-06-10T20:25:00.002+02:00</published><updated>2008-06-10T20:51:25.920+02:00</updated><title type='text'>Spring Webservices in NetBeans</title><content type='html'>Voor een nieuwe minor Enterprise Application Development ben ik bezig met het uitzoeken hoe Spring Webservices werkt. Vanwege de handig archetypes is Maven-support in een IDE wel praktisch dus mijn keuze viel op NetBeans. Nu heeft NetBeans standaard wel Spring 'support' maar geen wizards voor Spring WebServices. Iets wat een beetje helpt is de New Project-wizard voor Maven. Wil je meerdere Spring Webservices Projecten maken maak dan een Custom Archetype:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kies voor New Project-&gt;Maven, Maven Project&lt;/li&gt;&lt;li&gt;Kies voor Add en kies voor&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;groupId: org.springframework.ws&lt;/li&gt;&lt;li&gt;artifactId: spring-ws-archetype&lt;/li&gt;&lt;li&gt;version: 1.5.0&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Finish&lt;/li&gt;&lt;/ul&gt;Je kunt ook je de Mevenide plugin van Maven voor NetBeans volledig updaten, je krijgt dan alle archetypes die beschikbaar zijn in de remote repositories, de eerste keer is dit enorm langzaam, daarna heb je er vol profijt van!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-9209660655186812577?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/9209660655186812577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/9209660655186812577'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/06/spring-webservices-in-netbeans.html' title='Spring Webservices in NetBeans'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6449500197234019056</id><published>2008-03-20T11:32:00.001+01:00</published><updated>2008-03-20T11:33:43.903+01:00</updated><title type='text'>Managers vs Engineers...</title><content type='html'>Gezien in een nieuwsbrief die ik ontving:&lt;br /&gt;&lt;br /&gt;A man in a hot air balloon realised he was lost. He reduced altitude and spotted a woman below. He descended a bit more and shouted, "Excuse me, can you help me? I promised a friend I would meet him an hour ago, but I don't know where I am."&lt;br /&gt;&lt;br /&gt;The woman below replied, "You're in a hot air balloon hovering approximately 30 feet above the ground. You're between 40 and 41 degrees north latitude and between 59 and 60 degrees west longitude." "You must be an engineer," said the balloonist. "I am," replied the woman, "How did you know?" "Well," answered the balloonist, "everything you told me is technically correct, but I've no idea what to make of your information, and the fact is I'm still lost. Frankly, you've not been much help at all. If anything, you've delayed my trip."&lt;br /&gt;&lt;br /&gt;The woman below responded, "You must be in Management." "I am," replied the balloonist, "but how did you know?" "Well," said the woman, "you don't know where you are or where you're going. You have risen to where you are due to a large quantity of hot air. You made a promise, which you've no idea how to keep, and you expect people beneath you to solve your problems. The fact is you are in exactly the same position you were in before we met, but now, somehow, it's my fault."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6449500197234019056?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6449500197234019056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6449500197234019056'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/03/managers-vs-engineers.html' title='Managers vs Engineers...'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-3874692269277112732</id><published>2008-03-19T12:39:00.004+01:00</published><updated>2008-03-19T12:48:54.831+01:00</updated><title type='text'>java.lang.IllegalAccessError: tried to access method org.apache.tools.ant.launch.Locator.decodeUri</title><content type='html'>java.lang.IllegalAccessError: tried to access method org.apache.tools.ant.launch.Locator.decodeUri(Ljava/lang/String;)Ljava/lang/String; from class&lt;br /&gt;org.apache.tools.ant.AntClassLoader&lt;br /&gt;&lt;br /&gt;Deze foutmelding leverde eclipse mij op na het runnen van een ant-taakje. Dezelfde build-file deed het prima vanaf de command-line maar niet vanuit de IDE. Na lang zoeken bleek er eem mix te zijn tussen jars van verschillende ant versies (in mijn geval 1.6 en 1.7).&lt;br /&gt;Oplossing: zorg voor compatibele ant jars. Mijn ant.jar bleek 1.7 te zijn, de rest 1.6, resultaat: IllegalAccessError.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-3874692269277112732?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3874692269277112732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3874692269277112732'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/03/javalangillegalaccesserror-tried-to.html' title='java.lang.IllegalAccessError: tried to access method org.apache.tools.ant.launch.Locator.decodeUri'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-4403011421105368346</id><published>2008-03-17T22:26:00.002+01:00</published><updated>2008-03-17T22:29:19.794+01:00</updated><title type='text'>Java Programming Puzzles</title><content type='html'>Aangestoken door een collega van &lt;a href="http://www.avisi.nl/"&gt;Avisi &lt;/a&gt;zit ik in mijn spaarzame vrije tijd programmeerpuzzeltjes te maken op &lt;a href="http://www.javabat.com/"&gt;http://www.javabat.com/&lt;/a&gt;. Mijn vorderingen zijn te volgen op &lt;a href="http://www.javabat.com/done?user=rody.middelkoop@han.nl&amp;amp;tag=706724411"&gt;http://www.javabat.com/done?user=rody.middelkoop@han.nl&amp;amp;tag=706724411&lt;/a&gt;. Ik doe mijn best :)&lt;br /&gt;&lt;br /&gt;Ook handig voor solicitatiegesprekken, assessments en tech-days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-4403011421105368346?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/4403011421105368346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/4403011421105368346'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/03/java-programming-puzzles.html' title='Java Programming Puzzles'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-440898751526408766</id><published>2008-02-20T10:31:00.002+01:00</published><updated>2008-02-20T10:35:59.509+01:00</updated><title type='text'>Cobertura:  java.lang.IllegalArgumentException: Unknown attribute type Signature</title><content type='html'>Wanneer je Cobertura gebruikt icm. JUnit en Ant kan het voorkomen dat Cobertura warnings geeft over java.lang.IllegalArgumentException: Unknown attribute type, bij kwamen types voor als Signature en RuntimeVisibleAnnotations. &lt;br /&gt;&lt;br /&gt;Cobertura gebruikt ASM voor bytescodeweaving, in het product waar we cobertura voor codecoverage gebruiken wordt een andere versie van ASM gebruikt, deze staat vooraan in het classpath. &lt;br /&gt;&lt;br /&gt;Oplossing: gebruik alleen de met Cobertura meegeleverde asm-versie en/of zet een oudere versie van ASM achteraan in het classpath.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-440898751526408766?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/440898751526408766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/440898751526408766'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/02/cobertura-javalangillegalargumentexcept.html' title='Cobertura:  java.lang.IllegalArgumentException: Unknown attribute type Signature'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5088346521493573089</id><published>2008-02-20T09:46:00.007+01:00</published><updated>2008-02-20T10:08:10.321+01:00</updated><title type='text'>java.lang.NoClassDefFoundError:  net/sourceforge/cobertura/coveragedata/HasBeenInstrumented</title><content type='html'>Ik was aan de slag met een ant build file waarbij junit en cobertura gebruikt worden:&lt;br /&gt;&lt;br /&gt;&amp;lttarget description="Run JUnit tests" depends="compile" name="test"&amp;gt&lt;br /&gt;&amp;ltmkdir dir="${dir.report}"&amp;gt&lt;br /&gt;&amp;ltmkdir dir="${dir.junit}"&amp;gt&lt;br /&gt;&amp;ltjunit showoutput="yes" printsummary="yes" haltonfailure="no"&amp;gt&lt;br /&gt;&amp;ltsysproperty file="${dir.cobertura}/cobertura.ser" key="net.sourceforge.cobertura.datafile"&amp;gt&lt;br /&gt;&amp;ltclasspath&amp;gt&lt;br /&gt;&amp;ltpathelement location="${dir.instrumented}"&amp;gt&lt;br /&gt;&amp;ltpathelement location="${dir.build}"&amp;gt&lt;br /&gt;&amp;ltpathelement location="${tmp.dir.classes}"&amp;gt&lt;br /&gt;&amp;ltpathelement path="${java.class.path}"&amp;gt&lt;br /&gt;&amp;lt/classpath&amp;gt&lt;br /&gt;&amp;ltformatter type="xml"&amp;gt&lt;br /&gt;&amp;ltbatchtest todir="${dir.report}/junit"&amp;gt&lt;br /&gt;&amp;ltfileset dir="${tmp.dir.classes}"&amp;gt&lt;br /&gt;&amp;ltinclude name="**/*Test.class"&amp;gt&lt;br /&gt;&amp;lt/fileset&amp;gt&lt;br /&gt;&amp;lt/batchtest&amp;gt&lt;br /&gt;&amp;lt/junit&amp;gt&lt;br /&gt;&amp;ltjunitreport todir="${dir.report}/junit"&amp;gt&lt;br /&gt;&amp;ltfileset dir="${dir.report}/junit"&amp;gt&lt;br /&gt;&amp;ltinclude name="TEST-*.xml"&amp;gt&lt;br /&gt;&amp;lt/fileset&amp;gt&lt;br /&gt;&amp;ltreport todir="${dir.junit}" format="frames"&amp;gt&lt;br /&gt;&amp;lt/report&amp;gt&lt;br /&gt;&amp;lt/junitreport&amp;gt&lt;br /&gt;&amp;lt/target&amp;gt&lt;br /&gt;&lt;br /&gt;Effect: verschillende NoClassDefFoundErrors in de junit-reports als ik de ant task run vanuit Eclipse, maar ook vanaf de command-line. De unittest draaien via de JUnittest wizard gaat prima.&lt;br /&gt;&lt;br /&gt;Oplossing: Ant gebruikt de ant-junit-task om unittests uit voeren en voor 1.6.* wordt het boot-classpath genegeerd. Alle classes die de task dus nodig hebt moet je in geval van ant command line in de ANT_HOME/lib folder zetten, voor Eclipse moet je dezelfe classes toevoegen via Preferences-&gt;Ant-&gt;Runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5088346521493573089?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5088346521493573089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5088346521493573089'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2008/02/javalangnoclassdeffounderror.html' title='java.lang.NoClassDefFoundError:  net/sourceforge/cobertura/coveragedata/HasBeenInstrumented'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-3090243640394918536</id><published>2007-12-28T14:39:00.001+01:00</published><updated>2007-12-28T14:49:11.521+01:00</updated><title type='text'>Verandering van spijs</title><content type='html'>... doet eten zeggen ze. Vanaf 1 januari zal ik op parttime basis in dienst treden van &lt;a href="http://www.avisi.nl"&gt;Avisi&lt;/a&gt; als consultant met verschillende aandachtsgebieden: software kwaliteit, softwareprocesmodellen, architectuur en software generatie. Een van de meest concrete klussen is onderzoeken of de &lt;a href="http://www.nl.capgemini.com/samenwerking/tools/trinidad/"&gt;Tobago MDA tool&lt;/a&gt; van CapGemini gepoort kan worden naar een J2EE oplossing met een passende referentiearchitectuur. Toboga maakt tot op heden gebruik van .NET en een of tasks, factories en entities gebaseerde referentiearchitectuur, ik zal gaan kijken of we iets dergelijks kunnen doen met bijvoorbeeld Struts2, Spring, JPA en bijpassende helper classes en  interfaces.  De eerste stappen zijn al gedaan door Maarten Zaagman en het LARK Projectteam van de &lt;a href="http://www.han.nl/ica"&gt;Hogeschool van Arnhem en Nijmegen&lt;/a&gt; die de frameworks toepassen voor de herbouw van een HR-pakket van Avisi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-3090243640394918536?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3090243640394918536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/3090243640394918536'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2007/12/verandering-van-spijs.html' title='Verandering van spijs'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-511311575540832903</id><published>2007-12-25T18:31:00.000+01:00</published><updated>2007-12-25T18:42:15.557+01:00</updated><title type='text'>UML 2.0: dik kind?</title><content type='html'>Gelezen in de Bits &amp;amp; Chips van 21-12-2007:  ‘Maar dan nog zou ik zeggen: gebruik er niet meer dan 20 procent van. Beschouw de andere 80 procent als iets dat je alleen nodig hebt bij zeer speciale problemen. Sommige onderdelen zul je waarschijnlijk nooit gebruiken. UML 2.0 heeft zeker goeds in zich, maar er zit te veel in. Als product van een community is het maar blijven groeien en groeien zonder goeie reden. Over twintig jaar zal UML er nog steeds zijn, en gebruikers zullen het nog steeds waarderen, maar ze zullen moeten kiezen wat ze ervan toepassen.’&lt;br /&gt;&lt;br /&gt;Ivar Jacobson als vader over zijn eigen 'te dikke kind'. Ik moet zeggen, groot gelijk heeft de man. Uit eerdere seminars die ik volgde en een handvol projecten blijkt dat er vraag is naar een soort pragmatische toepassing van UML, passend binnen een lichtgewicht procesmodel. Ik zie studenten (als docent betrokken bij de &lt;a href="http://www.han.nl/ica"&gt;HAN&lt;/a&gt;) veel worstelen met het juist tekenen van de diagrammen terwijl ik wil dat ze zich druk maken met het tekenen van de juiste diagrammen (drawing the diagrams right or drawing the right diagrams). Zo gauw als ik UML - bij voorkeur op een whiteboard - toepas wordt het een mix van verschillende diagramstijlen die duidelijk zijn en zeggen wat ik bedoel, maar meestal is de basis een sequence diagram. Handig voor herhalende doorsneden van de architectuur (patronen), scheiding van wat er links en rechts van een bepaald protocol gebeurt en praktisch op systeem niveau (system sequence diagrams). Waar je nu precies je klassen vandaan haalt zal mij om het even zijn, domein modellen en/of ervaring worden in verschillende verhoudingen toegepast.&lt;br /&gt;&lt;br /&gt;Gelukkig blijkt deze pragmatiek overdraagbaar, getuige de goede resulaten die ik in projecten en in &lt;a href="http://ddoa2.icaprojecten,nl/"&gt;onderwijssituaties&lt;/a&gt; zie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-511311575540832903?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/511311575540832903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/511311575540832903'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2007/12/uml-20-dik-kind.html' title='UML 2.0: dik kind?'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-6154462371807886803</id><published>2007-11-18T21:15:00.001+01:00</published><updated>2010-02-21T22:30:50.301+01:00</updated><title type='text'>Use Cases: de basis voor schatten, plannen en goede software</title><content type='html'>Afgelopen week een Tech Evening van Avisi meegemaakt waar wederom Sander Hoogendoorn te gast was. Ik kan er tot nu toe geen speld tussen krijgen: Use Cases, mits SMART, zijn goede bouwstenen voor een offerte, planning en bouw van een softwareproduct. Ik zeg bewust mits SMART, want met EBPs valt eigenlijk niet te schatten: het verschil tussen een eenvoudige en complexe use case is misschien het verschil tussen 1 en 4 maar deze schaal is vaak niet lineair, maar in het ergste geval exponentieel.&lt;br /&gt;&lt;br /&gt;Ik ervaar hierbij wat wrijving tijdens de projecten die ik begeleid op de HAN, studenten worden daar getraind in EBP Use Cases en geen sub-level use cases die essentieel zijn voor een degelijke planning en afweging door de klant(!). Gelukkig ervaren studenten al snel dat methoden en technieken er vooral zijn om je te helpen goede software te maken dus als iets anders beter werkt doen we dat! Wij completeren dat met een TDD-aanpak, pair-programming en nightly builds, ofwel studenten ervaren nogal een grote toolset; als het goed is pakt deze goed uit, hier blog ik in januari nog wel een keer over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-6154462371807886803?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6154462371807886803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/6154462371807886803'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2007/11/use-cases-de-basis-voor-schatten.html' title='Use Cases: de basis voor schatten, plannen en goede software'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-7872458588939133668</id><published>2007-10-05T11:19:00.001+02:00</published><updated>2007-10-05T11:19:39.312+02:00</updated><title type='text'>Pragmatisch UML</title><content type='html'>Voor iedereen die UML wil of moet toepassen in zijn project maar zich af vraagt wanneer je welke diagram het beste kunt gebruiken en in welke volgorde je het beste kunt werken is het boek "Pragmatisch Modelleren met UML" een absolute aanrader.&lt;br /&gt;&lt;br /&gt;Tot zover de reclame, ik kan inmiddels uit eigen ervaring zeggen dat &lt;a href="http://www.sanderhoogendoorn.com/"&gt;Sander Hoogendoorn&lt;/a&gt; een waardevolle blik op software engineering heeft waarbij de klant en de software ontwikkelaar het belangrijkste zijn: "Projectmanagers verbranden al genoeg geld". Zijn &lt;a href="http://86.90.89.221/Smart/INDEX.HTML"&gt;SMART&lt;/a&gt; aanpak heeft een aantal best practices die hun kracht al hebben bewezen, waarvan 'agility' een hype lijkt maar wel de kern van de aanpak lijkt. Concentreer je op smart use cases, prioriteer ze voortdurend tijdens het project en accepteer dat je nooit alles weet ("&lt;a href="http://www.agileadvice.com/archives/2005/05/change_is_const.html"&gt;Embrace Change&lt;/a&gt;", zoals Kent Beck zegt). Werk daarnaast in multidisciplinaire teams waarbij klant, tester en developer (bij grote teams een analist en/of software designer) samen het werk doen.&lt;br /&gt;&lt;br /&gt;In de eerstkomende FIT avond zal ik mijn ervaringen uit de &lt;a href="http://www.arrayseminars.nl/site/seminars/2007/najaar/UML2.0/"&gt;sessie&lt;/a&gt; Pragmatisch Modelleren met UML delen en kijken naar effecten op &lt;a href="http://www.ordinasoftwarefactory.nl/default.asp/id,285/index.htm"&gt;ontwikkelstraten&lt;/a&gt; en aspecten als &lt;a href="http://martinfowler.com/articles/continuousIntegration.html"&gt;continuous integration&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-7872458588939133668?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/7872458588939133668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/7872458588939133668'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2007/10/pragmatisch-uml.html' title='Pragmatisch UML'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-33881329.post-5255280592519753744</id><published>2007-10-05T11:15:00.000+02:00</published><updated>2007-10-05T11:19:06.587+02:00</updated><title type='text'>WSS3.0 Object Model</title><content type='html'>Mooi product, "Sharepoint". Maar wat zit nou in WSS en wat in MOSS? Ik ben er inmiddels achter dat wanneer ik een overzichtje wil creëren van wie hoevaak op een techmeeting geweest is, ik niet kan sleuren-en-leuren maar die-hard tegen het WSS3.0 Object Model moet aan programmeren.&lt;br /&gt;&lt;br /&gt;Programmeren? Bah :)&lt;br /&gt;Nou.... Vooruit dan maar. Druk bezig de Microsoft.Sharepoint namespace na te snuffelen en een eigen aspx toe te voegen aan mijn Personal Site. Let op: als je dat doet via Sharepoint Designer dan worden alle bestanden die in de publish-map weggegooid, dus ook je hele personal site!&lt;br /&gt;&lt;br /&gt;Inmiddels wel mijn personal site weer terug kunnen zetten (kopietje van de default.aspx uit de donkere gaten van WSS). Na lang testen in mijn personal site heb ik het geheel maar eens gepromoveerd naar een publieke site en meteen een security error: HTTP Error 403 - Forbidden: Access is denied. Een oplossing voor dit probleem is impersonation (zie &lt;a href="http://msdn2.microsoft.com/en-us/library/bb466220.aspx"&gt;Running Commands with Elevated Privileges in Windows SharePoint Services 3.0&lt;/a&gt;). Vervolgens kon een bepaalde DLL niet gevonden worden, maar deze moest toegevoegd worden aan het app_bin path van de Sharepoint server.&lt;br /&gt;&lt;br /&gt;Eindresultaat: een behoorlijke lap code, waarvan hieronder de belangrijkste stukken.&lt;br /&gt;&lt;br /&gt;&lt;span &gt;&lt;em&gt;SPSite mySite = SPContext.Current.Site;&lt;br /&gt;SPSecurity.RunWithElevatedPrivileges(delegate()&lt;br /&gt;{&lt;br /&gt;this.buildAttendeeList(mySite);&lt;br /&gt;this.renderAttendeeList();&lt;br /&gt;});&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;private void buildAttendeeList(SPSite mySite)&lt;br /&gt;{&lt;br /&gt;using (SPSite ElevatedsiteColl = new SPSite(mySite.ID))&lt;br /&gt;{&lt;br /&gt;SPWebCollection subSites = ElevatedsiteColl.AllWebs;&lt;br /&gt;for (int i = 0; i &lt; subSites.Count; i++)&lt;br /&gt;{&lt;br /&gt;SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(subSites[i].ID);&lt;br /&gt;if (ElevatedSite.Title.Contains(FITAVOND)  ElevatedSite.Title.Contains(FITDAG))&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}   &lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33881329-5255280592519753744?l=rodymiddelkoop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5255280592519753744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33881329/posts/default/5255280592519753744'/><link rel='alternate' type='text/html' href='http://rodymiddelkoop.blogspot.com/2007/10/wss30-object-model.html' title='WSS3.0 Object Model'/><author><name>Middelkoop Rody</name><uri>https://profiles.google.com/117371010723868544695</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-9uy9t3VstXE/AAAAAAAAAAI/AAAAAAAAAHQ/C1EC5qlpBuE/s512-c/photo.jpg'/></author></entry></feed>
