Click the title to download the PDF.
The Software Lifecycle
Author(s): Ant Kutschera
Description: These are the slides to go with the presentation made to second year industrial engineering students at the HEIG Vaud Engineering School (University).
Available since: 08 Jun 2011
A comparison of DCI and SOA, in Java (Version 2)
Author(s): Dr Ant Kutschera
Description: DCI is a paradigm used in computer software to program systems of communicating objects. Its goals are to make code more readable by promoting system behaviour to first class status by avoiding the code fragmentation of this behaviour as typically seen in an object oriented solution. This allows the rapidly changing system behaviour code to be developed and maintained independently of the slower evolving domain model (data classes). This allows programmers to reason directly about system-level state and behaviour rather than having to create a map between their mental model, and that of the user, which leads to more easily maintainable code1. In DCI, the data model is used for just that, namely data structure. The behaviour is not partitioned along data class boundaries; rather it is self containing and as such has boundaries more natural to behaviour rather than data. In DCI, objects can dynamically take on roles determined by the context. A role is partly the system behaviour which relates to a particular use case or algorithm, but is also a way of viewing a particular object within such a use case. These things make DCI very powerful, and make DCI a paradigm in itself, comparable to object oriented programming in its time, or service oriented programming. The author has architected, designed programmed and maintained Service Oriented Architecture (SOA) solutions for nearly a decade and sees parallels between DCI and SOA. These parallels are discussed here. The second version was made available on the 20th September 2011. Minor changes were made on the opinion of whether a modified SOA implementation was useful or not.
Available since: 31 Oct 2010
DCI in 1585 words
Author(s): Dr Ant Kutschera, Dr Andreas Schlapbach
Description: Most articles about DCI are long, somewhat complicated and often philosophical. It didn’t take me very long at all to grasp the concepts behind object oriented programming (OOP), when I read about it. And it shouldn’t take long to grasp the concepts behind DCI either. So instead of wasting words, let’s get on…
Available since: 31 Oct 2010
DCI Design Idea: The Specialised Role
Author(s): Dr Ant Kutschera
Description: Sometimes a DCI (Data, Context and Interaction) Role is defined, which may need to be specialised. Every specific implementation has the same interface (the same role methods), so they can be considered the same role, just with different implementation details. The choice of specific role is made by the context during the assembly of data and assignment of roles. It is usually based upon attributes of the data. In such cases, the specialised role can be useful. In this design idea, the context deals with an abstract role, but knows how to specialise it, based on the data which needs to play the role.
Available since: 19 Oct 2010
DCI Cheat Sheet
Author(s): Dr Ant Kutschera
Description: A simple cheat sheet for DCI (Data, Context, Interaction).
Available since: 19 Oct 2010
Enterprise GWT: Combining Google Web Toolkit, Spring and Other Features to Build Enterprise Applications
Author(s): Dr Ant Kutschera, Barbara Spillmann
Description: Google Web Toolkit (GWT) provides developers with a powerful means of developing AJAX front ends without the worry of having to maintain complex Java script libraries to support multiple browsers and browser versions. GWT also provides support for Remote Procedure Calls (RPC) to the server. Since April 2009 the Google App Engine has existed, which allows developers to deploy their GWT applications and also provides support for Java Data Objects (JDO) and the Java Persistence API (JPA). However what is missing for GWT to be deployed to a modern Enterprise environment is a service framework providing dependency injection and inversion of control (IoC), transaction demarcation and security, such as that provided by Spring or Enterprise Java Beans (EJB) 3.0. Furthermore GWT does not define any patterns for User Interface designs, or composite widgets. This paper describes how to successfully integrate Spring into a GWT Application with the aim of creating a fully scalable development framework for deployment in the Enterprise and beyond (including simple and small applications), with very little start up time being required, because you can download the demo application. It includes UI Patterns and composite widgets to improve the development of the front end.
Available since: 26 Jan 2010
Code: maxantGWTDemo-1.0.0-201001252000-src.zip
Agile Software Development of Service Oriented Architectures, Business Process Models and Enterprise Service Buses
Author(s): Dr Ant Kutschera, Rowan Mountford
Description: A modern IT environment in the enterprise makes use of many systems, such as an Enterprise Service Bus (ESB), Business Process Modelling (BPM) Engine and a Java Enterprise Edition (Java EE) Application Server (AS). These systems would typically connect with anything like an Email Server, FTP Server, File Server, LDAP Server, Databases or other systems such as SAP or legacy systems. Inside the systems, technologies like Service Oriented Architecture (SOA), Enterprise Java Beans (EJB), Web Services (WS), Object Relational Mapping (ORM), Model View Controller (MVC), Inversion of Control (IoC) and Dependency Injection (DI), and many others are common place. This paper is split into three sections. The first puts forward an agile development platform and gives an example tying all the systems in the proposed platform together. The second section discusses what the authors discovered during the implementation of the example as well as problems and solutions in agile development in such environments. Finally recommendations are made in the third section.
Available since: 15 Sep 2008
Service Oriented Architecture Strategies
Author(s): Rowan Mountford, Dr Ant Kutschera
Description: Over the past 5 years the phrase “Service Oriented Architecture” (SOA) has become a term commonly used throughout IT departments in the Enterprise. There are many definitions1, but the underlying idea is nothing new – hiding implementation details (the “how”) and providing interoperable interfaces which any part of the Business or indeed any Business Partners can plug into, to use the services “on demand”. A service typically represents a particular business process within the company, or may indeed be an orchestration of a number of business processes put together. A related technology, namely Web Services, has played a big part in providing the implementation of such services since they too offer interoperability and abstraction away from technology specifics.
Available since: 15 Jul 2008
Open Source J2EE Enterprise Service Bus Investigation
Author(s): Dr Ant Kutschera
Description: The objective of this study is to specify the meaning of Enterprise Service Bus (ESB), to investigate what ESB products are in the open source market and to evaluate selected products to determine which could be recommended for greenfield software projects that require an ESB.
Available since: 15 Jul 2006
Making Off Shoring Work
Author(s): Dr Ant Kutschera
Description: If the big trend in corporations’ IT departments in the 1990s was out sourcing, then the big trend of the first decade of the 21st century is to send IT projects off shore. Companies see both of these exercises as a way to save money especially because charge rates for IT workers in off shore locations are low enough that the risks involved in such a huge operation are out weighed by the cost savings. The following paper discusses the things to expect when out sourcing your existing development/maintenance team, in particular off shore and how to ensure that this operation works successfully.
Available since: 01 Dec 2005
Project Management: Software versus Kitchen Fitting
Author(s): Dr Ant Kutschera
Description: From a project management point of view, software projects have often been compared to those in the construction industry. In many late night conversations with project managers, the author has often discussed how software development could actually be compared to any industry where products are developed within a project environment, for example, anything from building a motorway, to constructing a kit car. As a result of moving into a house with an old kitchen the author of this paper was assigned a Kitchen Fitting project when senior management took the decision that a new kitchen was required. The delivery date was set based upon a plan negotiated between the developer (the author) and management. No sooner had implementation commenced, than problems were encountered. These problems had uncanny resemblances to those previously experienced by the author in software projects. This paper draws parallels between project management problems in the kitchen project and those of software projects, shows conclusions between the similarities, and suggests ways of reducing the impact of these problems for the software project manager.
Available since: 10 Aug 2004