What is InfoTrail?
Trails End Systems’ product line, InfoTrail, is based on the concept of a software factory that creates software products and services from application modules that can be assembled, configured, and used for a variety of information technology solutions.
Let’s look at some major elements of a modern application development project (in no particular order):
- User Interfaces
- Menus & navigation
- Analysis (Business Intelligence)
- User experience
- Multiple targets (desktop, browser, desktop, phone, devices)
- Multiple screen sizes
- Graphic design
- Stored procedures
- Operational procedures
- Legacy data
- External data sources
- Extract, transform, load (legacy data and data warehousing)
- Services (Middle Tier)
- Data access
- Business rules
- Service bus
- Make vs. buy decisions
- Product evaluations
- Cost analysis
- Development tools
- Version control
- Development methodologies
- Programming languages
- Project management
- Help files
- Promotional materials
- Legal and regulatory requirements
- Target hardware infrastructure
… and these aren’t all of the things that require major decisions that impact the success or failure of a software project. Probably the most important is staffing, which isn’t on the list above. Finding the “best” approach is a daunting process. There are many products, services, and techniques available and they are continuing to emerge and evolve with time. Keeping up with all that is readily available is a daunting process too.
(I want to blog about this stuff while my company works through the process of developing InfoTrail modules.)
The software factory approach reduces the complexity and cycle time of software development by assembling applications by using standardization (patterns, models, templates, and frameworks) , modularization, and code generation. This is just using automation techniques applied to software development. It is similar to what has happened to the production of injection molds. The old process involved hand-making drawings of the part to be molded, then hand-making drawings of the mold, giving the drawings to a mold maker who made the parts of the mold with a milling machine. The more modern approach is to design the part with a computer-aided design program. Prototypes are then made with a 3-D printer. When the design is finalized, the part design file is then imported into a mold designing program. The mold design file is then loaded into a computer-controlled electrical discharge machining tool that makes the mold.
Software factories, like manufacturing facilities can be very specialized, or they can be general-purpose like a custom manufacturer to simply assemble pre-made components.
So what’s a module?
At the lowest level, a software module could be the software equivalent of a nut or bolt in manufacturing. This could be a single file (dll, text, .exe). But at the highest level it could be the software equivalent of an entire manufacturing facility with all the tools, people, machines. This could be a group of web sites, web services, applications, and systems. The key is that the modules must be designed to connect (communicate) with other modules so that they can become components of even bigger systems.
The purpose of the InfoTrail product line is to allow the assembly of personal or business information systems from modules that manage data associated with common entities. InfoTrail modules encapsulate a basic business or personal entity including user interfaces, middle tier services and components, and data storage. They are designed to be discoverable, configurable, extensible, and scalable. They also are intended to be self- documenting in a way that is discoverable, configurable, extensible, and scalable because of the software factory methods and components that are used to manufacture the code.
Here is a list of major entities that make up the foundation of InfoTrail (in alphabetical order):
- Account (Transactions)
- Calendar (Events)
- Navigation (Menus)
- Quote (Requests for Quote)
User interface shells provide a view into which the various user interface components can be placed. They are designed to be specific to the target device.