In most systems, software is the overriding component in terms of cost and complexity. Good software engineering practices and tools can therefore make a substantial difference, even to the extent that they may be the driving force of the project success.
The term of Software Engineeing first appeared in the 1968 NATO Software Engineering Conference and was meant to provoke thought regarding the current "software crisis" at the time.[1]
Software engineering is concerned with "creating high-quality software systems in an efficient and predictable manner" — without firm definitions of what high-quality, efficient and predictable mean. The results of the study of software engineering are heuristics for success that ought to work, most of the time, if nothing unusual happens. The methods of the field include empirical learning, policies and procedures, and people skills. [2]
In short, Software Engineering helps in creating software that is of higher quality, cheaper, maintainable, and quicker to build.
Software Engineering will provide:
- Quality assurance for a software.
It sets the acceptable minimum level of quality of a software. By other words, it will assure that the softwares will be above the minimum acceptable standards.
- Productivity.
Increases the productivity of a particular software development project. For example, it will help a programmer to write more lines of codes.
- Tools.
Software Engineering provides tools for developers to develope softwares such as CASE Tools and Project Manangement. This will help to manage the development work.
- Methods.
Provides various methods for the developers that will help to improve the productivity and make the development more efficient and effective. Examples of methods that Software Engineering provides are Requirements Engineering, Software Design, Coding, Software Testing, Software Reverse Engineering, Software Re-engineering, Software Profiling, Software Performance Tuning, Code Generation, Software Project Management, Software Risk Management, Software Reuse, Software Configuration Management and so on. [3]
Though by the fact above proven that Software Engineering can help in Software Development, some people, including professionals consider Software Engineering to be unhelpful, even useless. Thus, there are not much articles published about the importance of Software Engineering.
- Software engineering is simply at an early stage of development.
- Software engineering happens to be hard.
- The gains to be had from any new knowledge about this subject are huge.
- There will be no standards for minimum acceptable quality for softwares. Thus alot of low quality softwares will float around.
- Slow productivity of the softwares.
- There will be no specific tools for the developers to use to develope quality softwares for the end-users.
- No existence of methods for the developers to use to improve their productivity.
------------------------------------------------------------------
Software Development Problems.
In developing softwares, software developers will face a huge pile of problems. To make is worse, some developers do not even recognize the problem until the last stage of development, even after distributing the software.
There are many symptoms that can be seen that indicate the problems in software development such as inaccurate understanding of end-user needs, inability to deal with changing requirements, modules that do not fit together, software that's hard to maintain or extend, late discovery of serious projects flaws, poor software quality, unacceptable software performance, team members in each other's way, and there is an untrustworthy build and release process. [4]
By looking at these indicated symptoms, developers should know that the Software Development has problems. One of the major problem in Software Development is users are not very clear in regards to their exact needs. Most of the specifications given to Software Development Outsourcing vendors are rough and very sketchy. This will lead to misinterpretation of customer commucations, thus will drive the developers to produce softwares that do not fulfill the customers’ needs.
That is not all, other problems in Software Development are :
- Due to some problematic ambiguities Offshore Software Outsourcing service provider are not in good position to understand the better scope of development work. [5]
- Error in Data Representation.
- Problem in translating programming language, or called Programming Language Translation. For example, translating from C++ Programming Language to Java. [3]
------------------------------------------------------------------
How Can Software Engineering Help Solve Software Development Problems.
By now we know the importance of Software Engineering and Problems in Software Development. By combining these two facts together, we will know that Software Engineering can definitely solve problems in Software Development.
This is proven by the fact that Software Engineering provides tools and methods for the developer to use in developing software thus will help solving the problems.
Let us look in depth in this matter:
- It is been said that the main problem of Software Development is incomplete or erroneous specification given by the customers and this leads to misinterpretation of customers’ needs. Software Engineering provides methods, one of them that can be related to this problem is Requirement Engineering; it is the process by which the requirements for softwares are gathered, analyzed, documented, and managed throughout the SE lifecycle. By this, the developer will look closely in the requirement stage, including to fully understand the customers’ needs. This will prevent the misinterpretation to be happened. [3]
- Another problem in Software development is Programming Language Translation. Any developer will face this problem when they plan to move from one programming language to another, let’s say from C++ to Java. Without tools, this work is tideos and of course will cause problems. But in Software Engineering, we have tools and methods for this matter. The developers can use one of the CASE tools to solve this, for example.
------------------------------------------------------------------
References
- Wikipedia : Software Engineering. http://en.wikipedia.org/wiki/Software_engineering
- Pierre Bourque and Robert Dupuis, ed. (2004). Guide to the Software Engineering Body of Knowledge - 2004 Version. ISBN 0-7695-2330-7.
- Lecture Slide of CSEB233 Sem 2 2008/2009. By Prof. Khairuddin.
- Symptoms of software development problems. http://www.devdaily.com/java/java_oo/node6.shtml
- Common Problem in Software Development Outsourcing. http://www.outsourcing-weblog.com/50226711/common_problems_in_software_development_outsourcing.php



