Software Engineering and Computer Science
A first year student asked me: “Why some people call the training program “Software Engineering” but other call it “Computer Science” which one is correct? Why different names?”
Answer: There are several differences between “Computer Science” and “Software Engineering”. Please read previous articles in the SEGVN website. To understand why there are different names we need to go back in history. About sixty or seventy years ago, when computer was still a new invention, only few scientists could use them in the laboratory. At that time, hardware was the most important thing and programming was very difficult to learn. Scientists who program the computer did not follow any methodology but just “do something” that make the computer work. Coding and testing were the main activities and the field was named “Computer Science”.
During this time, due to high demand of people to program computer, universities began to open new department to train software developers for a degree called “Computer Science”. Because this was still a relatively new field, most people who taught computer were mathematic professors, the training program was heavily focus on mathematics.
As computer was “commercialized” to be used in industry, more computers were needed, more computer companies were founded and competition were fierce. With advanced electronic technology in manufacturing, computer hardware costs were going down and no longer the most important asset. On the contrary, software became more important to make computer performed more specific functions. At that time, there were very few proper development approaches, a majority of works were still in coding and testing. Most applications were developed at a very high cost and took longer to build. As software size was getting larger and more complex, many applications were difficult to maintain. Because of the large size of million lines of code, defects were impossible to fix which caused significant high failure rate. As more companies were depending on computer for automation, defects in software applications created lost of several million dollars each year. The situation was called “The Software Crisis”.
The ‘Software Crisis’ was a turning point that made people think seriously about the software development processes. The industry demanded certain solutions to be applied to ensure successful, cost-effective software implementation. Many people began to think about new ideas of systematic development of software that can be deliver on time, on schedule, with high quality and reasonable costs. During this time, many approaches were invented and contribute to the modern and advanced thinking of an “Engineering solution” to the software development process. Engineering is a discipline that exist a long time, it focuses on the application of scientific principles such as logical thinking and designing to practical ends such as building bridges, roads, mechanical machines with significant efficiency and effective. By apply “Engineering principles” to the development of software, a new field was created called: ‘Software Engineering’.
Software Engineering advocates a systematic “Life-cycle” approach in all software development. It shows that software can be built following several phases with guidelines, techniques, and tools to ensure the successful completion of the project. There are many Life-cycles for every needs such as ‘Waterfall Model’, ‘Spiral Model’, “Incremental build”, etc. to make it easier to develop and manage the software. These approaches also help managers understand problems which occur during the development and what to do to solve them. The engineering principle also dictates that the quality of the software product is determined by the process that create the product. By focus on the quality of the process, we can have a higher quality product.
As software became more important in every industry. There were significant higher demands for software engineers and some universities began to offer a new degree called “Software Engineering”. Most people who taught this field were engineering professors so the training program was heavily focus on logical thinking, problem solving, and development process. Since then, software engineering degrees have been established at many universities. Most training programs [update]teach both computer science and engineering principles and practices. The first software engineering Master’s degree was established at Seattle University in 1979 then Carnegie Mellon and Stanford have established themselves as having the best training programs.
Since then software engineering degrees have been made available from many more universities across the world. In Asia, it is still a relatively new field because the traditional academic is slow to adopt changes. In late 1990s, S. Korea was the first country that adopted the software engineering training program, following by Japan and India.
Traditionally, most software people called themselves programmers or software developers. However, in the U.S and Europe, the term “programmer” has often been used to refer to people without the degree or proper education, who are trained from vocational schools for few months and cannot do good quality works. In response, many software people called themselves software developers or software engineers to avoid being “called” programmer. In many U.S companies, the titles software developer refers to people who has a computer science degree and software engineer refers to people who has a degree in software engineering.
Sources
- Blogs of Prof. John Vu, Carnegie Mellon University