Development, in Bloor's context, is the development of business automation, at scale, with good governance. Traditionally, it includes development technology and processes, which grew up to cope with discrete, monolithic in-house systems, built on client/server architectures, doing one thing in a linear fashion, and expecting people to adapt to the needs of technology rather than the other way round. Old technology is frequently still powering important businesses but development in the enterprise is now increasingly moving towards Agile; coping with business users who want to use their own smartphone or tablet as an interface to corporate business systems and meeting the needs of customers and business partners who want to interact with the corporation over the Web. Enterprise legacy modernisation is therefore often as important as new development in practice.
Increasingly, development is becoming the implementation of new technologies and practices: cloud-based services; agile continuous build and deployment; people-centric automation; systems of systems in the Internet of connected things; massively parallel processing; HTML5; and so on.
Development ranges from maintenance and modernisation/extension of traditional client/server applications with dedicated communication to company servers (frequently running mainframe applications that have been in use for years) to development of new web applications for the global enterprise.
The characteristics of enterprise development differ from development for games and consumer apps, although there is a continuum and all forms of development are converging. Serious development has the following characteristics:
- The applications are business critical;
- Business continuity, application availability (often without planned downtime), reliability, resilience, integrity and security (including audit trails and access controls) are non-negotiable;
- Applications are expected to scale smoothly to very high data, transaction and user volumes as the business grows and, increasingly, to respond agilely to business changes;
- Performance must be predictable and adequate for the business needs, no matter where the application runs or how the workload changes;
- Enterprise applications are usually expected to have a long lifespan, so lifetime cost of ownership and low maintenance costs are as important as, or more important than, acquisition and development cost;
- Applications are expected to run across a global enterprise, so ease of localisation is an issue;
- Compliance with global regulations is non-negotiable;
- Applications are expected to provide data for performance analysis, billing etc.
Obviously, the preceding points sometimes reflect goals rather than what is achieved in practice; but they reflect a development culture that often differs from that of, say, small apps developers and those producing departmental applications for comparatively small groups of fairly tightly-defined users. Nevertheless, this large enterprise development culture has to accept innovation these days, if it is to match the increasing needs of increasingly agile business processes; although, conversely, app developers in the enterprise also have to recognise the importance of, say, business continuity, lifetime cost of ownership and regulatory compliance.
For example, you may have a web application in which data must flow bi-directionally between server and browser, for a large number of concurrent users, and you want to extend SOA with this application over the web and into the cloud. You can do this today using HTTP, which is essentially a client-instigated communications protocol, using 2 connections (one for each direction of data flow), in which one connection polls the server regularly in order to simulate server-initiated pushed data. This works but it is clumsy and has high overheads (2 connections instead of 1, continual polling, HTTP header overheads for small amounts of data, etc.); and it scales increasingly badly as the number of concurrent users increases. Nevertheless, there are accepted ways of achieving this using old technology collectively known as Comet (or AJAX Push, HTTP Streaming etc.), in which a persistent HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. However, Comet conflicts with the HTTP 1.1 specification (which states that a browser should not have more than two simultaneous connections with a web server) and breaks the original web model.
The innovative approach to this particular problem is HTML5 Web Sockets, which is full duplex, low latency and has far fewer overheads. It is designed from the ground up to address the requirement for efficient server-initiated data flows as well as browser-initiated flows and is standardised by the W3C and IETF standards organisations. As is typical, the benefits of well-chosen innovative approaches will increase with time, complexity and scale and give its users an increasing margin over those trying to bend old technologies to fit. The benefits of 'doing it right' become more apparent over time.
The key development value proposition is support for good governance and efficiency of business-critical automation at scale. It is of interest to:
- Large enterprises and, in particular, multinational corporations, with a large investment in existing business automation that has to be maintained and extended, eg:
- Any organisation in a regulated industry such as pharmaceuticals.
- Start-ups that intend to become large quickly, especially in emerging markets.
- Government organisations.
- Organisations of all sizes extending agile service oriented architectures (SOA) to the browser with agile people-centric mobile apps and HTML5.
- Any organisations implementing agile cloud solutions.
- Organisations building Collaboration networks.
- Any organisations building Apps for interfacing mobile devices to business systems.
- Any organisations supporting bring your own device (BYOD) at the user interface to business systems.
Emerging development trends affecting large enterprises particularly include:
- Agile at scale; this is the addition of 'just enough' governance and process to Agile to ensure that business changes can be addressed as they happen; while the risks involved with agile development for a larger user community (than can be co-located with the developers) are adequately controlled. See here.
- The move from batch processing to 'near real time' processing and event-driven processing;
- Legacy application modernisation; this is the reuse of as much legacy technology as possibly and/or the harvesting of business requirements from legacy applications so they can be deployed on, or rebuilt for, modern environments without users being aware of their legacy origins.
- BYOD (Bring Your Own Device). This is the trend for business users to expect to connect to and use business systems from their own smartphone, tablet or laptop, rather than them having to use whatever their enterprise employer supplies - see here.
- DevOps. This is the extension of Agile techniques for software development to build and operational deployment at scale - see here.
- Big Data; the desire of an Enterprise to use all the data available to it (not just the data in its relational database management systems) to drive analytics and decision support (this may drive the adoption of Systems Engineering in the Enterprise).
- Model-driven development, starting from business models and either executing standard BPMN business process models or transforming them into specifications for application code - see, for example, here; this may be a step into Systems Engineering approaches.
- HTML5 for building the web user interface and presentation layer - see here. HTML5 is a co-operation between the World Wide Web Consortium (W3C) and the Web Hypertext Application Technology Working Group (WHATWG). In 2006, they decided to cooperate and create a new version of HTML, using the following rules:
- The need for external plugins (like Flash) should be reduced;
- Better error handling should be provided;
- More markup should replace scripting;
- HTML5 should be device independent;
- The development process should be visible to the public.
- Multicore and parallel computing; new technologies are arriving that are better suited to parallel computing (e.g. Scala, Datarush).
- Business rules development; business rules define and control the structure, operation, and strategy of an organisation and are dynamic - they change as the business changes. Business processes can be defined (and even executed) as orchestrations of business rules - and rule-based automation can be managed and maintained using a rules engine without conventional procedural or object-oriented programming languages, such as C, C++ and Java, and without programmers.
- Development for enterprise-quality service-oriented cloud platforms (e.g. PaaS, SaaS, IaaS, Enterprise Server 3.0).
- Green computing; the cost and even the availability of electrical power is becoming a limiting issue for the largest organisations;
- Structured testing is vital to enterprise development; test data management and service virtualisation (so you can test the integration with external services before you go live) are both vital.
Systems Engineering development (strongest in the embedded systems arena where software and electronics must interoperate) will become more important generally, as Development has to cope with more complexity and larger amounts of data:
- Systems engineering will move outside of its aerospace and safety critical systems comfort zone - development of systems of systems using rigorous engineering principles and, for example UML 2 and SYSML models, makes economic sense for critical business systems or subsystems with a long expected lifespan.
- Data-centric networking addresses the emerging Internet of Things facing the next-generation enterprise. In a data-centric world, people publish information in compliance with data-dictionaries that include the metadata (data semantics, QoS targets etc.) needed to use it effectively. They subscribe to the information resources they need, with an appropriate QoS. Information about the 'state' of things in the system (which is represented by state data) is published and subscribed to by other things in the system. In other words, the state of any one sub-system is published onto the data bus at all times by modifying the value of a data attribute of that subsystem and, as this data is changing on the fly, you need a QoS contract between the publisher and subscriber to ensure that the state information subscribed to is appropriately timely. There is an open standard to base this on - OMG (Object Management Group) DDS (Data Distribution Service) - see here.
Open source tools have a stronger place in development, even for large and traditional organisations, than many people expect, and are driving innovation. Other emerging trends driving innovation in development include:
- App development and management. This is development of lightweight specialised apps for smartphone and tablet environments, sold through a self-service appstore, instead of building conventional applications, sold by a sales and marketing team.
- Mobile, location-sensitive app development.
- Development for service-oriented cloud platforms.
The vendor landscape is dominated by consolidation and acquisition as general-purpose development tools increasingly become commoditised, usually as Open Source Software on Eclipse, while large vendors strive to own platforms such as IBM Jazz; and development by orchestration of cloud services appears on the horizon.
Old technology is frequently still powering important businesses (so 'enterprise server 3.0' (mainframe) development still matters and vendors such as IBM and CA Technologies are important here); but enterprise development is now increasingly moving towards Agile, and legacy modernisation is an important interest for many enterprises; so both are being supported by the major enterprise vendors, largely by acquisition.
There is an increasing focus on mobile application capabilities for vendors that traditionally delivered desktop solutions - so, for example, SAP/Sybase, which had plenty of tools for conventional database-driven financial systems application development, partnered with Verizon at the end of 2010 to deliver a Mobile Services Enablement Platform. This aims to reduce the complexity associated with developing and deploying mobile apps in the enterprise on a heterogeneous mix of platforms and devices.
Many of the new development technologies were developed by small innovative start-ups but as they mature they are being acquired by the big players and incorporated into their conventional technology offerings. Prospective purchasers of such acquired products will need to assess whether their essential innovation and agility has survived acquisition.