EuroSPI99 
Learn from the Past - Experience the Future
European Software Process Improvement
SPI and Process Models
Category Index
Rated Newspaper Supported by EU Project 

Software Process Improvements in a Very Small Company

Ita Richardson
Department of Computer Science and Information Systems and Small Firms Research Unit,
University of Limerick,
National Technological Park, Castletroy,Limerick,Ireland

Kevin Ryan
College of Informatics and Electronics,
University of Limerick,
National Technological Park, Castletroy, Limerick, Ireland
 

Introduction

Following any software process assessment, it is important that an organisation implements a process improvement strategy to produce a well-defined software process. In theory, this is simple; it is much more difficult in practice.

Authors have recognised that the available models did not provide an improvement strategy [1], [2]. The IDEAL model for the Capability Maturity Model was presented in 1995 [3], but as recently as 1998, Debou and Kuntzmann-Combelles note that "due to lack of documentation on the post-assessment phase, assessments are often being performed as a one-shot event without connection to any improvement strategy" [4]. For the large company, it may be possible to devise such a strategy by investing in the development of action plans. However, for the small company, this requires yet another investment from a much smaller purse.

The authors of this paper have developed a generic method to be used by Small Software Development companies, allowing them to devise Software Process Improvement strategies. This method is based on Quality Function Deployment. They implemented the method – Software Process Matrix - in two small software development companies in Limerick, Ireland. The paper discusses this implementation in one of those companies.

What is the Software Process Matrix (SPM)? The Software Process Matrix is a method used to establish an improvement strategy based on Quality Function Deployment. Strong, medium and weak relationships between practices and processes were identified through hypothesis testing of experts’ opinions.

Figure 1

Software Process Matrix

The values given to strong, medium and weak relationships are 9, 3, 1 respectively and on Quality Function Deployment charts they are normally represented by the symbols: l or ¥ (strong), m (medium), and D (weak). To use the Software Process Matrix, companies carry out a self-assessment of their software process and input the results. SPM outputs a prioritised action list showing the practices to implement. A sample of the Software Process Matrix is displayed in Figure 1.
 

Computer Craft Ltd.

Computer Craft Ltd is a software development company based in the mid-west region of Ireland. During the initial stages of the research, the company had two software development groups, one with responsibility for mainframe products, the other for personal computer products (PC development group). The mainframe group was no longer in existence at the completion of the research. Computer Craft Ltd. have a large number of customers, with a larger customer base in the U.K. than in Ireland.

Although Computer Craft started out developing business software itself, in recent years they partnered with a U.S. company, giving Computer Craft the rights to modify and install a software package (Data Organizer) developed by this U.S. company. There are two aspects to the modifications made to this product. Initially, the product was to be localized. For example, Irish and U.K. legislation had to be accounted for. It can also be customized for the needs of the user. If major changes are required by the customer this often becomes a separate module, programmed in Ireland, and retained as a generic feature. This varies from project to project. About 30% of customers require extensive customisation. The Computer Craft engineers install software directly in customer sites.
 

Research in Computer Craft

This was an action research project in Computer Craft. Employees were interviewed and observed in their work. Access to complete documentation on two projects was obtained. One project was developed in the initial stages of the research; the other was developed towards the latter end of the research. The four processes affected as a direct result of the SPM implementation are discussed in this paper.
 

Starting Scenario

Organisation Processes

Prior to the researcher visiting the company, there was no particular emphasis on software process improvement. There had been some work done on the development of standards within the software development group, but this was done on a personal level by the manager of the group rather than it being promoted within the organisation. The company employed a software quality assurance engineer whose main focus was on testing.

The fact that both the Group Managing Director and the Software Development Manager were willing to give employee time to the project is significant in itself. However, when recruitment difficulties arose, this project was given lower priority.
 

Customer Management

Customers were dealt with exclusively by the sales representatives in Ireland and the U.K. It was not normal for developers in the software development group to meet the customer until installation time. The flow of information between the customer and the developer was as shown in Figure 2.

Figure 2

Information flow between customer and developer

For customized product, the customer services project manager wrote up a requirements specification. There was no particular standard in use – "each customer services project manager identifies the need in their own way", and complete information was not always received from the client: "the client may not know how to address particular issues". Once completed, this document was signed-off by the customer and was passed to the software development group. However, there were cases where "questions were left unanswered" and "information was lacking".

When the software development group received the requirements specification, a functional specification was written. This specification was reviewed and accepted by the customer. Again, this was done through the customer services project manager. In the opinion of at least one software engineer, they could have "quantified what needed to be done" earlier in the project if someone from the development group met the customer. It was not uncommon for work on the functional specification to be stopped until the customer made decisions about their requirements.

Other difficulties arose with the functional specification, where there "were lots of things missing", "it was different to what was tendered". For example, one problem arose because the person whom the customer services project manager dealt with at the customer site was not the final user of the system. On another project, the software engineer assumed that all the information gathering had been completed for the requirements specification, but this had not been the case.

Customer requirements often changed as developers proceeded through the design stages. One developer stated: "There is a huge amount of information from the customer, but it is changing – moveable goalposts". When changes came from customers, there was no formal means of dealing with them. The difficulty faced by the group was that features not previously included in the requirements and subsequently the functional specification impacted the final project schedule.

During some projects, developers met customers at prototype stage, but this was more the exception than the norm, which was that the developer would meet the customer during installation. Not meeting the customer until late in the project caused problems in the development group. Developers found that "information useful to the design and development was gathered from the customer by the developer during the installation".

As with requirements specifications, there were neither standards nor templates for functional specifications within the company. One developer told the researcher that he wrote a "functional specification based on his own experience". Consequently, each engineer had their own format and layouts and sections within specifications varied considerably. However, when functional specifications were written, the decisiveness of the engineer was usually prevalent throughout them. For example: "The user will have the option to approve, reject or hold a transaction", "after review the user will have a set of transactions that are approved".

Developers sometimes found problems at later stages in development, such as system test and installation, which could have been avoided if requirements had been collected properly. This was a frustrating situation for the software engineers, particularly as they had deadlines to meet.
 

Implementation

Decisions about implementation of software were made by the customer services project manager. They needed to examine such issues as: could the product be installed? could it do the critical tasks? were there any show stoppers? or cosmetic bugs? The final decision was usually based on the answer to "is it a major concern if the software goes with this bug?" As there was no quality shipment policy defined, "there have been a few bad blunders". The quality policy only required that, prior to shipment, all software was signed off by three people and there was a stamp on delivery media.

Following test completion, the software was shipped to the customer services project manager who installed the software for the customer. In some cases the software development manager or software engineer helped with the implementation. When there were changes made during implementation the customer compared the product with the requirements specification, which was unambiguous where they were concerned. Software installation was done either from diskettes or a laptop computer.
 

Project Management

In Computer Craft, project deadlines were driven by the customer, giving the software development group no leeway or contingency on time. At the start of a project, the software development manager drew up an initial schedule, breaking this into defined phases and milestones, but these were not always adhered to. The main difficulties arose when a schedule was set, and then new features, which disrupted the schedule were added. The manager also drew up a Gannt chart for projects, which were usually kept up to date until the project was approximately 60% complete.

In the early stages of projects, the software development manager decided what were the critical tasks from the initial customer requirements, to whom these tasks were assigned and the time-scales involved. Software developers were often working on multiple projects and were seen by the manager as "a team working together". The software development manager was ultimately responsible for the completion of the project.

Group meetings were important within Computer Craft, mainly to keep people informed of progress on development projects. There were two general meetings held each week. One was a production meeting, attended by the two software development group managers (mainframe and PC) and customer services. This was followed by the software development group meeting, at which development tasks were scheduled and updates from the production meeting passed onto the group. Normally, two project meetings were also held each week.
 

Intervention using Software Process Matrix

Questionnaires on current performance were circulated to the software development group. The software development manager was questioned on current performance, planned future performance and importance to the company. Average current performance was calculated from the results received.

The overall importance of each process was calculated and an example is shown in Tables 1 and 2.
 
PROCESS
Current Performance
Planned

Future Performance

Improvement Factor
Software deliveries and installations
3.2
5.0
1.36
Establishment of project teams
2.8
4.0
1.24
Configuration management
3.4
5.0
1.32

Table 1

Rating Customer Requirements

For the process ‘Establishment of project teams’, current performance of 2.8 is the average score given by the software engineers on the self-assessment questionnaire. The planned future performance of 4.0 means that the software development manger wants to see these being established by applying an organisational procedure. The improvement factor in Table 1 is calculated as: 1 + (Planned Future Performance – Current Performance) * 0.2, giving, in this case, a value of 1.24.
 
 
PROCESS
Improvement Factor
Importance to the Company
Overall Importance
Percentage Importance
Software deliveries and installations
1.36
5.0
6.8
2.5
Establishment of project teams
1.24
4.0
4.96
1.8
Configuration management
1.32
4.0
5.28
1.9

Table 2

Calculating Overall Importance

The importance to the company value of 4.0 means that the software development manager stated that this process was of high importance to the company. As shown in Table 2, the overall importance was calculated by multiplying the importance to the company by the improvement factor. Percentage importance of each process is the overall importance stated as a percentage of the total overall importance in the Software Process Matrix.

According to the results the following were the top nine processes that were important to Computer Craft:

  1. Preparation and performance of deliveries/installations
  2. Systematic planning of project activities
  3. Preparation of the customer for new product release
  4. Systematic development and documentation of software code
  5. Systematic support of correct and efficient software
  6. Systematic management of customer needs throughout life-cycle
  7. Focus on markets and customer satisfaction
  8. Systematic planning of project work flow and estimates
  9. Systematic development and documentation of data definitions
To calculate the importance of each practice, the overall process importance was multiplied by the strength of the relationship between that process and practice, and these were totaled.
 
PRACTICE
Importance of the Practice
Percent Importance
Transform each software component into software units
175.2
1.0
Assign a person with software quality assurance responsibilities
252.0
1.4
Use evaluation list of approved suppliers
24.4
0.1

Table 3

Importance of the Practices

The importance of the practice was also stated in percentage terms, and those with the highest values were identified as those that would cause the greatest improvement to the software process within Computer Craft. Examples of practices are in Table 3.

The top ten practices proposed by using the Software Process Matrix as the basis for an action plan were:

  1. Identify this organisation’s product items
  2. Establish product baselines for each product supplied
  3. Verify all changes to requirements are monitored
  4. Specify and document system requirements
  5. Collect, identify, record and complete new customer requests
  6. Assign a person with SQA responsibilities
  7. Identify the initial status of the product
  8. Define delivery contents (media, software, documentation, documentation) to customer from subcontractor / software development group
  9. Define quality criteria and metrics for the project deliverables
  10. Assign responsibility for software development plan, work products and activities.
The software development group in Computer Craft were not willing to accept the actions at face value, and, at a group meeting, chaired by the researcher, there was a discussion as to what should be implemented and how this should be done. All of the practices identified by the researcher using the self-assessment questionnaire and the Software Process Matrix were included in the final action list defined by the company. They felt that some of them should be worked on together, and were not prepared to work on the actions in the priority given without some discussion. At the end of the meeting, the group had decided that the company should concentrate on these practices, combined into action items with the following priority:

Action 1:

Action 2: Action 3: Action 4: Action 5: Action 6:

Results

This section of the document discusses the processes in early-1999. Much of the discussion centres around the Banking Organiser project, the main project being worked on by Computer Craft in the latter part of 1998, to which updated software processes were applied. This project consisted of a series of software modules which extracted data from Data Organiser, outputting it in formats which interfaced with other software used in the customer company.
 

Organisation Processes

At the end of the research period, the software development group had reduced in size, and consisted of the software development manager, two software engineers and the quality assurance engineer. The emphasis which the company placed on quality assurance was still evident - when the previous quality assurance engineer had resigned from the company, he was replaced almost immediately, although the size of the software development group had decreased. However, the role of the quality assurance engineer had changed. While she had a responsibility for testing and test plans, she also was responsible for writing up procedures and for the improvement of the software process within the company.
 

Customer Management

The main project worked on by the software development group was Banking Organizer. In this project, the software development manager dealt directly with the customer. Initially, the customer produced a document listing their requirements. Following this, the software development manager spent some time on the customer site, met their project manager, and attended meetings about their requirements. The Banking Organizer project manager became the point of contact for the software development manager, who then passed requirements to the software developers. If the software development manager could not answer the software developers questions, then he talked to the project manager. As the project progressed, the developers had direct contact with the customer, and recognized that their customer was the company for whom the product was being developed.

Program specifications for this project were written by all members the software development group, all using the available template. The customer project manager examined the documents, and signed off on quotations generated from them. Specifications were passed between developers and all information needed by them was available in the specifications. The document history was updated on some documents the researcher examined, although she was told by the project manager that this was something he did not follow up on and the engineers did this "off their own bat". Failure to update specifications with all modifications from the customer caused some problems during testing.

The existence of guidelines ensured that specifications were consistent, and correspondence indicated that the customer was satisfied with the documentation she was receiving. However, one of the engineers stated that:

"the specifications were detailed – much more detailed than I have ever seen before, in one way this is a good idea, but sometimes you find problems later because the specification has been taken as gospel".

One section of the Banking Organizer project suffered from "feature creep". Because of this, the engineer working on the software found that changes which "should be easy but because of this are relatively difficult".

Implementation

The software development manager implemented the product following procedures which had been written up and experienced very few problems.
 

Project Management

At the start of the Banking Organizer project, the software development manager produced a table of the project phases and the time it would take to complete each phase. He also considered what personnel were required for the project, taking into account other projects being worked on within the company. Using an automated system, he created a project, showing planned project tasks, responsibilities and duration. Developers were expected to enter actual time spent on the project, allowing the software project manager to track project progress. One software engineer stated that "project management has improved" and consequently, the Banking Organizer project "was a tightly controlled project from the start". Project progress was updated on a regular basis, as he was now treating the software development group as a "business unit". Therefore, emphasis had to be placed on both income from customers and the cost of the group to the company.

Software development group meetings were held at the start of each week. At this meeting, the group reviewed the work done and action items closed during the previous week, the target for the current week, action items open, daily work done by individuals within the group for the previous and current weeks, and any off-site visits to be carried out during the current week. This allowed the group to be updated on the status of projects, and gave a formal forum for discussion around problems that existed on any projects.
 

Lessons Learned

Following the intervention by the researcher at the beginning of this research project, Computer Craft were to implement six action items based on the top 10 practices which had been identified from the Software Process Matrix as important for the company to improve on. Because a number of key personnel left the organisation left the company soon after these were identified, some of them were not implemented, including Actions 1 and 6.

The second action identified was a combination of setting up procedures to specify and document system requirements and to collect, identify, record and complete new customer requests. This action had been worked on with the development of a specification which included the requirements, functional and technical specification. They also improved their method of dealing with customers, meeting them early on in the development process, updating them on the project and clarifying requests with them. This ultimately effected the test of the product and its implementation. As this had such a positive effect on the processes within the company, it is important that this procedure is maintained for the future, and that the method of dealing with the Banking Organizer project become accepted by the organisation.

Setting up procedures to define delivery contents and to verify all changes to requirements are monitored once the requirements specification was signed off was the third action identified. Two procedures had been written – Installation procedure and Build Release to Customer Services – which covered the first of these. Using these procedures, the implementation of the Banking Organizer went smoothly, with very few problems. While not done formally, changes to the requirements were updated in the specifications when changes were made. This process would need to be better controlled in the future.

Action 4 required that Computer Craft assign a person software quality assurance responsibilities. This had already been done, but their responsibilities were not clear to them. The newly appointed quality assurance engineer, had taken testing as one of her responsibilities, consequently she wrote up detailed test plans and based these on the requirements specification. Her experience was lacking, and it was identified that she needed training to help her fulfill her role within the organisation. Nonetheless, the introduction of detailed test plans had helped the testing of Banking Organizer to be completed efficiently and effectively. A downside to this was that there was little emphasis placed on code reviews within the organisation, and it would be advisable for the company to re-consider this situation. Her other responsibility was the writing and approval of procedures, a number of which were written during the research period. The other practice to be worked on in Action 4 was to define quality criteria and metrics for the project deliverables. This had been partially done, but was not accepted as being an organisation practice.

The fifth action required a procedure to establish product baselines for each product supplied. This was not worked on. It also required that a procedure be set up to assign responsibility for the software development plan, work products and activities. While a procedure was not set up for this, the software development manager took this responsibility on board, and improved the project management within the organisation. This is reflected in the improvements evident in many of the project activities.

Of the ten practices identified, three were not completed during the research period. Another three had been implemented but not formalized with the organisation. It is important that this be done, as the evidence from the Banking Organizer project was that they have aided the improvement of the software process within Computer Craft.
 

Change in Organisation Processes

In Computer Craft, at the end of the research period, a number of procedures, specifications, guidelines and templates had been written in an effort to streamline the software processes within the organisation. There was still an emphasis on quality assurance and testing of the product. There was no interest shown in the attainment of formal recognition of the process as there was no market requirement for ISO9000 nor any other measurement such as the Capability Maturity Model or SPICE.
 

Change in Customer Management

Customer management had changed significantly during the research period in Computer Craft. Initially, the software development group had little contact with the customer, and regarded the sales representatives as the customer. In the Banking Organizer project studied at the end of the research, the software developers in Computer Craft had direct contact with the customer.. Comments from the software development group indicated that this way of working contributed to how well the final installation of the product had gone.

During initial research, there had been no procedures nor guidelines used for the collection and documentation of customer requirements. Documentation and collection methods varied between software engineers, even when they were working on the same project. By the end of the research period, a template for the program specification had been introduced, containing a section on requirements. This replaced the previous requirements, functional and technical specifications. Software engineers working on one project were providing and working from consistent information and the customer was satisfied with the output.

The existence and use of the specifications did not prevent "feature creep", but contributed to its reduction. Unlike the Data Function product, there were no modifications required after implementation of the Banking Organizer. Also, developers could code the system knowing that very few changes would be made.
 

Change in Implementation

In the initial stages of the research project, the customer services manager installed software within the customer company, at times involving the software development group. For the project studied at the end of the research period the software development manager carried out the implementation, and no problems were experienced. One of the difficulties faced by the company was that they did not specify what the release criteria for a product was. It had been discussed, and the feeling of one software development meeting, which this researcher attended, was that a release criteria stating the minimum amount that should be contained in a released product was needed. When asked a measure of failures being shipped, the Software Development Manager suggested that "one failure in every three is bad quality".
 

Change in Project Management

The focus of the software development group had changed throughout the research period. Schedules were set in conjunction with the customer rather than being dictated by the customer services group. Engineers were expected to give the manager feedback, and thus, he was able to keep a tighter control on the project.
 

Analysis of Change in Computer Craft

Overall, there many changes were made in Computer Craft during the research period. Probably the most significant of these was the manner in which the customer was dealt with. The software development manager worked closely with the project manager in the client company, and the group produced specifications which contained the customer requirements. Changes to these were discussed with the software engineer, modifications were normally made to specifications and "feature creep" was not prevalent on the project. This in turn improved both the testing and implementation of the product.

The implementation of the practices as identified when using the Software Process Matrix was partially responsible for the improvements in Computer Craft’s software process. However, without management support for the project, particularly when the company was going through recruitment difficulties, the identification of the practices alone was not sufficient. It was important that the exercise was followed through and the practices were implemented within the organisation. The software development manager recognized that changes were required and used the Software Process Matrix as a basis for identification of the most relevant changes.

The company has not identified any market requirement for the implementation of any particular standards such as ISO9000 or for being assessed using SPICE or the Capability Maturity Model. It is possible that customers may look for this in the future, and the company is now better placed for proceeding with such actions.
 

Authors

Ita Richardson received a B.Sc. in Applied Maths from NIHE, Limerick, in 1983, an M.Sc. in Maths and Computing from the University of Limerick, in 1993. She has held the CPIM from the American Production and Inventory Control Society since 1986 and was awarded a Certified Diploma in Accounting and Finance from the Chartered Association of Certified Accountants in 1993. She is also a member of the B.C.S and a Chartered Engineer.

She worked with Wang Laboratories, B.V., Limerick for 8 years until 1991, where she was mainly involved in Programming and Systems Analysis of systems used in the manufacturing plant production, Materials (including MRP), Distribution, Financial, and Personnel. In latter years, she also had responsibility for the maintenance of Systems Standards, and training of Programmers and Analysts.

Her M.Sc. project was a Simulation of the Automatic Storage and Retrieval System used in the manufacturing plant. Her current research involves the investigation of Quality Tools, particularly Quality Function Deployment, and how they can be applied to the software development process.

She was appointed to lecturer in 1998. Her PhD research is in the application of Manufacturing Quality Techniques to Software Process Improvement in Small Software Development Companies. She is a founder-member of the Small Firms Research Unit at the University of Limerick, whose research is specifically concerned with the growth and development of small firms.

Kevin Ryan received a B.A.I. in Engineering in 1971 and a Ph.D. in Computer Science in 1978 all from Trinity College Dublin. His Ph.D. was concerned with the simulation and optimisation of bus scheduling operations. He lectured in Computer Science at TCD in 1972 before working as programmer training manager for RCM Ltd. Zambia where he recruited and trained the first Zambian programmers. In 1979 he was on the faculty of the University of Kansas before rejoining Trinity College Dublin in 1980. He spent 1985/86 as a guest researcher at Linkoping University. In 1990 he became Professor and head of the Department of Computer Science and Information Systems and, since September 1994, has been Dean of the College of Informatics and Electronics.

He has published papers on simulation, programmer training, software methods, expert systems, natural language processing and requirements engineering. His current research interests include systems design methods, knowledge-based software development is currently involved in the EU funded network of excellence in Requirements Engineering (RENOIR).

He has acted as Evaluator for the EU and as external examiner for universities in Ireland and the UK.

He has lectured on Programming Languages, Program Design Methods, Business Computing, Data Structures, Operating Systems, Social impacts of Computing, Software Engineering and Artificial Intelligence.
 
 

Computer Craft Ltd.

Computer Craft Ltd. was established in April, 1984 to develop software for use in specific business functions. The original entrepreneur, himself a software engineer, is the Group Managing Director and is no longer involved in the development of software. The company, based in the mid-west region of Ireland, employs 16 people in the Irish office and in a sales office in the U.K. Of these, the software development group of 4 people is based in Ireland.

References

[1] Peterson, Bill, Transitioning the CMM into Practice in Proceedings of SPI 95 - The European Conference on Software Process Improvement, The European Experience in a World Context, 30th Nov-1st Dec, 1995 Barcelona, Spain, pp. 103-123.

[2] Draper, Lee, Kromer, Dana, Moglilensky, Judah, Pandelios, George, Pettengill, Nate, Sigmund, Gary, Quinn, David Use of the Software Engineering Institute Capability Maturity Model in Software Process Appraisals, output from CMM v2 Workshop, February, 1995 Pittsburgh, Pennsylvania, U.S.A.

[3] Peterson, Bill, Software Engineering Institute, Software Process - Improvement and Practice, Pilot Issue, August, pp 68-70, 1995.

[4] Debou, Christophe, Kuntzmann-Combelles, Annie, Linking Software Process Improvement to Business Strategies: Experiences from Industry in Proceedings of SPI 98, The European Conference on Software Process Improvement, 1-4th December, 1998, Monte Carlo.
 

Recommended Reading

Further reading on Quality Function Deployment:

[1] Clausing, Donald, Total Quality Development, ASME Press, U.S.A., 1994.

[2] Cohen, Lou, Quality Function Deployment, How to Make QFD Work for You, Addison-Wesley, U.S.A., 1995

[3] ReVelle, Jack B., Moran, John W., Cox, Charles A., The QFD Handbook, John Wiley & Sons Inc., U.S.A., 1998.

Further reading on the Software Process Matrix:

[1] Richardson, Ita, Quality Function Deployment - A Software Process Tool? in Proceedings of the Third Annual International QFD Symposium, Linkoping University, 1st-2nd October, 1997, Linkoping, Sweden, pp 39-49, Volume 2.

[2] Richardson, Ita, Using Quality Function Deployment to Develop Action Plans for Software Process Improvement, Proceedings of the 10th Software Engineering Process Group Conference (SEPG ’98), 9th-12th March, 1998, Chicago, U.S.A.


Partners in EuroSPI

Editors
ISCN LTD, ISCN GesmbH, Schieszstattgasse 4/24, 8010 Graz, and Coordination Office, Florence House, 1 Florence Villas, Bray, Ireland, office@iscn.at, office@iscn.com, office@iscn.ie, Editing Done: 19.7.2002