The fifth semester (at the IT University) I was part of a six person team that analyzed an existing application written for Mac OS X (in Objective-C), with the ambitions to reuse as much as possible of the application, though changing requirements for it.
The first requirement added, was that the new application (Socio) should be available on other platforms than Mac OS X. This requirement was achieved by building the new code in C# / Mono and embedding both the Mono runtime and the Objective-C runtime in a C application.
The second requirement added was to make the current monolith application extendable. This requirement was solved by creating a Plug-in architecture where the whole application runs as different plug-ins for the complete functionality.
The first thing that was done was an analysis of the current application followed by the creation of a requirement specification and architecture for this application (no requirements or architecture documents were available). Then we added the two requirements and created a new architecture that was implemented.
The hardest part in this project was to understand, learn and make all different techniques work together.
My roles in this project were as architect and developer.
The following artifacts were produced during the project:
- Article – An Evaluation of Porting and Reuse Activities
- And a number of other documents
Download all documentation from the Socio project (16 MB)