I am extremely concerned over the state of the computer software industry today. On one hand I love the incredible tools we have. I use a piece of software on my Blackberry that tracks every detail of my travel itinerary giving me updates on my flights including schedule changes or even gate changes. I am using Twitter, blogs, MySpace, YouTube, along with several Google applications daily. Many of these systems like the travel system are service based reaching out and accessing dozens if not hundreds of computers and consolidating data from presentation on my Blackberry.
I look at my clients and former customers as well as my previous employers and the huge inventory of legacy code that they developed in-house or purchased from various third party vendors, many of which are no longer in business or have been acquired by some holding company that is milking the annual support and subscription but no longer enhancing the products.
I look at the “new” software and architectures that are emerging from major software vendors including former leaders in the field like IBM Corporation, HP, Sun Microsystems, Oracle, etc. and am very dismayed at what I see.
Where companies like IBM once had System Engineers that had offices at their customers place of business and worked full time at the customer site for large customers or split their time between smaller customers spending one to two days at smaller customer sites and serving as an liaison between the customer and IBM often driving new business based requirements to the development labs. This all changed in IBM with Lou Gerstner in the early 1990’s!
IBM and many other companies like IBM were transformed from a customer centric sales and marketing company to a manufacturing company where engineers in the research labs would invent products that would be produced and attempted to be sold based on what these “brilliant computer scientists” thought the world needed.
Often companies like IBM, Oracle, Computer Associates, and many others are driven by their marketing executives who are looking at competitors and the open source community and see products emerging that they do not have or sell that seem to be impacting the market. The large companies respond by buying companies that have the technology their competitors are offering. Sadly, more software is purchased today than is built by most companies.
The fundamental driver is quarterly corporate results and the stock price. Today the CEO’s of the major hardware and software companies are driven by a need to sustain growth and increased profitability. Companies can no longer just “do the right thing” for their customers, they must increase revenue, market share, and that all important earnings per share.
What happened to Software Engineering?
During the 1980’s Clive Finklestein came out with papers on Information Engineering (IE). This was picked up and marketed by James Martin. In addition Dr. E.F. Codd had introduced his papers on relational data modeling which was core to Information Engineering and Bachman, Constantine, Gane, Sarson, Yourdon, and others all got on the bandwagon.
We saw the emergence of “C.A.S.E” (Computer Aided Systems Engineering) tools that would in theory allow you to model your business and ultimately generate program code based on rigorous analysis and modeling.
Today this is all gone. Today we have UML and its suite of diagramming tools, which IMHO are nothing but an integrated suite of drawing, tools for programmers. There have been books and attempts to claim that UML is a tool for architects to design systems, but if you look closely there is no discipline in the tooling to enforce any design integrity. A developer may draw anything and represent anything any way they choose. There is no tooling to determine the accuracy of the model that is being represented because what you are really diagramming is detailed program logic and not the business enterprise. Don’t get me wrong, the UML language is awesome with its ability to capture and represent both graphics as well as an immense amount of information about a system, but the diagrams and methodologies that implement UML like Ivor Jacobson’s USELESS case models are just well, useless. The USE CASE diagram is nothing more than a graphical version of a program specification. It does not help a company arrive at or analyze requirements, it just communicates requirements to a programmer.
Today we have what were are calling “architects” who are in reality some bright computer science guys who don’t want to be called programmers and prefer to draw UML models than write code. These folks are technical and focus on the technical design of your computer systems. It is rare that they understand the business and the requirements of the business.
Where we spent two decades trying to define relational database architecture and design’s that represented your enterprise, the modern computer scientists ignore data and have taken databases back to being treated like file systems with CRUD (create, read, update delete) which was proven to be a horrible construct in the 1980’s but is something a programmer can deal with while knowing absolutely nothing about the application they are building.
The GEEKS are driving the boat
There is an iceberg ahead!
There is an iceberg ahead!
Yep, the GEEKS see the iceberg but they are analyzing what to do about it. They are measuring it, calculating how long before we hit it, and doing all sorts of theoretical analysis.
What should be happening and can it happen?
My vision of the future is a world where companies can build, buy, and integrate software from many sources into a custom system that fits their needs. There should no longer be a build versus buy decision required. You buy if you find something that works for you and performs a specific task.
I think we must break our dependency on third party ERP systems that filled a gap in systems development expertise in the 1980’s and 1990’s but are now selling old proprietary systems that lock their customers in to the “system” and limit the customers flexibility and growth.
I think that business users and not IT people should be driving systems development. I think that IT should be a service organization that provides services on competitive basis to the business units.
I see a world where a department manager can look at a real time diagram of the workflows in his or her department with analysis of bottlenecks and flow of work through the department and can make real time changes to the workflow or the programs used by people at various positions within the workflow.
I see metrics on human productivity being made available to the manager with comparisons to mathematically computed standards workers that identify problems with people and problems with the system or the need for additional or yes a reduction in resources.
I see a new breed of software vendor emerge that takes us back to the early days of computer software where an individual with a great idea and a computer programmer can create a product and sell it to customers who need it.
We need to change the industry to make this happen.
The open source model is a good one for technology today. It has not been good for business systems. To understand Open Source you must look at its membership and management of the “not for profit” organizations that manage an open source initiative.
If you look at the membership of Eclipse.org, the Apache Foundation, the W3C, OMG, and many others, you will find people working for the major hardware and software giants of the industry. You will find that these corporations provide funding via a membership fee paid to the organization that enables the organization to hire a small management team. More importantly, these companies provide people whose entire job function is to work on Open Source projects, standards, and specifications.
In many cases the objective of the member is to slow or stop development that seems to be going in a direction that is counter to their best financial interests. In many of these organizations their dialog and arguments for a new project are public in forums where you can see what people are saying and doing.
From its inception with Apache.org took over the maintenance of the NCSA HTTP server when funding for the project was dropped. It was a technology initiative and the Apache foundations subsequent work has been technical. So has the work of many others.
We need new business oriented foundations!
The key to the plug and play type system that is controlled by its business users is a framework that can represent the “infrastructure” of a modern business enterprise. My research clearly indicates that there are distinct commonalities between all enterprises (BTW, I include governmental organizations in the term enterprise).
Figure 1: Enterprise Framework
Figure 1 illustrates a small example of what enterprise architecture might look like. It is the normalization of core components of an enterprise to handle the structure of an organization and the flow of work through its processes. The framework is dynamic and allows users to define their organization to it.
I can and probably will write a book on the subtleties of this framework but its fundamental purpose is to represent your enterprise in a stable manner that can be easily changed to reflect your organization as it grows and adapts to its environment. The framework can easily handle mergers and acquisitions as well as new ventures or divestment of legacy operations.
You will notice that the diagram does not have traditional business objects like orders, inventory, insurance applications, policies, claims, etc. represented. Our goal for this frame work is use an object oriented approach to implementing business objects and route documents and objects through processes and workflows that transform them to accomplish work.
Not only can the framework manage the flow of work and documents through your enterprise and all of the transformations required to process orders, produce products, deliver them and collect money for the products but it simplifies application development and can provide the basis for independent vendors to write program code that will plug in to your systems and be immediately usable.
The framework does exist as a relational database and must have programs to manage the infrastructure itself, but it is not technology or hardware dependent and can run anywhere and should be implemented in such a fashion as to be distributed across multiple machines and environments.
The framework provides security. There are many levels of security and responsibility built into the framework that separate the definition of jobs and what a job can do, the assignment of people to jobs and the set up of people within the system to different organizations. There is a provision for extensive audit trails and tracking of historical data.
The framework can handle complex matrix management structures where people have many organizations in which they participate. IBM gave customers a free directory tool to its WebSphere customers that emulated its internal “Blue Pages” directory system. This system provided a search facility to locate people in the organization and could draw an organization chart showing who that person reported to and that persons boss all the way to the president of the company. While this seemed like a great idea, its designers locked the organization chart into the legal structure of the company so a worker in Germany reported up to the president of IBM Germany through a German chain of command. It did not reflect that German employee was in reality part of an international organization and his real manager was in Raleigh, North Carolina and not in Germany.
The framework I am talking about must be flexible and handle the many permanent and temporary organizations that exist in an enterprise.
The framework must be easy to maintain with the ability to make what would in many existing systems be catastrophic changes like inserting or removing levels of organizational units.
If we have a framework to facilitate development of modular business system components, the next step would be to form software publishing companies to handle the packaging, marketing, and sale of the work of small entrepreneurial developers that might be found in numerous colleges, universities, or businesses today.
The key to this framework is the idea that an enterprise can implement it and define itself to the framework and then drop in components written to use the components of the framework that define workflow and the organization itself to facilitate reporting, accounting, audit trails, and analysis.
The framework may easily be extended to specific industries with template components to handle the core business objects implemented within a bank, insurance company, manufacturing company, retailer, etc. This further simplifies the work to be done by third party developers who may focus on specific areas of expertise.
How can this work?
The framework must be built by a coalition of companies like yours! That mirrors the work done by the computer software vendors to day in the open source community.
The framework would be available to its members and any other company at no charge. There would be limitations on non-member participation and most likely only members would participate on the design committees and review boards.
The bottom line is it is time to take back computing from the geeks and put the business back into business systems.
I will be describing the Enterprise Framework more in comping posts. Stay tuned.
Bob Cancilla, Principal
RJ Cancilla & Associates
RJ Cancilla & Associates