Software Engineering

Software Engineering is a discipline where engineers follow a well-defined process to do their works. They establish quality goals, define methods they will use, measure their work, analyze the results, and adjust their methods to better meet customer requirements. The basic idea is that if you want a quality product, you must have a quality process that creates the product. Software Engineering discipline is not new but it is not taught in many universities because it requires that people who teach it must have process knowledge from industry. Since most professors do not work in industry, or receive training in business process, they do not want to teach it.

Today most universities only teach people to be programmers with different languages as their tools. Students spent three to four years learning computing languages but when they go to work, they find that the development of software products is a process where programming is only about 20% of the efforts that means they can only do a small part of the total product development. This explains why most large companies in the U.S and Europe do not hire people with Computer Science major anymore.

Kipkis.com-software-engineering.png

Software Engineering program provide students with the training necessary to engineer the software process through use of techniques, establishing the best methods for defining requirements, data collection, defect prevention, metrics, estimating lines of code, total cost of quality and other techniques that would assist the engineer in developing quality software product. The terms process and process management are now firmly established in every major business but many people still do not understand about the real meaning and important of these terms.

To put it in perspective, a business process is an organized group of related activities that together create a product or a service that bring business value. A software process is a set of activities that when effectively integrated will resulting in a quality software product or services that meet customer’s expectation. Processes represent a new perspective on organization’s work. They create an outward focus because it directed toward meeting a business outcomes such as meeting what customer want. By following a process, software engineers understand the effects of their own activities on others and on the customer. They work with an appreciation of the process of which they are a part, for the result they are helping to produce, and for the customer for whom they are producing it. They take responsibility for the outcomes; they do what the situation requires rather than what the boss has told them.

To manage software engineer effectively, a good manager need to understand the basic concept of Process Management:

  • Defining the process first, then the project structure later.
  • Encouraging discussion on processes and encourage suggestion for process change from the people who follow the process, because they know what works and what does not work.
  • When thing go wrong, focusing on fixing the process, not blaming the people because they only follow the process.
  • Set goals for product quality and project performance then managing the process to get the desired results.
  • Focusing on defect prevention by causal analysis and process revision
  • Conduct weekly project management review of project metrics

Senior managers must review project performance using standard metrics on a periodic basis (Weekly and Monthly). All managers must understand the metrics and expect to see them. Problems are always attributed to weaknesses in the process, not blamed on individual performance. Nonconformance (Not follow the process) is “punishable”, but not poor performance — poor performance is seen as a skill problem, requiring additional training. All individuals are expected to suggest process improvements and contribution to process improvement is an important criterion for promotion. Instead of fixing defect, we must focus on defect prevention. Defect prevention techniques focus on eliminating defect “escape” paths through the process phases. 

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University