Abstract
UML and UML-based development methods have become de facto standards in industry, and there are many claims for the positive effects of modelling object-oriented systems using methods based on UML. However, there is no reported empirical evaluation of UML-based development in large, industrial projects. This paper reports a case study in ABB, a global company with 120,000 employees, conducted to identify immediate benefits as well as difficulties and their causes when introducing UML-based development in large projects. ABB decided to use UML-based development in the company’s system development projects as part of an effort to enable certification according to the IEC 61508 safety standard. A UML-based development method was first applied in a large, international project with 230 system developers, testers and managers. The goal of the project was to build a new version of a safety-critical process control system. Most of the software was embedded. The project members were mostly newcomers to the use of UML. Interviews with 16 system developers and project managers at their sites in Sweden and Norway were conducted to identify the extent to which the introduction of UML-based development had improved their development process. The interviewees had experienced improvements with traceability from requirements to code, design of the code, and development of test cases as well as in communication and documentation. These results thus support claims in the literature regarding improvements that may be obtained through the use of UML. However, the results also show that the positive effects of UML-based development were reduced due to (1) legacy code that it was not feasible to reverse engineer into UML, (2) the distribution of requirements to development teams based on physical units and not on functionality, (3) training that was not particularly adapted to this project and considered too expensive to give to project members not directly involved in development with UML, and (4) a choice of modelling tools with functionality that was not in accordance with the needs of the project. The results from this study should be useful in enabling other UML adopters to have more realistic expectations and a better basis for making project management decisions.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Avoid common mistakes on your manuscript.
1 Introduction
Companies that adopt UML-based development aim to improve their development process and gain, for example, easier communication within the project, improved design of the code, and improved documentation and thus easier future maintenance. In general, there are high costs involved in introducing new software development methods and risks of failure if the method is not adapted. Therefore, there is a need for case studies to increase knowledge about consequences of project managerial decisions in the context of UML-based development, and about which improvements are realistic in different project contexts.
This paper reports a case study conducted on a large development project in the Swedish–Swiss global company ABB. The goal of the project was to create a new version of a safety-critical process control system based on several existing systems. The development took place at four sites in three countries; and 230 developers, testers and managers were involved, of whom approximately 100 used a UML-based development method themselves or read and applied UML documents. Most of them were newcomers to such development. Most of the software was embedded, while the rest was for the Windows platform. There were approximately 1,000 requirements for this system. The company decided to adopt UML-based development and a method was developed in-house to enable certification according to the IEC 61508 safety standard (IEC 1998). Previously, there had been no common methodology for the analysis and design of software in the company.
Despite the widespread adoption of UML, there are few reported empirical studies on the effects of UML-based development. A survey of 5,453 scientific articles published in 12 leading software engineering journals and conferences in the decade from 1993 to 2002, identified 113 controlled experiments in which individuals or teams performed one or more software engineering (Sjøberg et al. 2005). Four of the experiments investigated different aspects of the use of UML (Cox and Phalp 2000; Otero and Dolado 2002; Peleg and Dori 2000; Zendler et al. 2001). The first investigates the construction of use case models, the second and third investigate the comprehension of UML diagrams, while the fourth compares the concepts of UML with those of two other formalisms. In addition, the usability of UML-diagrams have been investigated in the context of a student project (Agarwal and Sinha 2003), and experiences of applying UML in the development of embedded systems have been reported in (Pettit 2004). To the authors’ knowledge this is the only empirical evaluation of UML adoption in a large-scale industrial project.
Interviews were conducted with 16 project managers and developers in the project, who represented different sites, different kinds of development and different roles in the project. The interviews were analyzed according to principles from grounded theory, (Strauss and Corbin 1998), to ensure that the interviewees’ opinions were conveyed systematically. The interviews showed that UML-based development improved traceability, communication, design, documentation and testing, but it was recognized in this project that the improvements were not as great as they could have been, due to difficulties with the use of UML, in particular regarding 1) choice of diagram to use in specific situations, 2) the interfaces between different models, and 3) the level of detail in the models. The results further showed that these difficulties were, at least partially, caused by project decisions with respect to the reverse engineering of legacy code, distribution of requirements to teams, training and mentoring, and choice of modelling tools.
Within ABB, the constraints of the safety standard meant that the teams had to apply the UML-based method rigorously and produce all the required models. Hence, this project represented a rare opportunity to investigate the effects of UML-based development. The main contribution of this paper is, therefore, that it describes improvements and challenges when adopting UML-based development in an industrial environment. Such information may be beneficial to other companies adopting UML.
The remainder of this paper is organized as follows. Section 2 describes the company, the project and the ABB UML method. Section 3 describes the research method. Section 4 describes the results with respect to improvements. Section 5 describes the results with respect to challenges in the project. Section 6 discusses the scope and validity of the results. Section 7 concludes and describes plans for future work.
2 UML-Based Development in the ABB Project
This section describes the company, the project and the UML-based development method that was applied in the project.
2.1 ABB
ABB is a global company that operates in around 100 countries and employs approximately 120,000 people. It is a leader in power and automation technologies, and develops software and hardware for these markets. The company has a large number of development projects, the majority of which require the development of embedded software (with special hardware included).
ABB’s safety products must be certified according to the international standard IEC 61508 in order to be used in plants or installations where the processes used can be dangerous to humans or damage the environment. This standard is becoming a requirement for the process industry and in discrete manufacturing. It is a life-cycle standard and includes requirements pertaining to the methodology of software development.
Before the start of the project reported in this paper there was little common streamlining of software development in the company; a large number of different methods, programming languages and software tools were used. ABB hoped that the introduction of UML-based development would lead to improvements in requirements handling and traceability, improved design of code, fewer defects in the product and reduced overall costs of development.
2.2 The Project
The goal of the project was to develop a new version of a safety-critical system based on several existing systems. The system was to be installed at several locations. Each installation would program its own logic on top of the system delivered by ABB, which is not modified at the installations.
The workforce comprised approximately 230 people located at four sites: two in Sweden, one in Norway and one in Germany. Approximately 100 people were involved in development with UML. The UML-based development method was used at the first three sites. Some of the developers and all the product managers were domain experts. ABB relies on having domain expertise in-house because they sell a complete product to its customers. Safety certifiers, UML experts, quality managers and peer developers (also with domain knowledge) reviewed the UML models at predefined gates in the development process. The development was organized in teams, while testing was mostly done by specialized testers. The team members were mostly newcomers to the use of UML, although some were experienced.
This software project is ABB’s most ambitious project regarding quality assurance in that it followed the requirements of IEC 61508. To ensure that the software operates at a certain minimum safety integration level (SIL level), this standard strongly recommends the use of semi-formal development methods. Consequently, a UML-based development method (the ABB UML method), which qualifies as a semi-formal method according to IEC 61508, was developed by the company (The ABB Instruction 2001; The ABB Guideline 2003). In addition, the system components are SIL certified, which implies that the software parts of the components must implement (parts of) the safety requirements so that the whole component can be SIL-certified. These requirements were derived from the requirements for the safety level before the total set of requirements was distributed to the development teams. Thus, from the point of view of the development teams, there was little difference between the safety-related requirements and the functional requirements.
The existing systems consisted of 3–4 million lines of code and there were approximately 1,000 requirements for this version; one third of which concerned satisfying safety requirements, while the remainder consisted of requirements for new functionality from the product management. The size of the requirements varied from a small design requirement to a communication protocol. Figure 1 shows one example of a requirement for functionality and one for safety, respectively. Teams were set up and requirements were distributed among teams based on physical units, experience with these units and on which teams had available resources. There was no initial grouping of requirements to logical units of functionality. Each team was responsible for producing a set of documents with UML models. `
C and C++ were used in the software implementation. UML version 1.3 and Rational Rose were used for modelling. Much of the software was embedded.
The project consisted of several sub-projects. The three sub-projects that developed safety software and applied the ABB UML method are described briefly below.
-
Sub-project A, the largest one, developed software based on a comprehensive existing code base. This includes code running both on a Windows PC platform and on an embedded 32-bit RISC processor. The developers on this project were mainly located in Sweden at site 1, but some work was done in Norway.
-
Sub-project B developed hardware and embedded software for a 32-bit RISC processor. The project was divided into two teams: the hardware team, which dealt with electronic and mechanical design, and the software team. This sub-project had no existing systems to relate to. It was mainly located in Sweden at site 2.
-
Sub-project C developed C code in the form of embedded software for a 16-bit processor. This sub-project was the only one that generated code automatically from their UML models. This sub-project had no existing systems to relate to. It was located in Norway.
2.3 The ABB UML Method
ABB has an existing methodological framework into which UML-based development was introduced. The overall ABB development method follows closely a traditional, and the method is used together with the ABB Gate model for projects, which defines the milestones for decision making in a project (ABB 2001). The goal of the ABB UML method is to cover the lower part of the V-model, from requirements analysis to functional testing. The first time the method was used, emphasis was mostly on analysis and design. The relations between the V-model, the Gate model and the ABB UML method are shown in Fig. 2. G0...G6 refers to the gates of the Gate model and indicate when these are passed.
The ABB UML method was developed internally. It was not based on any particular method for UML-based development, but those responsible for it had experience with development based on UML, and were familiar with basic literature on such development, for example (Booch et al. 1998; Douglass 2004; Fowler 2003). The main reason why UML-based development was chosen as a basis for a semi-formal development method was the good tool support for modelling with UML. The ABB UML method is generic and thus had, at its inception, no particular relevance to the specifics of software development in ABB. The company’s plan was to start with a basic method and develop it in response to experience gained from the projects in which it is used.
The ABB Gate Model stipulates that project documents should be reviewed at specific milestones in the project. As a consequence, the ABB UML method is document-driven. The development process is centred on two documents: the description of function (DOF), which describes the results of the requirements analysis, and the design description (DD). There were predefined templates for these documents. The UML models were inserted into these documents automatically, using Rational Rose and Rational SoDA.Footnote 1 The models are reviewed only as part of the documents.
The ABB UML method prescribes the use of use cases, sequence diagrams, deployment diagrams and class diagrams. The use of state chart diagrams and activity diagrams is optional. The method provides guidelines for the requirements analysis of both software and hardware, guidelines for the design of software, and guidelines for using Rational Rose. In addition, there are guidelines aimed specifically at satisfying the safety standard (Hansen and Gullesen 2002). Iterations are encouraged within each phase, and the phases in the development project should, to some extent, be conducted in parallel; that is, the analysis phase does not need to be completed before starting on the design phase or on the implementation. The ABB UML method (framed in Fig. 2) was the subject of evaluation in this case study, not the complete V model. The steps of the ABB UML method are shown in Appendix A.
3 Research Method
The overall research method applied here is a case study (Yin 2003). Case studies can be exploratory, descriptive or explanatory. This case study can best be characterized as exploratory due to the lack of previous case studies on UML-based development. Case studies are most suitable for investigating research questions of the types what, how and why. In this study, we investigate how the company’s development process was improved by adopting UML-based development, what particular difficulties were encountered with the use of UML and provide some explanations for why these difficulties occurred.
3.1 Data Collection
ABB wanted the opinions of the project members on the ABB UML method. Interviews were conducted with 16 people who had experience with the ABB UML method in the project. The authors selected the interviewees so that all the sites, subprojects and roles in the project were represented. Table 1 shows the distribution of the interviewees. Sub-project B was the only one involving hardware and software development and so we included interviewees concerned with both aspects of development. ABB did not have sufficiently detailed historical data from previous projects that could be used in the assessment of this project and to supplement the interviews.
All the developers interviewed had applied the ABB UML method. Two of the managers had also done some development and applied the method, while others had reviewed project documents that contained UML. Some of the interviewees had had positive experiences when applying UML in previous projects, but those projects were smaller than the project under study and did not have the same safety requirements. Most interviewees, however, had no particular expectations regarding the ABB UML method at the start of the project, but applied it because they had to in order to satisfy the safety standard. The interviewees’ experience in ABB varied from approximately two years to more than 25 years.
The interview guide was developed by the authors. The interviews were semi-structured, based on the interview guide shown in Appendix B, but adapted to each interviewee. The aim was to encourage the interviewees to speak freely about the different aspects of the project and the ABB UML method. Each interview lasted from 30 to 50 min, and was conducted by two researchers not employed by ABB (the first and fourth authors).
3.2 The Analysis Procedure
The interviews were taped and transcribed before analysis. The interviewees had backgrounds that varied enormously. Consequently, not all of the questions in the interview guide were answered by all the interviewees. Some of the questions were open-ended and were answered differently by the different interviewees. It is, therefore, not feasible to report answers on the individual questions. Instead, the transcribed interviews were analyzed according to the principles of grounded theory (Strauss and Corbin 1998), as well as on advice in the literature on the analysis of interviews (Eisenhardt 1989; Seaman 1999). There is no standard way of analyzing in-depth interviews, and papers seldom describe in detail how such analysis is done (Huberman and Miles 2002). Consequently, we had to identify for ourselves a suitable way of doing the analysis in this case. We decided to do it in the following steps:
-
1.
Identify categories for coding
The categories are shown in Appendix C. There are categories for the following: interviewees’ expectations, experience and training, possible improvements, opinions about project characteristics, and difficulties related to the use of UML. The categories are based on the interview guide and on experience gained from the actual interviews. The categories related to improvements are based principally on the expectations that ABB had when the method was introduced, and the categories related to project characteristics are the results of project decisions that could cause problems.
-
2.
Code the interviews
All the relevant sentences in the interviews were coded according to one or more categories. The interviewees often expressed themselves in many words, so some of the sentences from the interview were simplified to facilitate the rest of the analysis.
Several iterations of steps 1 and 2 were performed, in order to identify an appropriate set of categories.
-
3.
Sort the sentences
All sentences related to possible improvements were sorted into descriptive (describing the area), positive (supporting an improvement) and negative (opposing an improvement). With respect to the sentences about difficulties with UML and problematic project challenges there were only sentences describing these as problematic.
-
4.
Check background of interviewees
The varying backgrounds of the interviewees meant that not all of them had experience with each topic. Hence, for improvements within the specific topics, we examined who of the interviewees had experience that would enable them to have an opinion. For project characteristics, we examined who had found each characteristic to be problematic.
-
5.
Identify relationships
Relationships were identified between project characteristics and difficulties related to the use of UML. A project characteristic was considered to be one cause of a UML problem if it was explicitly mentioned as such or the two were mentioned together in the interview in a way that strongly indicated a relationship.
4 Improvements in the Development Process
We have refined ABB’s expectations for improvement in the different areas:
-
A1:
Traceability, defined as support for the construction of models that enables traceability from requirements to code.
-
A2:
Communication, defined as ease of discussing design and implementation both within the development teams and in reviews.
-
A3:
Design, defined as support for design activities as well as perceived structural properties of the code.
-
A4:
Documentation, defined as documentation of code for the purpose of passing reviews (gates) as well as expected future maintainability.
-
A5:
Testing, defined as ease of making functional test cases and their coverage.
-
A6:
Development costs.
The positive and negative sentences related to each of the areas were used to establish the extent to which there were improvements. Not all the interviewees mentioned potential improvements in all areas. There are several reasons for this. One interviewee was the manager for the whole safety project and did not have opinions on specific aspects of the development process, but had opinions on documentation and costs. For three of the interviewees, this was their first project in ABB. Hence, they did not have opinions on whether there were improvements. The only exception was with respect to documentation, because they had read the documentation of previous projects. In addition, one of the interviewees had not been involved in testing, two had not been deeply involved in development and had no opinions on design and traceability, and three had worked in small teams that had not been involved in reviews and could not have opinions about communication.
Table 2 shows the interviewees’ opinions related to A5 about testing. Each row represents the opinion(s) of one interviewee. Five of the interviewees had only positive opinions, while six had both positive and negative opinions, although mostly positive. Table 3 shows the results of the coding of the interviews with respect to the different areas for improvement. The table shows how many of the interviewees mentioned each of the areas, how many had only positive opinions, and how many had only negative opinions. Most of the interviewees with both positive and negative opinions were, however, mostly positive as in the example in Table 2. Table 3 shows improvements on all aspects except development costs, which were considered to have increased due to the introduction of UML-based development. The interviewees had, however, also experienced difficulties with all aspects. Below is a summary of how and the extent to which each aspect was improved.
Traceability
The method was considered to give good support for tracing from requirements to code and vice versa. This represented an improvement compared with the previous situation with only textual descriptions of analysis and design, and it helped ensure that all requirements were implemented. The interviewees had struggled somewhat with the tool to make it accept external references to the textual requirements. The large amount of legacy code, of which large parts were not reverse engineered, means that not all the code in the product can be traced back to the requirements.
Design of the code
The use of the ABB UML method dictated a greater focus on design than had been the case previously. The interviewees thought that people had come to realize the importance of designing before coding, which realization had resulted in an improved design. Previously, a prototype would often evolve into code, while now the development is more top–down, and a design framework is available before coding starts. In particular, the interviewees considered that the use of sequence diagrams forced them to design thoroughly. Some found, however, that there was not sufficient support in the method for combining top–down and bottom–up development, something which was necessary when many building blocks were already available in the form of hardware components or legacy code.
Documentation
This project was better documented, both in terms of quantity and quality, than previous software development projects in ABB. The documents now had a more unified structured with respect to content, and the interviewees found it easier to read them because of the common structure. The interviewees thought that more software developers can learn UML than learn to express themselves well in English. In addition, several of the interviewees emphasized that the developers found it more fun to make diagrams than to write textual documentation; hence, they produced more a comprehensive set of analysis and design documents. The interviewees found use cases and sequence diagrams to be particularly useful. They had, however, experienced difficulties with the format of the documents due to problems with the templates, such as which parts of the UML models were automatically inserted into the documents and the numbering of the sections in the documents. The documents were also often very large because the project members found it difficult to know how much context they should include in their models in order to describe their own part. Some documents, for example, contained several hundred pages describing only one piece of functionality. Some interviewees from sub-projects A and B, the sub-projects which did not generate code from the UML models, thought that they spent too much effort on producing documentation during the project that would be outdated when the product was finished. Those who generated code automatically also reverse engineered their code to update their models and did not experience this problem.
Testing
The development of test cases became quicker and easier when the UML models were available, and the coverage of the test cases had improved. On the negative side, the large amount of detail in the UML models made them difficult to use as input to testing. Not all the testers had received training in UML, which meant that they could not easily apply the UML-based test cases, and consequently these were used less often in testing than they could have been.
Costs
There were, of course, costs related to learning a new method. The introduction of a new method also led to much rework. For example, some of the interviewees rewrote the description of function several times, due to a revised understanding of the nature of use cases. The amount of detail in the analysis models meant that these sometimes had to be updated later in the project. The interviewees had also expended a great deal of effort on discussing how to best apply UML, both within the teams and in the reviews. In addition, the reviews were considered to have taken more time because the documents were produced with a new method. The interviewees found it difficult to estimate how much the introduction of UML-based development had cost in terms of extra effort, but several of them guessed that it had doubled the effort on the project. The interviewees thought, however, that there might be improvements with respect to costs on future projects, when they could benefit from the documentation made on this project and the team members would be more experienced.
5 Challenges in the Project
The previous section showed that the interviewees had experienced several improvements to their development process as a consequence of introducing UML-based development, but also that difficulties with using UML, in combination with characteristics of the project that were the results of project management decisions, had caused difficulties and thus had reduced the possible positive effects of introducing such a development method. This section describes the difficulties experienced by the interviewees, the project characteristics that were considered to cause most problems and how these characteristics affected the use of UML.
5.1 Project Characteristics and their Consequences
The interviewees mentioned four characteristics of the project that contributed to the difficulties with using UML and that had led to problems with obtaining the desired improvements. These characteristics were the consequences of project management decisions made because of budget and timing constraints in the project: (1) it was considered too costly to reverse engineer into UML the large amount of legacy code that the project had to modify and integrate with, (2) the requirements were distributed to the teams based on physical, and not functional, units of the system, (3) it was considered too costly to provide thorough training for all people involved in the project, (4) the choice of tools for the modelling process possessed functionality that was not in accordance with the needs of the project. Table 4 shows how many of the interviewees described difficulties with the four project attributes. The table also describes the interviewees who mentioned the characteristics.
5.1.1 Legacy Code
Reverse engineering of the complete existing code base before the start of the project was considered too difficult, and consequently too expensive. The ABB UML method stipulates that the parts of the existing code that will integrate with the new code should be reverse engineered into UML models. It also stipulates that interfaces should be identified in these models and that modelling of the new system should use these interfaces, but there is little support on how to actually do this in the method. UML-based development methods mostly assume development from scratch, and to the authors’ knowledge, there is little methodological support for using UML when modifying existing, non-object-oriented systems, even though it is often necessary and also recommended to introduce UML into an existing production environment (Selic 2003). The interviewees described the problems related to the large amount of legacy code that was not reverse engineered, and the consequences of these problems. An example of statements about integration with, and modification of, legacy code is given in Table 5. Each row relates the opinion of one interviewee.
Figure 3 shows the interviewees’ opinions about the consequences of having to deal with a large amount of legacy code. Each statement from the interviewees is categorized to clarify the relationships. The main consequences were the following:
-
Difficulties with identifying which parts of the architecture implemented which parts of the functionality, and how the new requirements related to the existing functionality. This created difficulties when distributing requirements to teams.
-
Both developers and reviewers had difficulties with abstracting away from the code in analysis and design when they knew the existing code well. This contributed to analysis and design models with too much detail.
-
Difficulties with identifying clear-cut interfaces to the old code that could be used in the new models. It was necessary to know the old code well in order to know how much of it had to be modelled to document the new part well.
-
General problems with obtaining benefits with respect to design when applying UML because they had to know, and adapt to, the existing code.
5.1.2 Organization of Requirements and Teams
The distribution of requirements to teams was mostly done before beginning to use the ABB UML method. It was done based on physical units, previous experience and on which teams had available resources. There were approximately 1,000 requirements for the new system, but these were not organized hierarchically. The ABB UML method states that identical functionality should be identified and separated out as included use cases, but there was no organized activity of identifying similar functionality over several teams; nor was there any activity on integrating the different models and ensuring unified interfaces. Figure 4 shows the interviewees’ opinions about the consequences of not organizing and distributing requirements to teams based on functionality and not organizing cooperation among teams that were developing functionality that interacted with the functionality being developed by other teams. The main consequences were the following:
-
The focus was often on physical components as such and not on functionality.
-
Related functionality was not always distributed to the same team, meaning that it was often difficult to map requirements to use cases.
-
One analysis model did not necessarily correspond to a logical part of the system. Hence, it was difficult to integrate different models, and in some cases there was overlapping functionality in different models.
5.1.3 Training and Mentoring
Most of the developers were novices at modelling with UML when starting to work on this project. Otherwise, they were well-qualified developers (most holding the equivalent of an MSc degree) and with several years experience at ABB. They were familiar with both the V-model and Gate model. At the start of the project, they attended courses of two to five days that covered UML syntax, Rational Rose tools and the ABB UML method. A special team, the UML team, was set up to help the rest of the project with the use of UML, which included responsibility for developing templates and for reviewing documents, with particular focus on the correct use of UML. The number of people in the UML team varied from three to five over the course of the project.
The interviewees reported that there had been too little training because managers, reviewers and testers, who did not themselves develop, did not receive training even though they had to read and understand the models. Some of them also had roles that required them to motivate and teach others to use UML correctly. Developers who started on the project after the courses did not receive the same training as the others.
There were also problems reported with the training they received. The interviewees said that the courses focused too much on UML syntax and too little on the ABB UML method and semantics of diagrams and constructs. There were not enough practical exercises on using the tools and it was not made clear what should actually be achieved by modelling. It was considered necessary, but not sufficient, to master the syntax in order to apply UML successfully. The courses were developed for the project, but not adapted to the specific context.
The interviewees believed that the UML team was not sufficiently qualified, and did not have sufficient authority, to guide the total use of UML in the project because they lacked the necessary experience with both development and UML. At the beginning of the project there were some senior developers in the team, but these were considered too important for the rest of the project to be given time to spend on the UML team. The members of the UML team did not receive additional training in UML-based development.
Figure 5 shows the interviewees’ opinions on the consequences of these problems. The main consequences were these:
-
It was not well understood how to apply the concepts of actors and use cases in the context of embedded development.
-
There were large differences in how the different teams applied UML and the method.
-
Those who had attended courses often expected to be able to use the course material directly in the development, but this caused difficulties since the material was not adapted to the project context.
-
The templates that were used in the project were not sufficiently adapted to the project context.
-
The project members did not always use UML-models when they could have used them. UML-models were, for example, not always applied as input to making test cases.
5.1.4 Tools Used in Modelling and Documenting
Some of the interviewees believed that Rational Rose lacked stability, but they were mostly satisfied with its functionality. Rational Rose SoDA was used to produce documents automatically from the models in Rational Rose; that is, the models were inserted into predefined Word-templates. The interviewees reported that it was difficult to create documents with an acceptable layout when the models were inserted into documents automatically. For example, the developers were unable to set the text fonts in the UML-models in Rational Rose, and they did not succeed in controlling the numbering of the sections in the documents. Therefore, they had to make quite a lot of changes to the automatically generated documents, and consequently it was costly to make changes in the models because this implied generating new documents.
In addition, the interviewees thought that Rational Rose may also have contributed somewhat to the low level of detail in the high-level sequence diagrams because Rational Rose facilitates in the sequence diagrams, the use of classes and methods that have already been defined in class diagrams.
5.2 Difficulties with Using UML
The previous section described project decisions that caused problems with applying UML and thus reduced the effect of introducing UML-based development. The interviewees mentioned three main difficulties with applying UML: (1) the choice of diagram to use in a specific situation, (2) the interfaces between models, and (3) the level of detail in the models. Table 6 shows how many of the interviewees mentioned problems with each of the aspects.
5.2.1 Choice of Diagrams
Some interviewees reported problems with the choice of diagram to apply. They found that there was too much focus on use cases and sequence diagrams in the ABB UML method, and thought that activity diagrams could be more useful early in analysis when few actual objects have been identified. More use of activity diagrams could have contributed to deterring the focus on detailed classes. The interviewees had, however, focused on making the UML models that were compulsory in the ABB UML method, since they did not feel that they had a good enough grasp of the goal of applying each of the models to choose when to apply which. The lack of insight into exactly what each model should express also meant that the interviewees found it difficult to know when it was necessary to supplement the models with text and when the models were self-contained.
5.2.2 Interfaces
The interviewees had experienced large problems with interfaces between models describing different, but interacting, parts of the system. Well-described interfaces were considered vital for understanding where each part fits in and to get an overview of the system, but most of the interviewees found that the interfaces were either missing or too detailed.
High-level interfaces were in the form of actors. In addition to actors that were external to the whole system, such as operators and hardware devices, the ABB UML stipulates that subsystems should be considered as actors for each other. These subsystems could be legacy code or other subsystems being developed in parallel. An actor mostly interacts with a subsystem in several places. In the modelling process, such low-level interfaces were marked with the symbol ○. Such interfaces were gradually substituted with actual function calls when these were established. The interviewees had experienced several problems:
-
For interfaces in the form of actors that were not human users it was more difficult to identify them and how they would interact with the system than for those actors that represented human users.
-
Interfaces in the legacy code posed difficulties because the legacy code was only partially reverse engineered into UML models. Consequently, there were often few interfaces in the old code that could be used directly.
-
Interfaces in subsystems that were developed in parallel also posed problems. The ABB UML method stipulates that the people responsible for the different subsystems should communicate about the exact nature of the interface. However, this was often difficult because the different subsystems were developed according to different schedules and some subsystems were developed mostly bottom–up, based on existing components, while others were developed top–down. The interviewees also reported that they did not have a good grasp of how to group use cases into subsystems, something that also contributed to the interfaces between the subsystems not being clear-cut.
5.2.3 Level of Detail
Examples of statements about level of detail in the models are given in Table 7. Each row relates the opinion of one interviewee. The main problems were these:
-
The teams had started to think about code when the focus should have been on functionality. Both the use cases and the high-level sequence diagrams were considered to be too detailed, because they often included the same functions as the code.
-
It was difficult to decide how to divide functionality into use cases and to decide how many sequence diagrams should be made for each use case.
-
The distinction between analysis and design was not clear. The analysis models included design details and were consequently often difficult to use in the design, because they constrained the design models.
6 Scope and Validity of the Results
This section describes the scope and validity of the case study reported in this paper.
6.1 Scope of the Results
In the authors’ opinion, most of the experiences gained from this project are relevant for other large projects that introduce UML-based development. There are, however, a number of aspects particular to this project.
-
Much of the software to be developed was real-time and embedded. The ABB UML method was not particularly tailored to this kind of development. Only one of the interviewees stated, however, that he missed particular real-time features. Object-oriented modelling and UML-based development may be less suited for development of embedded software because the concepts of actors and use cases are more difficult to apply to a system where there is not so much external communication and because many of the objects are established in advance.
-
The ABB UML method was applied within an overall development process with focus on the acceptance of project documents at predefined gates in the development project. This meant that the documents with the UML models, and not the models themselves, were subject to review. Many of the interviewees had experienced difficulties with the format of these documents, and that may have overshadowed their opinions on UML-based development as such.
-
The requirements were well-defined before the application of the ABB UML method. The safety requirements were derived from IEC 61508. Most of the functional requirements were the result of the system’s relations to hardware artifacts, while some of them were responses to the needs of users of the system, such as process operators and engineers. This meant that the functional requirements were mostly independent of users’ needs and abilities to define requirements. Use cases are claimed to be particularly useful for eliciting and elaborating functional requirements, but such activities were not part of this project, and use case modelling may, therefore, have been considered less useful than it would have been if such activities had been included.
-
The use cases were constructed solely by developers who were also domain experts. ABB develops products for sale, and consequently there were no clients involved in the development process. This probably contributed to the low level of detail in the use case models.
-
The teams had worked in a very vertical way, mostly with one team being responsible for analysis, design and coding. The benefits of analysis and design with UML may have been greater if the analysis and/or design models had been handed over to other teams for further elaboration. In addition, in practice, not all steps of the ABB UML method were necessarily followed by all teams. Absolute conformance to a development method is, however, seldom observed in software development projects (Fitzgerald 1997), and in this case the safety constraints forced the developers to produce all the UML-models stipulated by the ABB UML method.
ABB chose UML-based development because of good tool support. We believe that the project would have experienced many of the same improvements and challenges if they had chosen another modelling language and method as a basis for their improvement initiative. However, we do believe that there are some matters that are particular to UML-based development. The use of use case diagrams may lead to a focus on the overall system rather than on the individual parts. The packages in Rational Rose may also have contributed to an awareness of each team working on a part of a larger system. In this case, the system to be constructed was too large and complex to easily provide an overall picture of its functionality. Many of the difficulties reported in the interviews were related to problems with describing models and their interfaces in such a way that they could provide an overview of the system. These difficulties may have been lessened if a method for analysis and design had been used that had less focus on overall functionality and more on detailed design.
6.2 Validity of the Results
The results of this study are based on interviews with the project participants, and our measures are their perceived improvements and problems. The interviewees were selected to represent different parts of the project and they all had experience with using UML on the project. The people present at the interviews (the first and fourth author) were not employed by ABB, and the interviewees were guaranteed anonymity. Our impression is that the interviewees spoke freely. The conduct of interviews and confidentiality issues are discussed further in Hove and Anda (2005) which is, among others, based on the experiences from these interviews.
With respect to validity of results based on interviews there are, in particular, two aspects of validity to consider (Maxwell 1992):
-
Descriptive validity; that is, whether the interviewees’ opinions are rendered correctly. In this case, the interviews were transcribed, based on tapes, by the research assistant who had been present at, but not directly involved in, the interviewing. The analysis was based on these transcribes.
-
Interpretive validity; that is, whether the interviews are correctly interpreted. In this case, the interviewees spoke very informally, and ten of the interviewees were Swedish. Consequently, it was necessary to translate and rewrite the transcriptions somewhat before the coding of the interviews. It is possible that the meaning of some individual sentences may have been altered slightly in this process. The categories used in the analysis are the result of several iterations on coding the interviews, and previous iterations also included other categories for coding that were discarded because very few sentences in the interviews were coded according to them. These categories were requirements analysis, the method description and the syntax of UML in relation to improvements, project decisions and difficulties with UML, respectively. Three project members, who had not been interviewed, also read through and verified a draft of this paper.
There are few empirical studies on UML-based development with which to compare our results. Nevertheless, some of our results are supported by the results reported in a paper with lessons learned from developing embedded software (Pettit 2004). That paper also reports improved communication due to the introduction of UML-based development, as well as challenges with respect to describing interfaces between UML models. Our results are also supported by the results from a study on the introduction of object-oriented development (Malan et al. 1995). The experiences reported in that paper also emphasize the need for sufficient training, reverse engineering of legacy code, and adequate distribution of subsystems to teams, as well as the economic challenges involved in these activities. Furthermore, some of our results are supported by the results from a study on the usability of UML diagrams (Agarwal and Sinha 2003). That study also revealed difficulties with understanding the concept of use cases and describing them with appropriate detail, as well as with modelling interface objects in class diagrams. Difficulties with level of detail in use case models have been mentioned, for example in (Armour and Miller 2000; Cockburn 2000; Kulak and Guiney 2000).
7 Conclusions and Future Work
This paper reports the results of a case study on adopting UML and an associated UML-based development method in a large, international development project in ABB. Data was collected through interviews with 16 developers and managers. Principles from grounded theory were used in the analysis of the interviews.
The interviewees had obtained several immediate improvements as a consequence of introducing a UML-based development method. These were improved traceability of requirements to code, improved communication within the development teams (and to some extent in the reviews), improved design of the code, quicker development of test cases and better coverage of these, and a product that was better documented than were previous products. The interviewees also stated that there had been difficulties related to obtaining these improvements and also that development costs had increased due to the adoption of UML. When applying UML, the interviewees had experienced difficulties with choosing an appropriate diagram in a specific situation, interfaces between different models, and with the level of detail in the models. There were four decisions made at the start of the project that the interviewees identified as having caused problems with the use of UML. These were related to lack of reverse engineering of legacy code, unsystematic distribution of requirements to teams, insufficient training and mentoring, and choice of modelling tools.
Despite the widespread use of UML in industry, there has been little evaluation of UML-based development in industrial projects. In the authors’ opinion, this study thus represents a contribution to the body of knowledge regarding benefits and challenges involved in adopting UML-based development that should provide valuable input to the development of a theory in the field as well as to practitioners. The ABB UML method has also been changed, partly based on the results from this study.
The following activities are in progress, or are planned, in order to further evaluate the use of UML-based development in ABB. First, a questionnaire, with questions based on the results of the interviews, has been distributed to the participants in the project to investigate specific aspects of the development process in more detail. Second, project documents from the project, in the form of UML-documents, review reports and test reports are being analyzed, to identify what changes were made to the analysis models and what caused these changes to be made. Third, more case studies on the adoption, adaptation and use of UML-based development in various types of projects are needed to better understand how such development should be applied to improve software development processes.
Notes
Information about both tools can be found at http://www.rational.com.
References
ABB (2001) Gate model for product development 1.1 Tech. report 9AAD102113, ABB/GP–PMI, Västerås, Sweden
Agarwal R, Sinha AP (2003, September) Object-oriented modeling with UML: a study of developers’ perceptions. Commun ACM 46(9):248–256
Armour F, Miller G (2000) Advanced use case modelling. Addison-Wesley
Booch G, Rumbaugh J, Jacobson I (1998) The unified modeling language user guide. Addison-Wesley
Cockburn A (2000) Writing effective use cases. Addison-Wesley
Cox K, Phalp K (2000) Replicating the CREWS use case authoring guidelines experiment. Empiri Software Eng 5(3):245–267
Douglass BP (2004) Real time UML: advances in the UML for real-time systems. 3rd edn. Addison-Wesley, Boston, Massachusetts
Eisenhardt KM (1989) Building theories from case study research. Acad Manage Rev 14(4):532–550
Fitzgerald B (1997) The use of systems development methodologies in practice: a field study. Inf Syst J 7:201–212
Fowler M (2003) UML distilled. A brief guide to the standard object modelling language, 3rd edn. Addison-Wesley
Hansen KT, Gullesen I (2002) Utilizing UML and patterns for safety critical systems. In: Jürjens et al. (eds) Critical systems development with UML, number TUM-I 0208 in TUM technical report, UML’02 satellite workshop proceedings
Hove SE, Anda B (2005) Experiences from conducting semi-structured interviews in empirical software engineering research. Accepted for presentation at metrics
Huberman AM, Miles MB (2002) The qualitative researcher’s companion. SAGE Publications, Inc., Thousand Oaks, California
IEC (1998) 61508: Functional safety of electrical/electronic/programmable electronic safety-related systems.(http://www.iec.ch/)
Kulak D, Guiney E (2000) Use cases: requirements in context. Addison-Wesley
Malan R, Coleman D, Letsinger R (1995) Lessons from the experiences of leading-edge object technology projects in Hewlett–Packard. Proceedings OOPSLA 1995, pp 33–46
Maxwell JA (1992) Understanding and validity in qualitative research. Harv Educ Rev 62(3):279–300
Otero MC, Dolado JJ (2002) An initial experimental assessment of the dynamic modelling in UML. Empiri Software Eng 7(1):27–47
Peleg M, Dori D (2000) The model multiplicity problem: experimenting with real-time specification methods. IEEE Trans Softw Eng 26(8):742–759
Pettit RG (2004, May 11–12) Lessons learned applying UML in embedded software systems designs. Proceedings of the second IEEE workshop on software technologies for future embedded and ubiquitous systems (WSTFEUS’04), Vienna, Austria pp 75–79
Seaman CB (1999, July/August) Qualitative methods in empirical studies in software engineering. IEEE Trans Softw Eng 25(4):557–572
Selic B (2003, September/October) The pragmatics of model-driven development. IEEE Softw 20(5):19–25
Sjøberg DIK et al (2005) A Survey of Controlled Experiments in Software Engineering. To appear in IEEE Trans Softw Eng
Strauss A, Corbin J (1998) Basics of qualitative research: techniques and procedures for developing grounded theory. 2nd edn. SAGE Publications, Inc., Thousand Oaks, California
The ABB Instruction “Software and Hardware development,” 2001
The ABB Guideline “Guideline for use of semi-formal methods in Software and Hardware design,” 2003
Yin R (2003) Case study research: design and methods. 3rd edn. SAGE Publications, Inc., Thousand Oaks, California
Zendler A et al (2001) Experimental comparison of coarse-grained concepts in UML, OML and TOS. J Syst Softw 56(4):21–30
Acknowledgments
We acknowledge all the employees of ABB in Sweden and Norway who participated in the interviews and their managers. We thank Lionel Briand for valuable comments on the case study, and we also thank Hans Christian Benestad, Vigdis By, Dag Sjøberg, Marek Vokác, Ray Welland, Chris Wright and the anonymous reviewers for their comments on a previous version of the paper. The reported work was funded by The Research Council of Norway through the industry project SPIKE (Software Process Improvement based on Knowledge and Experience).
Author information
Authors and Affiliations
Corresponding author
Appendices
Appendix A. Brief Description of the ABB UML Method
The requirements analysis phase of the ABB UML method:
-
R1.
Identify actors and use cases, and document them
Actors are the system’s external interfaces. Humans, timers, sensors, or anything else that interacts with the system, can be an actor. For a use case diagram in a subsystem, other (interacting) subsystems should also be defined as actors.
Use cases:
-
Define the system as seen from the actors’ point of view.
-
Represent the different usage of the system and system services.
-
Capture the requirements.
A use case is always initiated by an actor.
-
-
R2.
Group use cases and actors into subsystems
There should be strong cohesion within the subsystems and a weak coupling between the subsystems.
-
R3.
Refine the use cases and identify dependencies
If some use cases show common behaviour at specific points, and this commonality can be extracted without disturbing the main functionality, it can be factored out as a separate use case and included in the diagrams from which they were extracted using the <<include>> stereotype. If some use cases have behaviour that can be seen as additions to, or variations of, normal behaviour, such forms of behaviour can be factored out as separate use cases and included in the use cases from which they were extracted using the <<extend>> stereotype. The different possible extension points are listed inside the lower half of the use case, and each <<extend>> is marked with the connecting extension point.
The analysis phase of the ABB UML method:
-
A1.
Describe flow of events inside the use case (textual)
Describe each use case with the normal flows of events inside the use cases (each use case has at least one normal flow of events). Then capture the exceptional flows of events for each use case. This is done in several iterations.
-
A2.
Create high-level sequence diagrams
High-level sequence diagrams should be used to show the dynamics between the objects involved in the use case and the actors interfacing them, for both normal and exceptional flows of events. Objects of type inclusionPoint with the names of the included use cases, and objects of type extensionPoint with the <<extend>> names take the included and extended sequence diagrams’ roles. Only objects with ‘focus of control’ or actors may initiate messages. A base use case transfers ‘focus of control’ to the object to which it sends a synchronous message, but it keeps the ‘focus of control’ if the message is asynchronous. An object that receives a message gains “focus of control.” Information contained in objects must be placed there by another object before it can be extracted, and it originates in an actor outside the system.
-
A3.
Define interfaces between use cases in different subsystems
There are interfaces between the subsystems. In the use case diagrams there are dependency arrows from the use cases to their interfaces. The exact messages included in the interfaces are identified by those responsible for the subsystems that interact.
-
A4.
Describe the activities in the use case in an activity diagram (Optional)
Activity diagrams should show the different activity states of the use case, for both normal and exceptional flows of events.
-
A5.
Create high-level class diagrams
Identify high-level classes. A high-level class describes the commonality between similar objects in the sequence diagrams and defines the structure and behaviour for each object in the class. Assign objects to the correct classes. The interactions between the objects in the sequence diagrams help to identify the operations in the classes. The different messages will identify operations in the class of the receiving object. Find the information contents necessary to process each message in the sequence diagrams. This information will end up as attributes in the class of the receiving object.
The high-level class-diagram should show associations between the classes.
-
A6.
Update sequence diagrams with correct high level class and operation names
When high-level class diagrams are made, the mapping back to the sequence diagrams must be done. Mark out in which technology the high-level class would be implemented (SW, VHDL, HW). These distinctions will be used when we start to build the component view.
The Detailed Design phase of the ABB UML Method (Note that the hardware developers did no detailed design):
Detail design (SW)
The goal of this phase is to realize the high-level classes with implementation class diagrams and to group the classes in components. The detailed class diagrams include relations between classes, operations and attributes. State transition diagrams may be used in the process of elaborating the class diagrams.
The detailed classes are connected to the high-level classes through a “realize” association. In this context, it makes sense to expose operation signature details for the high level classes.
The classes with strong coupling are typically candidates for a component, as are classes with the same implementation technology. When classes with strong coupling but different implementation technology are distributed to different components, an interface must be made to take care of the classes.
Appendix B. Interview Guide
-
1.
What is your professional background?
-
2.
Can you describe your role in the project?
-
3.
How well did you know UML and UML-based development at the start of this project?
-
4.
What were your expectations when starting to use UML and the ABB UML method; what benefits and costs did you expect?
-
5.
Have you previously worked on similar projects, with or without UML, so that you can compare experiences from that project with this one?
-
6.
What are your opinions about the training you received?
-
7.
With whom did you cooperate on the use of UML?
-
8.
Did you have to adapt the ABB UML method in any way to the needs of the part of the system that you were modelling?
-
9.
What is your experience with the different diagrams, use cases, sequence diagrams, class diagrams etc.?
-
10.
Were there parts of the systems that you had problems modelling using UML?
-
11.
How did you find the reviews?
-
12.
Who are the receivers of the UML-models that you produce, apart from the reviewers?
-
13.
What kinds of interface did your code have to other UML models or to existing code and how do you think you succeeded in modelling those interfaces?
-
14.
What were, in your opinion, the costs involved in applying UML and the ABB UML method and what were the benefits?
-
15.
Do you have any experience with maintenance of systems that are documented using UML?
-
16.
Is there anything that you would have done differently if you could start all over again?
-
17.
How would you rate the ease of comprehension of the UML models that you have read?
-
18.
Do you believe that you can identify good use of UML; do you have any specific criteria?
Appendix C. Categories for Coding of the Interviews
Background:
-
Expectations
-
Experience
-
Training (which)
-
Activities (in the project)
Possible improvements:
-
Traceability
-
Communication, Reviews
-
Design
-
Documentation
-
Test, Defects
-
Costs
Project characteristics:
-
Training, Mentoring (opinions)
-
UML team
-
Legacy code
-
Organization (of requirements and teams)
-
Tools, Templates
Use of UML:
-
Interfaces
-
Level of detail, Abstraction level
-
Choice of diagrams
Rights and permissions
About this article
Cite this article
Anda, B., Hansen, K., Gullesen, I. et al. Experiences from introducing UML-based development in a large safety-critical project. Empir Software Eng 11, 555–581 (2006). https://doi.org/10.1007/s10664-006-9020-6
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-006-9020-6