Frameworks are an essential part of a software developer’s arsenal, allowing them to focus on what is unique about a project or need rather than spending time reinventing the wheel on routine components.
Call it efficiency, laziness, or human nature, most people don’t like doing the same mundane task over and over again with no better result. Without a framework, many software developers find themselves struggling in the weeds of either the heavy lifting of complex coding, or recreating simple code blocks that are essential to their project outcome. Frameworks are commonly used in the software world to provide developers the opportunity to build programs for specific platforms like Windows, Mac, Android, and iOS by leveraging libraries created to address common functions or often-used operations, leading to ease of development and increased efficiency. Rather than developing all aspects of software from scratch for each project, building blocks and utilities are pre-developed and stored for reuse, supporting ease of project development.
Developing a framework should not be confused with using a template. A template is typically derived from a solution built for a particular need or application that is used as a basis for future projects. Templates are often inefficient as they are not built for scalability or modification and require brute force methods to make them work for different needs. While frameworks may involve a degree of compromise at times, implementing templates when systems are not almost identical involves concession. When a template doesn’t fit a need, it either has to be radically changed or the solution has to be adjusted to fit the requirements of the template, yielding a less than desirable outcome.
A purpose-built framework can virtually eliminate all of the typical challenges of one-off systems—solving many of the common challenges facing technology managers and end-user clients in today’s world of AV. An effective framework does not come without an investment of time, money, research, and vision as to what is needed now and what will be needed in the future from the perspective of user needs, technology trends, design requirements, and business goals. Most of all, a framework requires a commitment to investing in and preserving a structure that will define how systems are designed, developed, tested, deployed, and maintained. Like with templates, temptations will always be present that will challenge the integrity of a framework. As a result, it is critical to maintain discipline and focus to get the most out of a framework for AV solutions and ensure that it satisfies all the needs and goals for which it was intended.
Here are some guidelines for defining an effective framework for AV systems. Start by clearly identifying the functional needs for typical systems that compromise 80 percent of the solutions that are being implemented. Based on specific needs, develop a standard system design that encompasses all of the aggregate components that are in each of the systems. The result will be a master system from which all other typical systems are a subset. This master system may never be deployed as designed, but each variation of all the typical systems will be created from it.
The master system will be the blueprint from architecting the operation of the system as well as the control system program. After thoroughly defining the requirements of the user experience, begin to define the sub-systems, devices, and customized components that will vary from system to system. This may be the number of displays, the quantity of sources, the inclusion of video and audio conferencing, support for various environmental controls, and the ability to change room names, preset names, automation requirements, etc. As all of the specifics are spelled out, the control requirements will be defined and the software architecture can be created, ensuring that the items which will vary from system to system will be handled accordingly—making for ease of adjustment. Lastly, the user interface and business logic that defines the user experience and system operation will be carefully built to support specific needs, provide for a comprehensive solution, and endorse customization.
When developing a system framework, it’s important to include select a robust, modern programming language that can fully support the power of a framework. It is important that AV devices have modules/drivers that are pre-developed and vetted, so that they can be plugged into the control software with little effort and devices can be easily swapped out as needed.
- Utilize a testing lab to simulate as many system types and variations as possible through the development and maintenance period.
- Thoroughly test all variations and functionality with each deployment.
- Maintain thorough and accurate revision history and record keeping to ensure that updates are fully documented and deployed upon release.
- Maintain discipline to ensure that system requirements, modifications, or upgrades do not jeopardize the integrity of the framework.
- Maintain backward compatibility, so that software updates can be applied to all pre-existing systems that have been built on the framework.
Today’s business requirements call for modern solutions that are not only operational and meet users’ needs, but are creative in the way they leverage the constraints of time, money, personnel, and long-term maintenance and upkeep. Having a purpose-built framework to satisfy typical systems that make up at least 80 percent overall needs will go a long way toward modernizing an organization's approach to AV systems. It is by no accident that software developers turn to frameworks to save time, create efficiency, and eliminate the need to reinvent the wheel. Why shouldn’t technology managers, end user organizations, and AV solutions providers do the same?
Steve Greenblatt, CTS, is president and founder of Control Concepts, a provider of specialized software and services for the audiovisual industry.