Soft Audit overview・Purpose 1: Audit to determine development capability

03/08/2018Audit for soft-Develop..

The three purposes of software development audit are to judge development ability, improve development ability, and ensure software quality.

Software development audit is a mechanism that Gutara’s father arbitrarily created as a method for evaluating and improving the competence of software development contractors , in other words, development process quality and product quality, the top page of this category. Introduced in. I don’t think you can understand what this is all about, so in this article, I will introduce a little more specific software development audit along with the following three purposes of software development audit.

  1. I want to know the software development capabilities of the development contractor (the implementation time is when the contractor is selected)
  2. I want to improve the software development capabilities of the development contractor (Implementation time is after the contractor is selected
  3. I want to ensure the quality of the bug countermeasure software (Implementation time is before the release of the countermeasure version software)

Auditing for the purpose of knowing the first ability is the time when the development contractor is selected . There are several candidates for development contractors, and when deciding which company to outsource development to, it is necessary to know the software development capabilities of each company, so we will conduct a software development audit for that purpose.

The second purpose of auditing for the purpose of improving competence is when the development contractor has already been decided and software development is progressing at that contractor . In order to have better software delivered, if there is a shortage in the test items, we will ask you to add an item, if there is a shortage in the development and quality management method of the contractor, we will improve it, etc. The purpose is to promote the improvement of process quality. To that end, we conduct software development audits to identify problems with development contractors and have them take countermeasures.

The third purpose of auditing for the purpose of ensuring the quality of the defect countermeasure version software is when the software developed by the development contractor has a potential bug and causes a defect in the market . Before releasing a bug fix version of the software that fixes the bug that caused the problem in the market, whether the bug fix method is correct, whether the fix is ​​effective, whether similar problems remain, etc. We will perform a software development audit to confirm and confirm that the bug-fixing version software has sufficient quality.

For a concrete introduction to the actual software development audit, please refer to the article titled “Software Development Audit / Practice" if you are interested in the details. Let’s take a closer look in turn.

1. 1. Software development audit to know the software development ability of the development contractor sees the ability of the engineer

When choosing a software development contractor, how and what does your company research and choose? I think that you make a comprehensive judgment by collecting various information such as estimated amount of money, company history, past consignment results from your company, consignment results from other companies, product fields that you are good at, and so on .

When outsourcing the production of mass-produced products to an OEM, it is easier to set selection criteria than outsourcing software development. To put it roughly, the manufacturing capacity of mass-produced products is as follows: (1) Is the performance of the manufacturing equipment sufficient ? And ② Is the manufacturing control ability sufficient ? It is decided by two things.

Since it is the manufacturing equipment that manufactures the product, whether or not the manufacturing equipment owned by the contractor has the performance required to make this product can be determined by looking at the specifications of the manufacturing equipment. increase. After that, if you check the manufacturing control capacity to operate the manufacturing equipment correctly by using a method such as ISO9001 second-party audit, you can roughly grasp the manufacturing capacity. If you can determine whether you have sufficient manufacturing capacity for the product to be outsourced, it is unlikely that you will make a mistake in selecting the outsourced manufacturer.

However, the situation becomes a little more complicated when outsourcing software development. The reason why it becomes complicated is that it is the “people" called software engineers who develop software equivalent to the production of mass-produced products . And the ability of software engineers, which corresponds to the performance of manufacturing equipment, varies greatly depending on the “person." The ability of a software engineer is not something that can be clearly understood like the performance of manufacturing equipment, so the skill cannot be understood without various ingenuity.

Even in software development, it is necessary for the organization that carries out the development to have development management capabilities such as process control and quality control . However, the development management ability can be judged to some extent by looking at the quality of the management process using methods such as ISO9001 and CMMI , similar to the manufacturing control ability of mass-produced products . 

In this way, it is difficult to understand the capabilities of software engineers, which are important in determining software development capabilities, so it is difficult to understand the capabilities of software development contractors.

Why is the ability of software engineers difficult to understand?

So why is it difficult to understand the capabilities of software engineers? Again, let’s think about it in correspondence with the manufacturing equipment. If it is a manufacturing equipment, if the equipment is properly maintained , the performance described in the catalog will be exhibited. For example, a manufacturing facility with a processing capacity of 1000 pieces per hour can produce 900 to 1,100 pieces per hour, even if there is a fluctuation of about 10% if it is operated correctly. If you look at the capacity of the manufacturing equipment, the manufacturing capacity of mass-produced products will not make a big mistake, even if there are some fluctuations.

However, it is generally said that the capabilities of software engineers are about 15 times larger . In fact, my father Gutara has also measured the abilities of software engineers working at his company, but it did not go up to 15 times, but there was a difference of about 5 times. Compared to the performance of manufacturing equipment, the degree of blurring is more than an order of magnitude larger . With such a large amount of blur, it becomes difficult to even make an appropriate plan. Even so, if we can know the abilities of each software engineer with a certain degree of accuracy, it is still quite good.

But the trouble is that there is no good way to know the capabilities of a software engineer before outsourcing development . There are qualification exams such as the Information-Technology Engineers Examination, but all of them only measure the presence or absence of knowledge. But what is really needed in software design and implementation is the wisdom to use knowledge to find solutions . The presence or absence of this wisdom greatly affects the ability of software engineers, but unfortunately there is no way to quantitatively measure the magnitude of this wisdom.

If it cannot be measured quantitatively, can it be measured qualitatively?

So what exactly did Gutara’s father look at in the software development audit to determine whether the company’s software development capabilities were good or bad? 

Actually, it’s “intuition" . .. ..

Hmmm, this article ends here. .. .. .. As expected, this is a little strange, so let’s continue talking a little more. 

The ability of software development is estimated by the ability of the team leader through the software development audit.

What Gutara’s father saw in the software development audit was the ability of the team leader of the development team who is supposed to be entrusted with software development . Actually, it is better to judge by looking at the ability of each team member, but it takes too much time and it is impossible, so I decided to judge the ability of the development team by looking at the ability of the team leader. rice field. 

Comprehensive software development experience, basic but wide knowledge of languages ​​and CPUs, deep understanding of software architecture, recognition of the importance of test design, development management ability, leadership to organize development teams, and various aspects If you look at it, you can see the ability of the team leader. 

However, in order to assess the ability of the team leader, assuming a variety of scenes, when a certain degree on various issues that are required in the software development discussion with the partner over between you need to. We used a technique called software development auditing as a means of conducting this discussion.

If the other person is Japanese, the ability of that person can be roughly understood after discussing for 4 to 5 hours. If the other person is not Japanese, it will take about one and a half to two days because there are language and cultural barriers. However, if you spend that much time talking about software development development management, design / implementation technology, and test technology, you can see the abilities of the other party. However, in order to know the ability of the other party in 4 to 5 hours of discussion, it is necessary to discuss from various perspectives, so we created a checklist for software audits and the development process of the current development team We have made it possible to have a wide range of discussions while concretely confirming problems related to development technology, test technology, etc.

Is it okay to outsource if the team leader has a high ability?

Of course, the ability of an organization to develop software is not determined solely by the ability of the team leader. However, in the experience of Father Gutara, the ability of software development is determined by the quality of the development process of the organization 20%, the ability of the team leader 50%, and the average ability of the team members about 30% . ..

Most software development is done in the minds of software engineers. In many cases, the team leader conducts a design review or code review to check whether the design document or source code that is the product of the development work is good. Of course, it is often the case that the team leader cannot carry out all the reviews by himself, so the sub-leader may carry out the reviews at that time. However, it is the team leader who determines the frequency and level of design and code reviews within the team. It is also the team leader who uses the development process as a tool to lead the development to success without being swayed by the development process set by the organization .

In this way, even if we think that the ability of the software development team is determined by the ability of the team leader, it is the conclusion from the experience of Father Gutara that there is not much deviation. 

Therefore, when selecting a software development contractor, if a software development audit is conducted to determine whether it is okay to outsource the development to that contractor, Gutara’s father is the development team leader. I tried hard to estimate my abilities and decided whether it was okay to outsource based on the results.