8. Final Remark

8.1 Conclusion

Most of the requirements are general ones that are not limited on specifying a Test Suite. They might also be true for other applications, even applications of other domains. Many requirements can be fulfilled with a modular application design. Component-oriented programming promotes the building of modular applications [Löwy05, p. 1]. The .NET Framework is based on the principles of a component-enabling technology and thus helps to achieve this goal. One important feature missing in the current .NET Framework 3.0 is a mechanism to wire loosely coupled modules together at runtime. Here the plug-in architecture comes into play. This kind of architecture is already widely used in desktop applications. Manufacturers and institutions started the development of plug-in frameworks because the implementation of a plug-in architecture is not a trivial task. These frameworks assist the software developer to build plug-in based applications.

The Composite UI Application Block is one of these frameworks. It is used in combination with the Smart Client Software Factory for the prototype application to show how the requirements can be fulfilled. The application framework saves a lot of time in implementing the prototype since it already fulfills a couple of the requirements. Additionally, it promotes good object-oriented design by wizard driven code generation. Nevertheless, one of the major drawbacks is the high learning effort for this framework. Microsoft tried to address this issue with the Smart Client Software Factory but still the effort is not negligible.

In my opinion the uses of plug-in architectures will grow in the future. This strategy is supported by general application requirements like testing of isolated components. Furthermore, it can reduce the complexity of applications and decrease the maintenance efforts. Some IDEs already support the plug-in based development like the Eclipse Plug-In Development Environment17. The high learning effort is one of the main drawbacks of plug-in architectures. This drawback is weakened by the fact that an IDE like Eclipse supports the development of plug-ins and thus simplifies the usage of plug-in frameworks.

8.2 .NET Framework Application Extensibility

In the previous chapter it is mentioned that the .NET Framework 3.0 does not provide an implementation of a plug-in architecture. The successor of this framework version is going to deal with this issue. Microsoft introduces the System.Addin namespace in the .NET Framework 3.5. This namespace contains a plug-in framework with the main focus on application extensibility for third parties. Thus, the design goal behind this namespace is to enable dynamic composition of version resilient, isolatable components [GK07]. It contains a communication pipeline between the host and the add-in to enable compatibility because both parts can evolve independently [GK07a].

The System.Addin namespace shares some ideas with the Composite UI Application Block but it has its strength in another domain. The requirements, which are defined in chapter 2, do not have the need for version resilient, isolatable components. Therefore, the use of the System.Addin namespace is not practical to fulfill these requirements.

8.3 Open Issues

This diploma thesis concentrates on the evaluation of three plug-in frameworks. In a future work further suitable solutions could be investigated and compared with the plug-in frameworks of this thesis. Examples for such solutions could be as follows:

Mono.Addin

Beside of the current available solutions some promising projects have been started at the time of writing this thesis. One of them is the Mono.AddIn framework20. It is a further development of the SharpDevelop add-in system. The most important improvement, which is planned for this framework, is the use of Attributes to define the add-in description. This simplifies the configuration and the refactoring because the descriptions are at the same place as the associated code. Even though, it should still be possible to describe the add-ins via the xml files. The Mono.AddIn framework is intended to create extensible applications. Therefore, it minimizes one of the main drawbacks of the SharpDevelop add-in system. The evolution of the Mono.AddIn framework is likely to be more stable than the add-in system of SharpDevelop.

Acropolis

Another promising project is the Microsoft framework code name Acropolis21. It is a set of components and tools that simplifies the building and managing of modular client applications. Microsoft intends Acropolis to be the successor of SCSF / CAB and promises to create a migration path for existing SCSF / CAB applications [Block07]. The success factor of Acropolis could be the designer environment in which a software developer shall be able to define the entire application. If the designer is well thought out, it would really simplify the development of modular applications.

Customizing the Software Factory

Another idea for future work is to customize the Smart Client Software Factory to the needs of a Test Suite. This could also be a way for simplifying the development of an application in a specific domain. It would be interesting to see how much can be gained in relation to the efforts necessary in customizing the Software Factory.

17 The official Website of Eclipse PDE: http://www.eclipse.org/pde

18 Official Website of the Windsor Container: http://www.castleproject.org/container

19 Official Website of the StructuredMap: http://structuremap.sf.net

20 Official Website of the Mono.Addins: http://www.mono-project.com/Mono.Addins

21 Official Webste of Acropolis: http://www.windowsclient.com/acropolis