This document emphasis on the variety of frameworks development approaches and their categorization and then walks thro’ the Visual Studio framework creating process. At the end it contains a case study of framework targeted for a telecommunication companies.
What are Frameworks? Frameworks are not a new kid on the block and tons of POC/White Papers have been written and public on the public domain. This document outlines historical data around frameworks and contains a real work VISUAL STUDIO feature to design application frameworks. So what is it about frameworks that’s makes them frameworks. Frameworks are skeleton applications and drivers the work flow to a major extends in contrast to application libraries that are components which are passive in nature. On a give day you still have a choice to build or not to build your application with a certain library feature but with framework the go no go has been already been decided by the selection of application framework. Elaborate and specific business feature are then designed and build around this core framework. During the bygone days there use to be Code Generators like the CodeDom/CodeSmith and facilitated generation of factored code. A Framework is like a recurring pattern/s once you analyze and if there is an element of commonality existing in the software then things needs factored into a common software element that can be associated with the main framework skeleton by means of techniques that are explained later.
There are well known frameworks that exist and the ones that need a mention are MFC and Struts though from different worlds they are very popular for developing applications in their core areas. Frameworks increases application productivity by bundling the commonality together which then form the guideline for the team members. These words intellisense, code generation, aspect driven programming are synonymous and implies pretty must similar things in the framework development world. Frameworks speeds development improves the quality of applications and brings tremendous value to a business.
Frameworks Under the Hood: At times things look like an inter-galactic journey when I go thro’ these public domain artifacts on a certain topics of interest I believe this piece of document would try to keep things simple for you. All these names SDK, Guidance Toolkits, Toolkits cater to in someway or the other form of application Frameworks. The architects avoiding re-inventing the wheel by housing the commonality into the frameworks. There are several specializations of frameworks and its applicability depends on context in which it’s going to be run finally. The mechanism used to hook these pieces into the core skeleton can be one of these inheritance, composition, hook methods, reflections. Frameworks enforce that the designer have to do certain things in a certain way. A coupe of years ago when I was working with a team writing real time software for a medical product they had a kinda crude mechanism (compared with the current times mechanisms of reflections) devised using a service configuration file that would contains a listing of the extension components (DLLs) that would get plugged into the main application architecture at run time through the DLL entry point functions. These DLLs would typically be post processing application that would run algorithms on archived data and generate results. Apart from DLL entry point there used to be couple of more parameters that would get loaded into memory from the service configuration file like the functions pointers, event handles among others for asynchronous/synchronous communication with these applications. There would be surely better methods than the entry point hook method so the following paragraphs explains standard approaches to framework developments. An application based on framework may also contain design patterns and components along with the core framework skeleton. A Classic definition of frameworks reads as “Frameworks are not simply collections of classes. Rather, frameworks come with rich functionality and strong wired-in interconnections between object classes that provide an infrastructure for the developer” Frameworks are more than randomize bunch of components but like components one does not need to delve into framework internals. Design and Building a framework is like driving a swanky car like a Porshe or a Jaquar and at the end of the affairs it’s a great feeling to have associated with such challenging assignment.
Figure 1: Application Frameworks Dependencies
Real World Frameworks: One of the key question during a decision making stage is what’s the benefit by selecting a certain framework the answer is GUI frameworks don’t have business logic contrast to application frameworks which would contain more than 70% of core functionality as part of the framework. A past history states that patters could account to 36% of framework design. Lists of frameworks very popular in the software development world are as follows
- Microsoft Foundation Classes – MFC
- Java’s Abstract Window Tool-kit – AWT
- ACE an OO framework
- Reusable Objects (ORO) is an open-source framework
- Webridge Private Exchange is a horizontal framework designed for building B2B applications
- Medical Business Object framework is vertical framework designed for medical domain
Framework Classifications: Frameworks are composed of numerous reusable assets which include knowledge, design, captured requirements, software components. As a coherent collection of reusable assets, a framework can be an important investment for an organization. Based on the context of its usage the framework is classified into the following categories. The white-box category of frameworks are typically expanded by sub classing existing abstract classes where as the Black-box frameworks are more like components because they can be accessed only through their interfaces. The answer to the question how am I going to consume this to build my customized application will guide you with pointers about the classification of this framework.
- White Box Frameworks – Emphasis on Inheritance
- Black Box Frameworks – Emphasis on Composition
- Grey Box Frameworks – Framework is build using both the above approaches.
Framework Development Techniques: Few have been mentioned in this artifact earlier but the below is the complete listing of the standardize framework offering.
- Common Spots – Concrete Classes
- Hotspots – Place Holders or Abstractions
- Composition
- Inheritance Approaches
- Hook Methods
- Template Methods
Just a backgrounder these Hooks are different from those Hooks I mean one is a windows message hook and the other is Hook Methods. Hook functions are typically achieved thro’ virtualization. The Windows Hooks are message hooks that sneek peek into the windows message pumps for certain messages before the messages are consumed by the final destinations window. This is one of the advanced topics from the Win SDK.
One More Framework Classification: Based on how broader the Framework scope is we have another classification
- Application Frameworks – Are horizontal Frameworks applicability across domains
- Domain Frameworks – Are vertical Frameworks applicability specific to a particular domain
- Support Frameworks – Basic System level frameworks on which other frameworks or application would be build.
Framework Development Life Cycle: The framework life cycle goes thro’ the known life software life cycle methodology Analyze->Design->Built->Deploy. Building universally applicable frameworks would need applying refractoing to domain and or an existing set of application and is not going to be overnight process. The frameworks are not conventional software application as it needs designer expertise to leverage mileage out of application frameworks. Customers of the frameworks are AP -> Application Programmers. One has to write specialized application that would build functionality specific to the target domain to burn this so called application framework/s. This is a highly iterative process and only after several revisions would the final and stable product would be ready for deployment and distribution.
Figure 2: Application Frameworks Design and Build Process
Visual Studio Perspective: Enterprise Templates: There are several variations to this template guy using VISUAL STUDIO. The earlier visual studio nomenclature was VSTemplate and now it’s been renamed to Enterprise template. The variations being item and project templates. At the core of Enterprise templates is the VSTempate file that contains the listing of the entire file that are bundled with the template. This file is located inside a predefined folder for it to be made available for consumptions. This folder is located under “..my Home DirectoryVisual Studio 2XXXTemplatesProjectTemplates”. This would ensure that it appears under the New Project -> Visual C# -> My Templates for it to generate the framework skeleton into the new project workspace.
Well Enabled Services ToolKit – Framework: The following block diagram gives the context in with the Toolkit runs. It sits in between the IPTV and Connected Services Framework and is the mechanism to plug the VAS into the CSF. The WES framework provides partial implementation for provisioning, usage and health. The provisioning interfaces are used to set up the resource (VAS End) for consumption. The usage interfaces are used within CSF for tracking and metering of VAS Consumption. Health interface are provided for getting the health status of VAS.
Figure 3: Adapter Architecture in Real World
Mythology of WES Toolkit: The WES Tool kit based service run into a context that is a mediator between Value Added Services (LCS, IPTV, Microsoft Exchange and Custom Web Services) and Connected Service Framework. Connected services frameworks is a Microsoft Product to provision value added services on wireless and wireline telecommunication networks of service providers. It bundles the complexity of connecting with multiple systems within the telecom enterprise to a simplied and easy use of interfaces instead due to which providing value add services on to telecommunication lines is as simple as writing your specialized service and plugging it into CSF and you are all set, So what category of template is this WES Toolkit ? It falls into the GreyBox category partly inheritance partly composition 50-50 types. So when you plan to build a framework for your project the laundry list of things your deliverable would cater to includes reusability, simplicity, extensibility, flexibility, completeness and consistency.
References:
- Refactoring: Improving the Design of Existing Code, Martin Fowler, Addison-Wesley.
- Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helms, Johnson, Vlissides, Addison-Wesley.
- Connected Services Frameworks: http://www.microsoft.com/serviceproviders/solutions/connectedservicesframework.mspx
- Domain Specific Language Tools: http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx