Can you advise on how to succeed in software process improvement?
Can you advise on how to succeed in software process improvement?
Answer:
The first step in effective process improvement is changing the behavior of the managers and developers. As software engineer, you can support the change but real change only happens when manager adopt a new attitude toward improvement.
The question is how to get software developers to do things that do not directly relate to the delivery of software products? This is a difficult problem for many reasons. First, developers are always busy. Second, they may not understand what you want them to do or why. And third, they may not believe that what you suggest will help them do their jobs.
Therefore, the most important thing is to get management to behave differently. This is why we need to explain to the management the risks of not improving so they can realize the urgency. If they are willing to live with the consequences of a chaotic process and the risks, then nothing will change.
Here are some suggestions that you may find useful:
- 1. Make sure that management recognizes that process improvement is their responsibility. If the developers do not participate in or actively support process improvement, it will not happen.
- 2. Get an agreement from management on a few critical actions to accomplish first. I suggest one small change at a time. Do not try to do something as vague and meaningless as “Getting to CMMI level 5”. To make progress, you need to focus on something useful, practical, such as software inspections to remove defects. This action is measurable if you set a baseline first. You must collect number of post-released defects and number of defects found during product inspection.
- 3. You need to make sure that everybody knows their responsibilities. It would be a good idea to get these in writing.
- 4. Establish an operational plan, keep it simple and with checkpoints (Weekly status) and resources identify clearly.
- 5. Demonstrate what is involved in getting just one change accomplished. You can do this with progress report to management and make sure to include a schedule and resources commitments. These will help everybody realizes what is involved and how long does it take
- 6. Make a big deal out of success. Periodically identify real achievements, credit the people responsible by name, and publicize their accomplishment. However, you must be humble and stay out of the recognition process, your job is to coordinate improvement and make it happens. This will build enthusiasm among developers and demonstrate progress. Once the momentum is going, it is hard to stop and you will be well on your way.
- 7. The key to process improvement is making a lot of small and simple process changes. The major benefits from most changes come from a few actions. Do not make big change, you will not be successful. Remember the question “How does one eat an elephant?” Answer: “By several small pieces”.
- 8. Remember to provide just enough information so people know what to do and when. Try it in small project, get some feedback from project people who use the improve process then refine it based on results. You probably have to train people and will certainly have to help them get started because improvement is a learning process. You will learn a great deal more from implementing changes than from planning or talking about it. Learn from practice not opinion, so before having others to change, you must change yourself first.
- 9. If management does not assign developer to work on improvement tasks, go to the senior management and make it clear that without the participating of developers, process improvement is a waste of time and money. Under these conditions, either senior management must step in and helps, or you will have to look for a job elsewhere.
- 10. If senior management refuses to handle the problem, they are not truly convinced of the need for improvement. Regardless of what they say, you need to stop or discontinue the effort until you have their attention. Do not waste your time. The idea is to get one quick success, with solid improvement data then the rest will fall into places. Remember, change takes time and you must have patience.
Software process
The process of a company is the most important success factor in any business but it is critical in software. Software process consists of activities, procedures, methods, tools, goals and principles that guide the behaviors, and decisions of a software group. When people share a common goal and follow the process, they can increase their effectiveness and have better chance for success.
All successful organization requires that people both do the right thing, and do the thing right. I know many software engineers do the “thing” right because they are trained to follow a defined process but doing the right thing requires an understanding of what the customer expects.
Project manager must work hard to increase the involvement of customers in the development activities because the failure of most software projects is that the product does not meet expectations of the customer. To reduce this problem, every project must go through formal requirements reviews by preparing an explicit, consistent, review that clearly identifies all the functions that must be contained in the final product to meet customer’s expectations.
During architecture phase, the project manager must identify specific quality factors such as security, usability, extensibility, portability, reliability, and performance. By identifying these factors the project manager must think about them ahead of time, rather than waiting until the system is delivered to the customer and let them disappointed because an important need was never implemented.
At the end of every development phase, the project manager must conduct inspection by a group of people from quality assurance and one outside person who has no specific involvement in the project. The outsider can be someone from a different software group who can critically evaluate the performance of the project from an unbiased perspective. Defects identified during the inspection are recorded for corrective actions and manager must check to make sure that they all fixed before continue to the next phase.
In software, quality is very important. The time invests to build a quality product is much better than the time to fix defects and most customers are willing to wait a little longer to get a better product that will help them do their work correctly without wasting their time through failures and fixing defects.
After deliver the product to customer, most company will also provide maintenance service. Typically, maintenance phase can be classified into four categories: corrective (fixing defects), perfective (enhancements), adaptive (modifications in response to a changing environment), and customer support. By having a quality product, company can reduce the time that is needed for corrective maintenance and more time to support the customer. Every hour people do not spend fixing defects is an hour they can spend
implementing something new to help customers. The better we support the customer, the more satisfaction they are and the better business for the company and for people who work there.
What is a process?
A student wrote to me: “I do not understand the term “Process” and why do we need to follow a process in software development? What is continuous improvement?”
Answer: A process is an organized sequence of activities to complete something. For example: A software project. In this case, a project is the application of resources to that process. Resources are people, tools and techniques that you apply when following a process. The term “people” also indicates the skill and experience of the team members. A Sequence is the order in which things are accomplished. The term “order” means you must follow it “step by step” according to a rule. For example, you must understand the requirements before start designing; only when design is completed then you can start coding etc.
A process is represented by three factors: Efficiency: The relationship between resource use and accomplished results. Cycle Time: The “speed” of the process, i.e., the time it takes to complete a process. And Quality: The quality of the process as defined by users such as meet requirements, have no defects etc. The combination of these three factors defines the capability of a team or an organization. A continuous improvement is the changing or upgrading from lower capability to higher capability.
Without proper training, software developers will do whatever they want just to get their works done. Since software development is a “Teamwork” activity, not individual activity, it is important that all team members follow certain rules such as following a “Defined process” for that project. The project manager must identify the “Defined process” in the project plan and monitor activities to ensure that team members are following it to get the desired results such as efficiency, quality and speed.
One of the major issue in computer science training is students have a tendency to work in isolation. Typically, each is given a problem to solve, a program to code, and each is graded according to individual achievement. When students go to work, each will continue to do whatever possible to get their jobs done, just like when they are in school. Without an understanding about teamwork by following a process, many projects will fail to deliver software to customers within schedule and with quality. Many projects are often late and with poor quality. They fail because the lack of coordination and teamwork that allows team members to work together. They fail because some members hurry to code without really understand the requirements. They fail because there are too many changes in the projects that come late and there is no process to handle changes. They fail because project managers do not know how to plan, to organize, or to estimate the time, schedule and effort needed to complete the project.
A defined process is a roadmap for the project. It require team members to follow the “road” step by step. Each step has a clearly defined roles and responsibilities for each team member. When changes happen, the roadmap clearly identify who is doing what so the team can get their works done with efficiency, quality and meeting project schedule (Speed).
Process
Last week, one student told me: “Software is so complex and it is impossible to remove all defects. The more I tested software, the more defects I found and the more I fixed those defects, the more defects appeared”. I understand his frustration because it is not possible to remove defects based on testing alone.
I work in an aerospace company and I can tell you that an aircraft is a complex hardware and software systems. Although no one can prove that the aircraft has zero defects but our company does take full responsibility for any defects. However, we do not rely on product testing to remove defects because we know that testing is very expensive and ineffective way to eliminate defects. We focus on following a well defined development and manufacturing processes, we use measured procedures and statistical methods to build everything corrected from the beginning. Of course we do test our products but testing is the last resort to ensure the products are of very high quality.
My question is why software industry can not apply what the manufacturing industry has been doing for years? That brings me to another fundamental question why software people are not taught about software process? Why most universities are still teaching students about programming languages and testing but not the process of develop software?
Process is a sequence of steps performed for a given reason. Process integrates people, procedures and tools to create a final product. The product can be an aircraft, a car, a mobile phone or computer software. Process is what people do, using procedures, methods, tools, and equipments to transform raw materials such as wood, metal into a product such as a house, a car. A software process is a set of steps (including procedures, methods and tools) that people follow to develop software product. The key concept here is that the quality of the product is determined by the quality of the process used to develop it. So when the product has defect, you must go back to the process and identify what is the cause, where does it happen in the process and fix it so it will not happen again. By apply statistical method to measure every process steps, engineer can effective create a range of expected results that can be achieved by following a software process. By continuously improve the development process and remove the cause of defects, a software engineer can produce software product with much fewer defects. I am carefully not to say “Zero defects” here because it is difficult to prove it but software with much fewer defects is better than software full of defects.
The concept of process is the key element in a new software curriculum called Software Engineering. In this field, students will learn the application of a disciplined and quantifiable approach to the development of software. This discipline consists of knowledge, tools, and methods for defining requirements, architect a software system, design and implement software products, conduct testing and verify that the product meet requirements. The philosophy of this discipline is software quality is the responsible of software people who create the software product. However, if software people do not improve their skills, do not distinguish between the “engineering of software” and the “programming of software” then the software industry cannot go very far. As long as software people insist that quality is not their responsibility, quality cannot be improved.
(voer)
More:
- How to copy and paste a website address on an Android smartphone
- Bring your own device (BYOD)
- 50 Top Open Source Marketing Applications
- Find better care for your whole family
- AOL SMTP configuration
- 20 Open Source Ecommerce Platforms
- 10 Premium Real Estate Classifieds Scripts
- How to use social media to create business value?
- 6 of the Best Free Open Source eCommerce Software Solutions
- The Top 10 Open Source eCommerce Platforms
- How To Delete, Move, or Rename Locked Files in Windows
- Bitcoins and Blockchain – What Are They?