People and Technology

April 29, 2008

Agile Projects Using the Spring Framework - Training

Filed under: Ajax, Dublin, Ireland, Java, Security, Spring, Training, aaa, enterprise, hibernate, j2ee — Paul Browne @ 9:15 pm

Lots of things going on behind the scenes at FirstPartners. One of which is the Spring Framework training course that we’re giving on Wed 30th May in Bewley’s Hotel, Ballsbridge, Dublin. Interested in going? - you can book here (via Trigraph). Can’t make it? We’ll probably do a follow up.

What are you missing? Apart from the crash test dummies (below), there’s loads of lego blocks, Swiss mountains, trains crashing through walls and a Kangaroo. (Spring, Geddit?). You might even learn something about Java along the way.

Agile Projects using the Spring Framework
Executive Briefing
Delivery: Public or In-house
Course Length: 0.5 days. Optional mentoring / follow up session if required by Client
Course Approach: Lecture, discussions
Level: Beginner / Intermediate

Dummies

Course Description:

Spring, with good reason, is the most actively used framework in the Enterprise Java world today. The half- day briefing shows the problems that Spring can solve for your projects, core Spring concepts such as Inversion of Control and integration with existing Enterprise Java technologies for database access, messaging and web deployment. The briefing also shows how to use Spring to make your projects more agile, improving quality and reducing deployment time.

Course Objectives:

  • Following completion of this course, students will be able to:
  • Understand why Enterprise Java is the mostly widely used corporate technology, and how Spring both simplifies and improves this technology.
  • Understand core Spring concepts such as Inversion of Control (IOC), configuration , deployment and testing.
  • Describe how to integrate Spring with Enterprise Technologies such as Databases, Messaging and Web 2 frameworks.
  • Understand how Spring can make your projects more agile and the benefits it brings to your organization
  • Map out a plan of how to introduce the Spring framework to existing systems.

Course Syllabus:

Section 1: The Problems That Spring Solves

  • Introduction
  • Who are you? Who are we?
  • What is Spring?
  • What is (Enterprise) Java?
  • The problems with Enterprise Java
  • Why Enterprise Java is costing you money.
  • The Deployment Scale
  • Java Classes and Objects
  • Just enough XML to get by
  • Core Spring - Inversion of Control pattern
  • Spring Configuration and my First Spring App
  • Deployment via Web, Enterprise Java and Command line
  • Spring on other platforms (.Net , Ruby and Groovy)
  • Alternatives to Spring
  • Spring and Java 5 – easier development
  • Starting out – just a little Spring in your Step.

Section 2: Core Spring and Enterprise Spring Integration

  • Spring Web Framework (MVC)
  • Spring Web with Struts , JSF , XSLT , Tiles and GWT (Google Web Toolkit)
  • Spring and Ajax in Web 2 Applications.
  • Spring Webflow
  • Spring and Databases (Hibernate and JDBC)
  • Spring and Messaging (MQ and JMS)
  • Spring Remoting and Web Services
  • Aspect Orientated Programming (AOP)
  • Transactions in Spring
  • Appfuse – ready to roll Spring projects with Maven
  • Administration of your Application using Spring and JMX
  • Scheduling using Spring and Quartz
  • Spring and Acegi Security

Section 3: Practical Spring - make your project more Agile

  • The problems with IT Projects
  • What is Agile
  • Spectrum of Agility
  • How Spring makes your project more agile (and your customer happy)
  • Key Agile Practices
  • Unit Testing with Spring
  • Integration Testing
  • Mock Objects
  • Spring IDE
  • Spring and Business Rules
  • Spring and Workflow
  • Alternative Spring configuration.
  • Extending Spring to meet you (obscure) needs.
  • What’s new in Spring 2.5 (and coming up for Spring 3)

Audience:

  • Managers and Project Managers wishing to understand the benefits of adding Spring to their projects.
  • Software developers needing an introduction to Java and the Spring Framework and integration with key Enterprise technologies.
  • Support, Database , Web Designers and other IT professionals needing to interface with Spring and Enterprise Java systems.
  • .Net developers wishing to understand the concepts behind the Spring.Net framework.

Related Courses:
Enterprise Java (Trigraph) and Agile Project Management (Trigraph)

Prerequisites:
Some high level exposure to the Java, .Net or other Object Orientated language would be beneficial but
not necessary.

December 12, 2007

Denise Fay (Achieve Marketing) - the latest Irish Business Blogger

Filed under: Training, barcampbelfast, blog, blogging, blogs, networking, website — Paul Browne @ 10:09 pm

Denise Fay of Achieve Marketing is finally blogging over at achievemarketing.ie. The guide to Business Blogging in Ireland is a direct result of Denise’s Marketing Session at the Ballymascanlon Hotel, Dundalk, but even so , it’s taken 6 months of intimidation sorry encouragement since the Barcamp Belfast meetup to get Denise to this point (she insists on using her time to look after customers).

A couple of things that I’ve learnt if you want to get people in your business network blogging:

    1. Everybody wants the site traffic, but not everybody can / wants to make the effort. Not everybody is suited to writing stuff (but then again, they’re probably a natural at professional networking). Denise writes press releases already , so not only does she have interesting stories to tell, but she has those stories already written down.
    2. Blogging probably seems natural to you now, but you forget how much you’ve learned. Set aside some time to go through the basics with your victim. 1 hr should be enough if you’ve done the ground work (i.e. have wordpress already setup). Get a blogpost out within the first 10 minutes (to show how easy it is). Then work your way through the other tabs in wordpress. Concepts (like categories, linking , trackbacks, url structure) will naturally flow in the conversation.
    3. I was lucky that Denise had already setup Google Analytics for some of her clients. Even so the latest version of wordpress makes setting up analytics easy , and those charts are so damn addictive!
    4. I found that a combination of having the new blog (Achieve Marketing) and my one (People and Technology) open at the same , and flicking between the the old and new blogs worked well. Some stuff like themes, archived blogposts, spam prevention is easier to understand on a blog that’s been in use for a while.

To set the background, Denise is very knowledgable about her area (Marketing), has people to get the techie stuff done and definitely knows more about the web than she admits, but would in no way be classed as a ‘techie’!

November 9, 2007

Slides for Life and Death Workflow, using JBoss jBPM

Filed under: BPEL, BPM, Events, Training, ijtc, jbpm — Paul Browne @ 9:18 am

The slides for ‘Life and Death Workflow using JBoss jBPM (Java Business Process Management) are here. PDF , about 800k for 41 slides. I’ve included full notes (even though I won’t get a chance to use them during the presentation), so that they should make sense when reading them online instead of seeing them live at the IJTC.

I’ve been promising people that I’m going to sell my car during the presentation. So here’s a picture of it. Isn’t she a beauty?

Picture of Toyota Corolla

All offers of workflow consultancy work to consultancy@firstpartners.net.

Note: If you’re linking to the slides, please link (here at this page) rather than the PDF (the location of which may change in the future).

November 2, 2007

Joel Spolsky is the reason I am a Java Techie. See him in Dublin IJTC Wednesday

Filed under: Events, Excel, IT, Information Technology, Office, People, Training, jobs, meetup.people, network — Paul Browne @ 7:00 am

Joel Spolsky is flying in to Dublin next Wednesday to give the keynote speech at the Irish Java Technologies Conference. Mark 7.45pm on Nov 7th in your Diaries folks - Jake has the offical announcement and ask him in person for the full story. In case you don’t know who he is, Joel was one of the early Microsoft employees, one of the first bloggers (since 2000) and is an expert on management and Java software development projects based in New York (possibly due to his stock of stories from Israeli Military Service).
Joel Spolsky Image

So how did Joel make me a Java Techie? You know Excel, that Spreadsheet thing you use everyday. Part of the reason it’s so flexible is because of Joel’s work back in the early days at Microsoft- he was program manager for the team at that created Excel Macros, which eventually morphed into Visual Basic for Applications (VBA). A long time ago when I was still a business person I got involved in automating manual tasks using these Microsoft Office tools. From there, every job got more and more techie until it reached the stage where I must blog about Java every day. It’s all Joel’s fault.

Tickets at the door cost €245.Booking here costs €189. Joining the DubJug (Dublin Java Users Group) for free before booking gets you a further discount.

September 13, 2007

Hibernate Event - JBoss Speaker - Westin Hotel Dublin - 15th October

Lead developer from JBoss, coming to Dublin to talk about Hibernate on 15th October. What else could you be doing that evening? Full details on Developers.ie.
Hibernate Logo

What is Hibernate? Java programs are like Lego blocks - very 3D with bumps on them to connect together. Database tables to store data are like flat sheets of paper. Hibernate is a bridge between these two very different worlds. In technical terms, it’s called Object-Relational-Mapping (ORM).

Why is it important? Hibernate is the defacto standard in the Java World, and has had huge influence on the most recent version of the EJB spec. There’s a .Net version and even competitors (such as Toplink from Oracle) are moving to the Hibernate way of doing things.

July 11, 2007

UCD - part time MSc in Advanced Software Engineering - open for applications

Filed under: Dublin, Information Technology, Training, ucd — Paul Browne @ 2:02 pm

UCD are currently looking for applicants for the Msc in Advanced Software Engineering (a great title for a course!). I’m currently finishing up the dissertation on it , and would recommend the course, both on the basis of the content, and the format (6 weeks over 2 years + exams + dissertation). You’re still dealing with academia, but at least academia trying to look out at the real world.
More details , including how to apply , and in Mel’s mail below

Hello,

I’m sending this email to anyone currently or previously involved in the MSc
in Advanced Software Engineering in UCD
. We’re recruiting new students for the coming session. If you know anyone who might be interested, please
forward them the email below.

many thanks

Mel.

The School of Computer Science and Informatics in University College Dublin
invites applications for the MSc in Advanced Software Engineering.
Registration takes place in September 2007; the first module will be held in
December 2007.

This course is ideal for someone working in the software industry who wishes
to develop new skills and gain a postgraduate degree, but who cannot study
fulltime for whatever reason.

A student on this degree takes 6 week-long, intensive modules over a two
year period, followed by a writing a dissertation. Each module takes place
on the UCD campus, while the dissertation work is undertaken off-campus
under the supervision of a UCD academic.

For full details please see
http://www.csi.ucd.ie/Postgraduates/MScAdvancedSoftwareEngineering.html.
Contact the course director directly at mel.ocinneide [at] ucd.ie with any
queries you may have.

Dr. Mel Ó Cinnéide,
School of Computer Science and Informatics, University College Dublin,
Belfield, Dublin 4.
tel: +353 1 7162482 fax: +353 1 2697262
http://csiweb.ucd.ie/Staff/AcademicStaff/meloc

May 17, 2007

Wanted : Microsoft Visual Basic .Net trainer

Filed under: .Net, Microsoft, Training, Visual Basic — Paul Browne @ 10:55 pm

It may not be worth USD 135,000 per year, but a colleague asked me to post this requirement of a Microsoft Visual Basic .Net trainer. Experience in Visual Basic and VB.net required, even better if you’ve delivered training before. Location is Ireland (sorry to be deliberately vauge).
Drop me a line at Paul@Firstpartners.net and I’ll pass on your details. Even better, post me a link to your blog.
We’d do it ourselves, but we’ve the problem of being ‘nicely busy’ and everybody that I’d recommend is likewise.

Introduction to Visual Basic and the .Net Framework

Microsoft’s .NET

The .NET Framework and the Common Language Runtime

Test-Driving a Visual Basic Application

Introduction to Object Technology and the UML

Overview of the Visual Studio 2005 IDE

Menu Bar and Toolbar

Navigating the Visual Studio IDE

Using Help

Using Visual Programming to Create a Simple Program

Displaying a Line of Text

Creating Your First Console Application in Visual Basic

Displaying a Single Line of Text with Multiple Statements

Adding Integers

Memory Concepts

Arithmetic

Decision Making: Equality and Relational Operators

Using a Message Dialog to Display a Message

*Introduction to Classes and Objects *

Introduction

Classes, Objects, Methods and Instance Variables

Declaring a Class with a Method and Instantiating an Object of a Class

Declaring a Method with a Parameter

Instance Variables and Properties

Value Types and Reference Types

Initializing Objects with Constructors

Validating Data with Set Accessors in Properties

Control Statements: Part

Introduction

Algorithms

Pseudocode

Control Structures

If … Then Selection Statement

If … Then … Else Selection Statement

While Repetition Statement

Do While … Loop Repetition Statement

Do Until … Loop Repetition Statement

Visual Basic Programming in a Windows Application

Essentials of Counter-Controlled Repetition

For … Next Repetition Statement

Examples Using the For … Next Statement

Do … Loop While Repetition Statement

Do … Loop Until Repetition Statement

Using the Exit Statement in Repetition Statements

Using the Continue Statement in Repetition Statements

Logical Operators

Methods: A Deeper Look

Introduction

Modules, Classes and Methods

Subroutines: Methods That Do Not Return a Value

Functions: Methods That Return a Value

Shared Methods and Class Math

Notes on Declaring and Using Methods

Method Call Stack and Activation Records

Implicit Argument Conversions

Option Strict and Data-Type Conversions

Value Types and Reference Types

Framework Class Library Namespaces

Passing Arguments: Pass-by-Value vs. Pass-by-Reference

Scope of Declarations

Recursion

Arrays

Introduction

Arrays

Declaring and Allocating Arrays

Examples Using Arrays

Passing an Array to a Method

For Each … Next Repetition Statement

GradeBook Case Study: Using an Array to Store Grades

Sorting an Array with Method Sort of Class Array

Searching Arrays

8. Searching an Array with Linear Search

8. Searching a Sorted Array with Method BinarySearch of Class Array

Rectangular Arrays

Variable-Length Parameter Lists

Jagged Arrays

Using the ReDim Statement to Dynamically change array size

Passing Arrays: ByVal vs. ByRef

*Classes and Objects: A Deeper Look *

Introduction

Time Class Case Study

Class Scope

Default and Parameterless Constructors

Overloaded Constructors

Partial Classes

Composition

Using the Me Reference to Access the Current Object

Garbage Collection

Shared Class Members

Const and ReadOnly Members

Exception Handling

Introduction

Exception Handling Overview

Code in a Try and Catch Blocks

Catching Exceptions

Uncaught Exceptions

Termination Model of Exception Handling

Flow of Control When Exceptions Occur

.NET Exception Hierarchy

ApplicationException and SystemException

Determining Which Exceptions a Method Throws

Finally Block

Exception Properties

User-Defined Exception Classes

Graphical User Interface Concepts: Part 1

Introduction

Windows Forms

Event Handling

Control Properties and Layout

Labels, TextBoxes and Buttons

GroupBoxes and Panels

CheckBoxes and RadioButton s

PictureBoxes

ToolTips

NumericUpDown Control

Mouse-Event Handling

Keyboard-Event Handling

Menus

MonthCalendar Control

DateTimePicker Control

LinkLabel Control

ListBox Control

CheckedListBox Control

ComboBox Control

TreeView Control

ListView Control

TabControl Control

Multiple Document Interface (MDI) Windows

Visual Inheritance

User-Defined Controls

Multithreading

Introduction

Thread States: Life Cycle of a Thread

Thread Priorities and Thread Scheduling

Creating and Executing Threads

Thread Synchronization and Class Monitor

Multithreading with GUIs

Files and Streams

Introduction

Data Hierarchy

Files and Streams

My.Computer.FileSystem Object

Creating a Sequential-Access File

Reading Data from a Sequential-Access File

Random-Access Files

Creating a Random-Access File

Writing Data Randomly to a Random-Access File

Reading Data Sequentially from a Random-Access File

Creating a Sequential-Access File

Reading Data from a Sequential-Access File

August 17, 2006

Security Seminar in Dublin on 7th September 2006

Filed under: Events, People, Security, Training — Paul Browne @ 10:27 pm
Brian Honan of BH Consulting passed on news of a Security Seminar in the Burlington Hotel Dublin on the 7th September 2006. If you’re interested in attending , contact Brian directly. The seminar is part of Global Security Week, (http://www.globalsecurityweek.com). The seminar is free and open to all who wish to attend.

BH Consulting Logo

This year, the theme for Global Security Week is IDENTITY THEFT and as part of this years event a free seminar on Combating Identity Theft will be held on Thursday the 7ths of September at 2:00 p.m. in the Burlington hotel. The purpose of the seminar is to make individuals and companies aware of the threats posed by Identity Theft and how to protect yourself and your company from becoming a victim of this fast growing crime. The US Treasury Department in a recent report says that cyber crime has now outgrown illegal drug sales in annual proceeds, netting an estimated $105 billion in 2004. A recent report published in the Unitised Kingdom shows that companies in the UK have lost over STG£50 million as a result of company identity theft in 2005 alone.

Highlighting the dangers posed by Identity Theft and how individuals and companies can best prevent becoming victims of this crime will be speakers from the following organisations:

  • The Garda Bureau of Fraud Investigation
  • ENISA (the European Network and Information Security Agency)
  • The Companies Registration Office

The agenda for the day is ;

14:00 - 14:15 Introduction
14:15 - 15:15 Identity Theft in the Real World - Garda Bureau of Fraud Investigation Protecting your online identity - Garda Computer Crime Unit
15:15 - 15:30 Coffee
15:30 - 16:00 Identity theft - ENISA (the European Network and Information Security Agency)
16:00 - 16:30 Protecting your Company’s identity including demonstration of CORE - Companies Registration Office
16:30 - 16:50 Panel Discussion - How Best to Combat Identity Theft - Panel will include speakers from the day
16:50 - 17:00 Close
The seminar will be hosted in the Burlington Hotel on Thursday the 7th of September from 2:00 p.m. Registration is open to anyone concerned with Identity Theft and places can be booked by simply replying to this email or contacting us on 01 4404065

ABOUT GLOBAL SECURITY WEEK

Global Security Week is a global security awareness initiative in the week leading up to September 11th every year. The idea is simply to coordinate and encourage a wide variety of security-related awareness activities worldwide in that week, taking advantage of the obvious focus on security by the world’s media.

The theme for this year’s Global Security Week is identity theft. During the week, September 4th to 10th 2006, a number of events, workshops and awareness raising activities will take place worldwide to educate, inform and better prepare people to tackle the growing problem of identity theft.

Global Security Week is a public awareness initiative, not a commercial or political venture. We are not trying to obtain funding, de-rail other security awareness activities, nor focus on any particular aspect of security (such as terrorism, information security or physical security). Global Security Week is deliberately designed to be a broadly-scoped event but with a long-term aim to become the main focus for security awareness activities in years to come.

Against a backdrop of global terrorism and organised crime, security in general (and information security in particular) has become a vitally-important sociological and business issue. Commercial and governmental organisations are investing heavily in technical security controls but the security problems caused by people remain largely unaddressed.

Whilst responsible businesses and individuals employ a wide range of security measures, the global Internet community suffers as a result of those irresponsible businesses and home users who remain largely unaware of security. Hackers and spammers frequently take control of insecure Internet-connected systems, for example, to use as platforms for their attacks. Raising the general level of security awareness is the only feasible means of addressing this issue.

For more information about Global Security Week please visit www.globalsecurityweek.com

April 30, 2006

New Articles, Whitepapers and Presentations

Filed under: Articles, Business, Technology, Training, Web 2.0 — Paul Browne @ 8:23 pm

I’ve just updated the FirstPartners.net site with some new Articles Whitepapers and presentations.

These include:

April 22, 2006

UCD Module on Autonomic Systems

Filed under: Autonomic, Dublin, Training — Paul Browne @ 10:46 am

Want to know what we’ve been up to in the module on Adaptive Software? Simon Dobson’s Home Page (the course head) is as good a place to start as any.

When you understand Adaptive Middleware , replication , self -management , context collection and self-directed systems management , please let me know. It seems a long time since we covered these topics back last November and I’m currently ploughing through them preparing for the exam at the end of next month.

Apparantly Fuzzy logic isn’t just something that happens down the pub after a few pints, it’s alive and well in the chip that controls your washing machine. The theory of fuzzy logic does not cover what happens where all the odd socks disappear too.

April 20, 2006

It’s been very quiet over here (aka what has Paul been up to) - Enterprise Web 2.0

It’s all been very quiet over here , too quiet. And not just because of the hosting issues (the people at Netbunch, you know that I’m talking about you)

It’s been very quiet , because I’ve been very busy. On top of all this , we’re coming to the end of the year for the (part time) Masters at UCD in Dublin, so we’ve also got exams coming up. Thankfully it’s the last year, the downside being I have a dissertation to write.

Being a blogger , I’m not happy putting together a weighty tome that will sit gathering dust on a shelf. Instead , I want something that will solve some business problems , and that I can use as interesting content. So after much thought , the proposed title of my dissertation will be …… cue drum roll ….. ta-da!

Enterprise Web 2.0

Now, if you’ve talked to me , you know I spend a lot of my working day as an Enterprise Java Consultant , working for various banks. The idea is to take some of the Web 2.0 ideas (and you don’t need me to repeat them) and apply them to the sort of problems large companies have. Or , if you want the catchy subtitle , ” it’s all about sucking the knowledge out of people’s brains and putting it onto (ugly) websites”.

So an obvious topic to cover is the use of Ajax , which while big on the web at the moment , is going to be huge once companies realise what it can bring to their internal applications. The rest of the topics cover knowledge management (what is web 2.0 if it’s not about sharing knowledge), but also some tools and techniques that will all Enterprise Java (with all it’s robustness and scalability) compete with the nimbleness and tricks of Ruby.

Business Problem 1: How to present this information to people in a easy to deploy, but powerful way.
Solution: Update to Sun Java article - this one on how to do Web 2.0 / Ajax ‘right’ in Enterprise Java (i.e. not worrying about legacy code)

Business Problem 2: Where you have documentation, but don’t know how to find it.
Solution: Write up of the Red-Piranha Adaptive Search engine that ‘learns’ what the team wants , and finds more of it.

Business Problem 3: Where you have information in Excel sheets, but can’t do much with it.
Solution: Update to previous O’Reilly Articles on JBoss Rules - this one on JBoss’ ability to ‘run’ Excel Spreadsheets.

Business Problem 4: Where you have information that people ‘know’ , but that a machine finds it hard to ‘learn’
Solution: Simple Neural Networks using Joone, applied to a ‘real life’ business problem.

Business Problem 5: Where several people have to work together on a set of information , following a strict set of steps.
Solution: JBoss workflow, with a simple online example

April 3, 2006

Caspar Weinberger and how to do presentations.

Filed under: Business, Ireland, People, Training, presentation — Paul Browne @ 1:05 am

The Irish Times carried a report on the Death of Caspar Weinberger in it’s weekend edition. Mr Weinbeger was a contoversial but highly intelligent figure in Ronald Reagan’s Presidency (he was the US Secretary of Defense). A lot of things have already been said about him, but one almost trivial incident stood out from his obituary.

During the 1980’s , Mr Weinberger wanted to increase the Defence budget. Given that Mr Regan had a very ‘pictorial’ view on life, Caspar’s entire presentation consisted of three cartoon figures.

  • A Solider figure , made to look as wimpish as possible (short of wearing lavendar), to represent the Democrats Defence Policies.
  • A Nerdy Solider figure , wearing glasses and with a briefcase, to repsent the ‘balanced’ approach his opponents in cabinent wanted.
  • A Rambo like figure, armed to the teeth , representing the Billions he thought the US should be spending on Defence.

Mr Weingbeger got his Billions. You may or may not agree with his objectives, but as presentation skills go, he can still teach us a lesson. Forget the details - you can talk about those later. Cartoon like images are what stick in people’s minds.

March 31, 2006

Day 5 of the Exoftware Agile Course at UCD Dublin

Filed under: Agile, Architect, Dublin, Ireland, JUnit, NoUnit, People, Testing, Training — Paul Browne @ 3:05 pm

If you’re very observant , you might notice that this post is about a week late. Still , here are my notes on the slides / nodes from the final day of the Agile course.

Previous Posts from the training course are:

Exoftware Logo

Junit Introduction

  • Junit
    Framework for writing automated unit tests (don’t need to use Junit
    to write the tests , but it helps)

  • All Junit
    tests extend TestCase

  • Individual
    test methods (pre Junit 4.0) : public void testSomething() method
    signature

  • Use
    assertEquals assertTrue assertFalse assertNull assertNotNull
    assertSame and fail methods for testing.

  • SetUp() and
    tearDown() methods called before and after each test method.

  • TestSuites
    (groups of TestCases) replaced by Ant and (Eclipse) IDE
    functionality

  • Run tests via
    built in Text / Swing test running , or more likely use IDE / Ant
    integration.

  • Organise via
    same or paralell folders

  • TestMyClass
    or MyClassTest

Mock and Stubs

  • Problem: some
    classes (Collaborating Objects) can be tightly bound to system
    resources (e.g. File or Database) or to a hard to test API. Another
    example is the observer pattern. How do we unit test these?

  • Solution: use
    fake object , pass it to class under test , allows testing of the
    class at a unit level.

  • Stub : fake
    object that uses hard-coded data , often following an API. Many
    ready made stubs available (e.g. For the JDBC libraries).

    • Replace
      expensive to create objects

    • Have to
      create all objects that production code interacts with.

    • Start in
      middle and develop outwards

    • One failure
      can ripple out / appear elsewhere.

  • Crash Test
    Dummy: type of stub that deliberately fails in order to test
    exception handling – simulate database crash or I/O full.

  • Self Shunt is
    where the unit test itself implements the interface (doesn’t work
    for classes) and gets callbacks from the class under test.

  • Mock Objects
    like stubs, except that they are intelligent enought to self-verify.

    • Mock
      Secondary objects (normally ones that we build) instead of API (as
      Stub does)

    • Outside in
      development style

    • What if mock
      implementation is incorrect?

  • Interaction vs. State: In
    state-based testing you check the tests by examining the state after
    the stimulus. In interaction based testing you check the right
    interactions were triggered by the stimulus - Martijn
    Fowler,
    http://martinfowler.com/articles/mocksArentStubs.html

  • Mock objects
    tend to test more the interaction between objects rather than a unit
    test of the object itself.

  • Stub rather
    than mock external API’s

Smells and refactoring.

  • Code smells
    are bad or suspect design decisions in code.

  • Not always
    bad , but should be looked at (often will involve a trade off)

  • Smells are
    often hard to understand , hard to change code.

    • Samples :
      duplication / long methods / poor naming / tightly coupled classes
      / switch statements /

  • Refactoring :
    Small , controlled changes to codebase , so that it continues to
    compile / tests run to improve the design. The behaviour remains
    exactly the same.

  • Seperate
    refactoring and adding additional functionality.

  • Easier with
    automated tools and Unit tests to confirm that nothing has broken.

  • Refactoring
    != Rewrite. Codebase is evolved , not thrown away.

User Stories

  • In some ways
    , equivalent to Use Case from Predictive methods (but with subtle
    differences).

  • Represent
    chunk of functionality that makes sense to the customer.

  • Can be
    represented as card / conversation / paper based documents (more
    predictive approach).

  • In Agile (as
    opposed to predictive) , shift the focus from writing to talking
    i.e. Get a true understanding of what the customer wants , even if
    they haven’t expressed it very well.

  • Lessen the
    importance of requirements

  • Support
    iterative development and participatory design.

  • Even a simple
    requirement has many possible permutations (that lessen the odds of
    getting it right.

  • Not just a
    generic user – but more user roles – groups of users that do
    different things with the system , depending on their experience ,
    task at hand etc

  • User Stories
    should be Invest:

    • Independent

    • Negotiable

    • Valuable

    • Estimatable

    • Small

    • Testable

  • Templace
    (FlashCard , as used by Xplanner)

  • Be careful of
    size

    • too big and
      cannot be used for estimated (break these down into smaller
      stories). Easy for Compound , but for complex stories might need to
      do some research and then break out.

    • Too small ,
      and it is not worth the admin of estimating each. Bundle them up
      into higher level task like UI improvements or bug fixes.

  • User Story
    should give us the acceptance tests

March 24, 2006

Day 4 - Summary of the Agile Course so far (Part 1)

Filed under: Agile, NoUnit, Training — Paul Browne @ 2:23 am

Below are my notes from the Agile course so far - covering introduction to Agile projects , why it makes business sense, the use of FIT and other acceptance testing tools what Agile means for customers , managers and teams.

These notes are a good complement to the Agile presentation I gave.

Introduction to Agile

  • Requirements
    Change on project – it’s going to happen , clients (paying for the code) have the right to change their mind , accept it and get on with it.

  • Agile Family Includes

    • XP (Extreme Programming)

    • Scrum

    • Adaptive Software
      Development

    • Lean Software
      development

    • Feature Driven
      Development

    • Crystal

    • DSDM

  • Values
    wrap Principles wrap Practices

  • Values
    (from the Agile manifesto)

    • Individuals and interactions over processes and tools.

    • Working software over comprehensive documentation.

    • Customer collaboration over contract negotiation.

    • Responding to change over following a plan.

  • Principles
    (Customer Focused)

  • Deliver early, deliver often.

  • Deliver valuable software.

  • Welcome change.

  • One
    Big team (business people and developers)

  • Principles (for Management)

    • motivated individuals give better results

    • face 2 face is the best way to communicate (although accept need to
      communicate across location and across time as good 2nd
      best).

    • Remember : working software that meets business needs is the primary measure
      of progress

    • Promote sustainable development (or you’re just going into Technical Debt)

  • Principles(for Teams)

    • use technical excellence and good design to promote agility but

    • simplicity is essential

    • the best architectures, requirements, and designs emerge from
      self-organizing teams (rather than imposed from above)

    • do continual improvements to the process

  • Practices

    • Continual Improvement

    • Technical Excellence

    • ProjectManagement

    • Business Practices

    • Community and Collaboration

  • Why Agile

    • Waterfall projects : we’re most likely to find bugs in testing phase at the
      end , when (a) we’re most likely to be under time pressure and (b)
      when they’re most expensive to fix.

    • Waterfall projects: Hard to know how far through we are , as each step is
      different from the last (design has gone well , but will coding do
      better or worse?)

    • Agile:Testing is continuous, so likely to get early feedback and
      resolution of bugs. Testing = Unit Tests and Acceptance Tests.

    • Agile: Progress is steady and measurable , as we carry out all
      tasks as part of a regular cycle.

    • Productity = doing less but producing more value. e.g. Customer can prioritize
      highest value tasks and we deliver these first.

    • Standish group stats showing small projects are more successful.

    • Deploy early and often gets usable software into the hands of users sooner
      where it can start to payback it’[s investment earlier.

    • Success factors for Agile projects:

  • Enthusiastic development team/ Committed customer / Knowledgeable on-site QA
    resource / Didn't cherry pick practices / Open workspace / Regular
    retrospectives.

  • Still hard work to do:

    • Good people give good software

    • Can be faked , so people really need to buy in

    • Practices are learnable / a lot are common sense

    • Recognize reality

Informative
Workspace

  • Person walking into 'normal' coding office has no idea of what is going on, nor what status it is at. Most of the stuff is in people's heads.

  • Informative workspace seeks to communicate this information (via simple methods)in the office e.g. Notice boards, coder of the week hat , printed graphs of velocity , iterations etc.

  • Kent
    Beck :
    "An interested observer should be able to walk into the team space and get a general idea of how the project is going in 15 seconds. "

  • Similarto Kanban idea – while going for Just in Time / continual improvement , visual representations are displayed to demonstrate
    progress.

  • Information Radiators : anything that gives out info (example given of monitor running , showing latest build progress).- jokey examples of Lava
    Lamps / notes in toilet

  • Toyota (Toyota production system – recognise their edge is in how they build their cars, and not just the cars that they build).

    • Human face to automation.

    • Board giving current
      production status

    • Audible Cues

    • Ability for anybody to stop the line.

Testing and Design by Contract

  • Started by Bertrand Meyer in the Eifel Language

  • Frameworks available to add these (fully) to the Java Language – over and above the functionality available in Java 1.4 (the assert keyword)

  • Already have a contract that is enforced by the compiler in Java (e.g. Method signatures , return types)

  • Adds to this , to be a finer grained level .e.g method should return not only an Integer , but an Integer of value 0 to 100

  • Like every contract both sides (Caller and Callee) have responsibilities

  • Pre Conditions : Condition that must be true when the method is called.

  • PostConditions: Condition that the method guarantees when it returns

  • Class Invariants state what will be true at a class level (once all pre-conditions at method level / constructor level satisified)

  • Both pre and post provide additional specifiication (.ie. It is clearer to people using the code what is required / what it does). As such
    provides clearer design and additional documentation.

  • Can make code more succient by replacing 'boilerplate' code with standard check (e.g. Precondition param must not be null).

  • Java
    Example :

    • Pre
      Condition /**
      @require !empty() */ - as
      javadoc on method (multiple checks allowed) –

    • Post
      Condition : /** @ensure !full()*/

    • Class Level invarient: /** @invariant 0 <= count()*/

  • Exceptions

    • Pre Condition violation should give RuntimeException – provide method to test before call (e.g. IsEmpty() before doing remove)

    • Post conditions: supplier should be every effort to fulfill these : so if it can't , it is normally due to an Exception (callee should be prepared for this failure)

  • Junit

    • Codein Junit verifies the contact of the class (and provides documented example of code use)

    • assert methods = post condition testing

    • test invarient by checks at class and not just method level (e.g. Check overall status of class, not just return value of method under
      test)

    • Pre conditions by be tested by violating these in setup (code before call to method/ class under test) and ensuring exception is thrown.

  • Think about Test as a contract.

Acceptance Testing

  • Acceptance Tests – defined (or agreed by customer) , states thatfunctionality is complete

  • Differ from unit tests in that they are system wide rather than at class/unit level.

    • Sometimes people used high level / coarse level Junit tests.

  • Unlike unit tests don’t need to be a 100% all the time (but once passed , should alway pass)

  • Automation is nice (for developer and customer)

    • Own note: Not everything in acceptance testing is automatable. e.g. UI testing.In this case automating the acceptance testing of the calculations (the 80%) means that the UI testing is a lot easier.

  • Sample Frameworks for Automated acceptance testing

    • FIT – see notes below

    • Exactor – see notes below

    • Fitnesse – FIT but wiki based (easier to do multiple tests , easier to communicate these to a team.

    • WinFIT runner

  • Inputto all these tools is close to a spec (close in that typicaluser , after one walkthrough should be able to understand what the documents mean).

  • Tests can be written before application is build (again, the notion of the tests forming a spec). A lot of the commerical tools ,
    especialy those that record against a ‘live’application, do not allow this.

Automated Acceptance Testing with FIT

  • Allows Customer s to review (if not write) the acceptance tests.

  • Previously would have done these tests manually , or via large Junit tests (i.e. Use Junit not as Unit testing , but a way of describing the entire app from the user point of view).

  • Data (unlike in Exactor) is specified as a HTML table. All non-tables are ignored (so safe to created tests documents using MS Word).

  • Fixture (connects this HTML Data) to run test against 'production' code.Fixtures are written by programmers (as part of proving code meets
    the spec). Three types of fixtures.

    • Column

      • One class for each table

      • Fit works through on a line by line basis – good for repeating the same action over and over again.

      • 1st Line of Table : Class Name to be tested

      • 2nd Line of Table : class variable or methodName() to be set / called

      • 3rd
        Xth lines of table: values to set or expected values to be returned

      • Good for testing Domain (Business) Logic parts of an application

    • Action

      • mulitiple class for
        each table

      • start – the class to be tested

      • enter – value to be passed into method (no return value)

      • press – call method (no input or output)

      • check – check value on method (no input)

      • Good for stimulating interaction with the user interface (or more accurately either the controller that sits just behind the user interface).

    • Row

      • Like Column , but interprets all at once (rather than one at a time)

      • extend RowFixture ,
        provide query[] and getTargetClass() methods – allows Fit to see what data structure

      • good for testing coding in the service / persistence / db layer of code.

Automated
Acceptance Testing with Exactor

  • Exactor (http://exactor.sourceforge.net)

  • Allows Customer s to review (if not write) the acceptance tests.

  • Previously would have done these tests manually , or via large Junit tests (i.e. Use Junit not as Unit testing , but a way of describing the entire app from the userpoint of view).

  • Comprises (like fit) of

    • Script – a text file thatyou could show the customer.

    • Commands : what the script calls , extends Exactor classes. These commands then call the code beingtested.

    • Command extends Junit assert –
      so usual capabilities available.

    • Command provides access to test wide map to allow storing / exchange of values.

    • Allows composites to reuse scripts.

    • Scripts allow placeholder parameters

March 22, 2006

Day 3 of the Agile course at UCD

Filed under: Agile, JUnit, Testing, Training — Paul Browne @ 6:12 am

Day 3 of the Agile course.

Today’s topic was mock and stub objects, refactoring and automated acceptance tests using Fit and Exactor. Worked through Video Store example (from refactoring) to remove code smells.

March 21, 2006

Day 2 of the Agile Course at UCD

Filed under: Agile, Dublin, Training — Paul Browne @ 12:59 pm

Day 2 of the Agile course (provided by Exoftware) at UCD. Most of yesterday (day 1 that I missed), was good , but standard introduction , including:

  • Differences between RUP (Rational Unified Process), Extreme Programming (XP) and Agile approaches.
  • The XP / Agile Planning Game.
  • Problems with the existing software development process.

Today (Day 2) is a lot more ‘hands on’ in that it’s straight into the computer labs to work through the example that we’ll be using for the rest of the week. Two of the more interesting items that we’ve covered today (apart from working through the ‘Build a system to play blackjack’ example are:

  • Comparing Test Driven development to Design by contract. In this comparison, the code to setup your unit tests are equivalent to your pre-conditions, and the assertions within the JUnit tests are the post conditions.
  • Separation of concerns on get / set: each should do one thing , and one thing only

The worked examples from today (Mock Objects and Video Store) are also very well thought through and get the point across.

March 20, 2006

Day 1 of the agile course at UCD

Filed under: Agile, Training — Paul Browne @ 1:07 pm

Not much to report, given that I was in Leeds on a business trip … but I’ll post the ‘catch up’ on what happened today as part of Day 2.

February 21, 2006

Stop reading these blogs and get on with your life

Filed under: Articles, Business, Office, Outlook, Training — Paul Browne @ 4:12 am

And it’s not just blogs that waste time in your life. A colleague was good enough to pass on the handbook from a ‘more effective time management’ course he was on (and swears by). It was given by Priority Management , on Getting Smart with Outlook , but it’s applicable to whatever email client that you use.

Notes from the Handbook are here on the KnowledgeBase.

Before you yawn and click elsewhere , consider the remainder of your life as 1 page per day diary - no matter how long you have left , you have a finite amount of blank pages left. It’s up to you how you use them. The headlines are:

  • Get yourself organised *before* you read your emails in the morning. This way you are working to your agenda, not somebody elses.
  • Only check your email 4 times a day - constant interuptions means that a task can take up to 4 times longer to complete (as your brain needs time to focus back on the task each time).
  • When you get an Email , do one of the 4 D’s
  • Do it now
  • Decide When to do it
  • Delegate - give it to somebody else
  • Dump (ie Delete it)
  • Schedule all you tasks into some sort of Time Planner (e.g. Diary or Outlook Calendar). If you use Microsoft Outlook / Exchange , have this page as your default view (again, you work to your own agenda, not somebody elses).
    • February 17, 2006

      Enterprise Java Workshop in Dublin

      Link to Enterprise Java Workshop, to be led by Dr. Bruce Martin in Dublin on the 6th - 9th March.

      Is anybody going? Is it worth $1995 USD for 4 days? (and I’m not going to get sniffy about us using Euro over here :-) ) Who is this course aimed at? In some ways this course is like Corba: very relevant to the very small niche that use these technologies, but the broader line of ‘best practice’ has moved on.

      An extract from the Agenda is below. It seem to broadly match what Sun looks for in it’s Enterprise Java Architect Certification. As such it shares the plus and minus of this approach : You get the Orthodox Entreprise Java Approach, or at least the approach being plugged by Sun about 3 years ago.

      The trouble with this approach is that the Enterprise Java world has moved on. Hibernate has pushed aside Entity Beans , so much so that Enterprise Java Beans 3.0 is a complete turnaround it it’s direction. Spring has got a lot of traction as an EJB-Lite (and I mean that with the most positive connotations). Enterprise Java Patterns are much better understood (just search the IBM site), if not more widely understood.

      Where’s the Ajax and the impact of multiple, small , web requests on application scalability? The JSON (as part of the Web Services)? Does it cover Java Server Faces and the emerging Ajax enabled Java Presentation Frameworks? What about workflow and rule engines and Java Messaging Services (JMS)? How about the tool integration to make your teams life easier when building the designs that you , as an Architect , have come up with? I don’t see Security in there , nor any of the other JSR (Java Specification Requests) that have come out of the broader Java community in the last 3 years.

      And that’s before I go on about the only ‘technology alternative’ being offered is .Net - the PHP , Ruby and Oracle guys will have something to say about that! All have strong cases to make on a project by project basis. What about off the shelf products (both open source and commercial) that could , depending on the project, give you most of the functionality you need and you just have to customise the remaining 20%?

      Maybe I’m being unfair, and the above is not the aim of the course.

      For info, it’s on in the Gresham hotel on Dublin’s O’Connell Street from the 6th to the 9th of March. If you want a good solid foundation in Enterprise Java, and if somebody else is paying for it then it’s probably to be recommended. It might even help you get certified as a ‘Sun Enterprise Java Architect’. But unless you’re in an outstanding group, don’t expect it to be cutting edge.

      Are you going - prove me wrong and leave a comment!

      Project Module

      • Introduction
      • The Value Propositions of J2EE and EJB
      • J2EE vs..NET
      • Requirements of the Auction Application
      • Group Discusssion: J2EE or not, EJB or not
      • Activity: Identify the Auction Objects
      • Vertical Slices
      • Activity: Identify Vertical Slice
      • Communicating Architectures

      Persistence Module

      • Pros and cons of JDBC
      • Object Relational Mapping
      • Java Data Objects (JDO)
      • EJB 2.x CMP Model and Relationships
      • EJB 3
      • Other O-R mapping solutions
      • Group Discussion: Persistence Matrix
      • Activity: Persistence Strategy for the
        Auction
      • Advanced Transaction and Concurrency
        Control topics
      • Activity: Identify the Transactions

      Scalability Module

      • Principles of Scalability and Fault
        Tolerance
      • Application Server Clustering solutions
      • Activity: Scaling the Auction

      Integration Module

      • Messaging
      • Activity: Messaging in the Auction
      • Connectors
      • XML, Web Services and SOA
      • Activity: Enterprise Application
        Integration
      • Activity: B2B Integration

      Application Design Module

      • Top Ten J2EE Design Patterns
      • Activity: Design patterns or not
      • Activity: Complete the design
      • Group Discussion: Custom Consulting

      February 16, 2006

      UCD Confirms Agile Course with Exoftware

      Filed under: Agile, Business, Development, Dublin, Events, Microsoft, NoUnit, Training — Paul Browne @ 8:13 am

      UCD (University College Dublin) have just confirmed that the next module in the MSC in Software in Software Engineering will be Agile Software development, with the module provided by Exoftware - them that are into Extreme Programming in a very big and very effective way.

      Ironic then , that I’m meant to be presenting on Agile Software to the Irish .Net Developers Alliance (INDA) the week before -:-)

      Newer Posts »