This chapter covers the following topics:
As the capabilities of computer-based software applications have evolved over the last few decades, so have the complexities of the software and its environment. Whereas it was once possible to develop a whole application using a pen-and-paper design, coded and built using a text editor and a command line compiler, it is difficult to imagine doing so now for even the simplest application.
During unit design, the code and build activities for the different run-time environments (including operating systems, application servers and client-side web-browsers) require specific combinations of static and dynamically-linked libraries of components and objects to be incorporated into the application specific source code. The interdependencies between all these elements are so complex that they are almost impossible to manage without the aid of tools.
This Introduction has so far focused on how development tools are essential at the point of coding software, but their use extends well before that into the realms of business analysis and requirements and beyond into testing, release management and even supporting and monitoring the software in operations.
The benefits of using computer-aided tools over more primitive approaches such as pen and paper or whiteboard is not due to simplicity, cost or general availability. So what can computer-aided tools provide that, if using primitive tools, can be done manually, but not as efficiently?
The use of templates and specific notation and syntax is a critical element of any team-based activity such as developing and managing IT systems. This includes the use of forms for written documents and specific visual syntax for diagram notation.
Creating computer-based files rather than paper documents means that they can be stored and backed up electronically – either as electronic equivalents of paper documents or as elements within a tool’s repository. That repository could be as simple as a folder on a disk drive or a complex meta-model defining a tool-specific repository of element data.
Depending on the nature of the technologies involved, electronic documents and repositories can be accessed and the information distributed to appropriate stakeholders inside and outside the team electronically, even across the world.
Opening up availability may lead to the need to control who can access these elements, and to specify those who can create and edit items, as opposed to who can have read-only access.
Many elements need to evolve over time, so the ability to maintain multiple versions (allowing roll-backs to undo changes) while recording who made changes and when is a valuable function of any such tool.
This includes light-touch change control that allows elements to be ‘checked-out’ while they are worked on as well as a formal level as part of change management, where elements can be baselined and locked unless the change is approved.
Most of the functions listed thus far can all reasonably be performed manually (even if not conveniently). The following functions show how specific tools begin to justify the investment in order to handle the complexities.
Any repository of elements of different types for different purposes is given greater value when those elements are linked in a meaningful way. These links can have various meanings within and between groups of related elements:
Depending on the toolset employed, it is even possible for links to be established and maintained between distinct tools and their repositories, for example between a system modelling tool and a testing tool.
There is a level of visual diagramming using software that is not very different from using pen and paper, in other words using a tool that either simply draws the shapes or provides some basic syntax support.
A visual modelling tool is one that considers diagrams and other visual representations to be views on an underlying model or repository. As a visual element is added to a diagram, a corresponding element is either added to the underlying model or an existing element in the model is reused. These elements include the nodes (shapes) and the visual links themselves. UML and BPMN 2.0 are two standard modelling languages for which a range of tools, from diagramming to full modelling, are available from a range of tool providers.
These links and cross-references provide the ability for the tool to produce useful views and reports of the elements such as matrices and traceability reports. This is particularly helpful during change control to support impact analysis. If a change is requested or required on any particular element, tools are able to quickly identify other elements that may also need to change.
A configuration is a set of related configurable items, each of which has specific values or settings which need to work in specific combinations; a configurable item could be any of the elements being managed by the tools.
Identifying these configurations, and being able to apply version and change control practices to each of them, allows more effective management of larger complex systems.
The final feature possessed by some tools is the ability to generate meaningful documentation, accessible to a range of stakeholders, from the elemental data they contain. In this way, documentation becomes more of a valuable by-product of the main activities the tools are used for rather than being an activity in itself that is often perceived as an overhead.
Some tools specialise in specific aspects or phases of a solution’s lifecycle, from business modelling tools through computer-aided software engineering, (CASE) tools linking through to IT service and support management (ITSSM) tools. Figure 14.1 shows the areas covered by tools.
Tools that support this area allow the business to develop, implement and maintain business models and architectures of an organisation’s:
In this context, the IS/IT are simply components that provide services to the business and perhaps direct to customers. As the organisation seeks to change its model in any respect, then that often requires a change in the IS/IT and the drivers for such a change are apparent as are the dependencies across the business architecture that need to be handled.
Often, business changes – especially significant changes to the IS/IT – require formal project management. Although many project management tools tend to focus on planning, resource management and progress reporting, at the heart of any project is a definition of what that project is delivering as outputs and the benefits expected by the business as eventual outcomes. These are often encapsulated in the business case and/or project initiation document as the high-level project and business objectives. These may be derived from the business modelling described above and form the basis for further requirements engineering.
Computer-aided requirements engineering (CARE) tools are specialised tools; they sometimes operate as a stand-alone tool or as a function of a broader business modelling or CASE tool.
Requirements may be documented using pen and paper or by using generic word-processing and spreadsheet tools. There are, however, aspects of requirements engineering which specialised tools can make a lot easier, including:
A fundamental element of many CASE tools is the ability to support model-driven engineering. That is, to move from abstract models of a system through to an implemented version of that model and vice versa. In Chapter 7 (‘Systems modelling techniques’), the U-curve describes how:
Chapter 7 also discusses how several different views (for example functional, data and event) can be used in combination to provide a more complete understanding of the system.
System modelling tools can often be used by a number of roles, from business analysts through system analysts and designers to developers, each evolving the models towards the solution. Testers can also take these models as a basis to analyse and design the testing; or in some cases, these tools integrate with the testing tools they employ.
Fundamentally, development tools provide the ability for developers to take a design, and either write source code or use a visual notation that links components into an assembly for which source code is automatically generated.
Source code then needs to be able to be executed by the computer. There are various forms for this:
Modern development tools typically allow the developer to create and run these in real time, enabling a very incremental means of developing software, while performing some run-time tests.
Various features expected of development tools include:
In many cases, the code development and system modelling functions are incorporated into a single tool.
Whereas some unit testing features are often incorporated into development tools, the testing discipline typically employs specialist tools, often referred to as computer-aided software testing (CAST) tools. These do more than simply run automated tests on the software, and other features include:
Elements of testing, such as evidence of testing, may be linked to earlier elements including traces back to the requirements that have been delivered.
Release management occurs at the handover from development to operations. Many modern enterprise IS/IT solutions have a number of significant issues to manage at release, including the dependencies between different hardware and software components in a distributed architecture, the release and configuration of which has to be coordinated in order to avoid disruption to day-to-day business activities. These include:
Through design, development and testing activities, specific combinations of configurations should have been planned and tested for release. This release could be through pilots, an incremental release or a ‘big-bang’ delivery. These tools may deploy updates out to clients either as a pull (clients specifically requesting updates) or push (updates deployed remotely) to a plan.
Commonly referred to as IT Service and Support Management (ITSSM) tools. Once released, the solutions still require:
Configuration management is a major contributor of effective service management. The configuration management database (CMDB) is a key feature of any ITSSM tool.
One of the outputs from service management may be a set of change requests and other pressures for change that initiate a new solution development cycle.
What’s in a name?
Throughout this chapter, there has been reference to a range of disciplines, activities and abbreviations.
For solution development tool support, the broadest term is CASE (computer-aided software engineering), which typically covers requirements through to testing. Within that space, we find specialist tools such as CARE (computer-aided requirements engineering) and CAST (computer-aided software testing) as well as the core software development tools that manage code and produce deliverable software components.
At either ‘end’ of this continuum, we have business tools and service management tools that are primarily focused on the business operating model; modelling, monitoring and looking for issues that drive change for business improvement.
Precisely where one definition ends and another begins is often down to the tool supplier, who will often adopt a broad term for marketing reasons. Organisations or individuals need to assess and give careful consideration as to which tools are adopted, taking into consideration a number of factors:
Ultimately, the choice should be determined through a business case as selecting and implementing the wrong tool can seriously damage an organisation’s capability to develop solutions.
The development and operation of solutions that incorporate IS/IT elements are logically possible without the support of automated tools. However, the complexity and scale of such solutions often makes this unfeasible.
There is a massive marketplace where tools of all types, shapes and sizes are available. Different disciplines may choose their own tools, but even more benefit can be achieved where these tools integrate or share in order to provide a better quality of support.
The tools themselves are, however, only as useful as those who use them; users need to have the necessary skills and knowledge. If, for example, a systems analyst doesn’t understand the syntax and appropriate use of a particular modelling language such as UML, then giving them a tool based on that language will not help. Indeed it risks the opposite.
There is also the danger of a misplaced perception and confidence that anything output by a tool must be ‘OK’ or correct. There’s an abbreviation, GIGO, from the early days of computing, that rings true even more today with the widespread use of tools: Garbage In = Garbage Out!
Avison, D. and Fitzgerald, G. (2002) Information systems development: methodologies, techniques and tools. McGraw Hill, Maidenhead.
Black, R. (2009) Managing the testing process: practical tools and techniques for managing hardware and software testing (3rd edition). John Wiley and Sons, Indianapolis, IN.
Reifer, D. J. (2012) Software change management: case studies and practical advice. Microsoft Press, Washington, DC.