The modular software development has become a strong trend on Microsoft’s .NET platform in the last couple of years. The monolithic methodology that was popularly used earlier, now cannot hold its position against the general business requirements any more. There is an uprising need for partitioning applications into smaller components per data sources or main functions/roles. Hereby, the application can handle flexibly the often-changing circumstances and those customers who come up with completely new feature requests. Applications built according this strategy are called composite applications, in which phrase “composite” means the integration of independent components.
In the dissertation I traverse this topic through the development of a line-of-business, n-tier, composite application-system. The system manages railway information. It is targeted for support of Information Desks of railway companies. The system is composed of three elements. These are a client with GUI, a server and a little helper application. Clients put requests on the server and it serves them from a database. The helper application enables sending real-time railway information to the server.
In the first section of my work I explore several design patterns, principles that serve the basis for the development task. I introduce the common features, general architecture of n-tier applications. Discussing the dependency injection I present the way that let us instantiate complex class hierarchies efficiently and conveniently. Graphical applications are parts of the system as well therefore I got to know the separated presentation pattern that clearly separates the presentation and the business logic. Since the system acquires part of its data from a Microsoft SQL Server 2008 R2 database, I have done some research on object-relational mapping and the repository pattern.
I have designed and implemented my application-system in C# language with four main technologies. The presentation of the informational client and the helper application are based on WPF and use the MVVM (Model-View-ViewModel) pattern. In relation to modularity I have compared MEF, MAF and Prism, the three .NET-related modularity framework and ultimately chosen Prism to use. I established the communication between the system components via WCF. By using the Entity Framework, I have created the data model and the data access layer of the server application.
I have documented the design and the main parts of the implementation and demonstrated them with UML diagrams.
At the end of my thesis I have made recommendations for further development.