A Flexible Software Development Process for Emergent Organizations

Giuliano Armano

DIEE, Dipartimento di Ingegneria Elettrica ed Elettronica, University of Cagliari
Piazza d’Armi
I-09123, Cagliari (Italy)
Tel. +39-70-675.5878

Email: armano@diee.unica.it

Michele Marchesi

DIEE, Dipartimento di Ingegneria Elettrica ed Elettronica, University of Cagliari
Piazza d’Armi
I-09123, Cagliari (Italy)
Tel. +39-70-675.5899

Email: marchesi@diee.unica.it

Keywords Flexible Software Process, Lightweight Methodologies, Extreme Programming, Refactoring.

An important change in software engineering practices is probably approaching, mainly due to the need of adapting organizations to the rapid development of commercial technology and global markets. To better understand it, such a phenomenon could be investigated from different perspectives, i.e., conceptual, methodological, and technological. In our opinion, the conceptual scenario will encompass emergent organizations, and it will be centered on flexible software processes. The methodological scenario will be focused on object-oriented iterative development, a team-oriented approach, and an augmented focus on reviews and testing. The technological scenario will be headed towards more powerful development tools, able to support architectural, analysis, and design patterns, as well as frameworks and components.

For the sake of brevity, the paper is mainly concerned about methodological issues. To this end, it is worth pointing out in advance that most of the changes in software development appear to be caused and driven by the need of controlling some form of entropy. According to the above assumption, important events that occurred in the classical software era could be revisited. In particular, we deem that the transition from code-and-fix to the waterfall process has been driven by the attempt of controlling increasing communication entropy. On the other hand, the transition towards iterative processes has been mainly driven by the need of controlling changing or ambiguous requirements. To "anticipate" the next forthcoming a change (headed towards an improved flexibility) before being actually compelled to do that by environmental constraints, we believe that (i) a fine-grained iterative development, (ii) a team-oriented approach, and (iii) an augmented focus on reviews and tests should be largely adopted by object-oriented software development methodologies. Such practices help to promote - instead of limiting- the communication among team members, improving the capability of being highly reactive against any change on system requirements. In particular, we shall probably be acquainted with micro-waterfall processes (consisting of analysis, design, test, and implementation), continuously iterated over the system to be developed.

In the paper, we briefly outline a flexible software process, strongly biased towards refactoring, that tries to embody the above practices. It follows the guidelines suggested by XP by suitably customizing UP activities; in particular, inception, elaboration and transition result in very lightweight activities. As far as flexibility is concerned, it is enforced by relaxing communication constraints, e.g., by encouraging a team-oriented, as well as test-based, approach.

The proposed process basically follows XP principles, but relies also on UML to express the design of the system to be developed. In fact, UML has been selected as the underlying language for representing the model (for it is a standard widely accepted both by developers and management), and Smalltalk has been selected as target language. The main difference between XP and the process we promote is on the scope of refactoring activities: XP encourages refactoring mainly at the implementation level, whereas our approach extends it to design and architecture definition. This solution could be seen as a natural evolution of the extreme way, as it keeps focusing on refactoring, while extending it to A&D. In order to do that, round-trip-engineering practices (i.e., moving back and forth between analysis, design, and implementation levels) have been enforced by adopting UMLTalk, a suitable tool –developed at our department– that allows developers to continuously keep synchronized the model and the corresponding Smalltalk implementation.

As an example of the proposed process, we describe the development of a system that falls within the class of business-oriented Internet services. The system provides both an on-line and an off-line front-end. The former consists of a web service supplied to any potential businessman or company searching for a grant by the European Community, the state, and other national or regional boards. The latter consists of a local service supporting domain experts in updating the information about grants. In the Web pages of the system, typically the user is asked information about the business to be undertaken or improved. Depending on the given user profile, the system interrogates a data base containing information about all available grants, and selects the information that match the user profile. Results are automatically reported to the user by means of dynamic web pages. The proposed process has demonstrated to be very effective in such a small-sized project, exhibiting a considerable increase of productivity.