Anatomy of Software Frameworks

Registration is free. Login or register to view/download this content.

Author(s)

Enterprise Architect, AtoS
Sameer S. Paradkar is an enterprise architect with more than 20 years of extensive experience which spans across System Integration, Product Development, and Advisory Organizations. Sameer works as an SME on architecture modernization and transformation initiatives. He has worked on multiple digital transformations engagement and large complex deals in North America, Europe, Middle East, and ANZ regions that presented a phased roadmap to the transformation maximizing the business value while minimizing costs and risks. Sameer is certified and competent in different methodologies and frameworks including: TOGAF, NGOSS (e-TOM & SID), ITIL, COBIT, Agile, Scrum, DevOps, Scaled Agile Framework – SAFe and Business Capability Modeling. Sameer is part of the Architecture Group in AtoS. Prior to AtoS, he has worked in top tier SI and Consulting organizations.

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

Similar Resources

Featured Certificate: BPM Specialist

Everyone starts here.

You're looking for a way to improve your process improvement skills, but you're not sure where to start.

Earning your Business Process Management Specialist (BPMS) Certificate will give you the competitive advantage you need in today's world. Our courses help you deliver faster and makes projects easier.

Your skills will include building hierarchical process models, using tools to analyze and assess process performance, defining critical process metrics, using best practice principles to redesign processes, developing process improvement project plans, building a center of excellence, and establishing process governance.

The BPMS Certificate is the perfect way to show employers that you are serious about business process management. With in-depth knowledge of process improvement and management, you'll be able to take your business career to the next level.

Learn more about the BPM Specialist Certificate

Courses

  •  

 

Certificates

  • Business Process Management Specialist
  • Earning your Business Process Management Specialist (BPMS) Certificate will provide you with a distinct competitive advantage in today’s rapidly evolving business landscape. With in-depth knowledge of process improvement and management, you’ll be able to take your business career to the next level.
  • BPM Professional Certificate
    Business Process Management Professional
  • Earning your Business Process Management Professional (BPMP) Certificate will elevate your expertise and professional standing in the field of business process management. Our BPMP Certificate is a tangible symbol of your achievement, demonstrating your in-depth knowledge of process improvement and management.

Certification

BPM Certification

  • Make the most of your hard-earned skills. Earn the respect of your peers and superiors with Business Process Management Certification from the industry's top BPM educational organization.

Courses

 

Certificates

  • Operational Excellence Specialist
  • Earning your Operational Excellence Specialist Certificate will provide you with a distinct advantage in driving organizational excellence and achieving sustainable improvements in performance.
 

 

OpEx Professional Certificate

  • Operational Excellence Professional
  • Earn your Operational Excellence Professional Certificate and gain a competitive edge in driving organizational excellence and achieving sustainable improvements in performance.

Courses

Certificate
  •  

  • Agile BPM Specialist
  • Earn your Agile BPM Specialist Certificate and gain a competitive edge in driving business process management (BPM) with agile methodologies. You’ll gain a strong understanding of how to apply agile principles and concepts to business process management initiatives.  
 

Business Architecture

 

Certificates

  • Business Architecture Specialist
  • The Business Architecture Specialist (BAIS) Certificate is proof that you’ve begun your business architecture journey by committing to the industry’s most meaningful and credible business architecture training program.

  • Business Architecture Professional
  • When you earn your Business Architecture Professional (BAIP) Certificate, you will be able to design and implement a governance structure for your organization, develop and optimize business processes, and manage business information effectively.

BA CertificationCertification

  • Make the most of your hard-earned skills. Earn the respect of your peers and superiors with Business Architecture Certification from the industry's top BPM educational organization.

Courses

 

Certificates

  • Digital Transformation Specialist
  • Earning your Digital Transformation Specialist Certificate will provide you with a distinct advantage in today’s rapidly evolving business landscape. 
 

 

  • Digital Transformation Professional
  • The Digital Transformation Professional Certificate is the first program in the industry to cover all the key pillars of Digital Transformation holistically with practical recommendations and exercises.

Courses

Certificate

  • Agile Business Analysis Specialist
  • Earning your Agile Business Analysis Specialist Certificate will provide you with a distinct advantage in the world of agile software development.

Courses

Certificate
  • DAS Certificate
  • Decision Automation Specialist
  • Earning your Decision Automation Certificate will empower you to excel in the dynamic field of automated decision-making, where data-driven insights are pivotal to driving business innovation and efficiency.