What is Software Engineering?
The engineering field has taken on many new disciplines as our scientific knowledge has grown. The latest discipline is software engineering. According to the Institute of Electrical and Electronics Engineers (IEEE), software engineering means applying the principles of engineering to the software development field. Software engineering differs from other branches of engineering in that professionals are building an intangible structure and not a tangible one. Since software is embedded in the machines used in various industries, though, malfunctioning software can actually have tangible effects. With software used in everything from medical equipment to airplanes, the end result of faulty software can indeed be loss of life.
Software Engineering is applying the principals of engineering to software development. ~ Institute of Electrical and Electronics Engineers (IEEE)
Even non-embedded software impacts many areas of our lives. We routinely trust software with our financial information and passwords. We use it to run our businesses and conduct our work activities. Yet it’s far from foolproof. There may be hackers or system overloads. Then there are the times that the software works from a technical standpoint, but fail to give a good user experience. Too often, routine software is designed from a “code and fix” model when sounder principles at the front end would alleviate problems. Here, too, it’s important to have a thorough grasp of the purpose of the structure and of the many things that structure may be called upon to withstand.
Software engineering often does involve writing code, but this is only one stage in the process. True software engineering has a well-articulated life cycle.
The Software Engineering Process
When software projects require engineering, the process begins long before the product is designed – and it continues long afterward. It begins with a thorough study of the software requirements. Some requirements involve the functions the program needs to carry out. The program may, for example, need to verify that a user is authorized to access it. Other requirements involve constraints, for example, systems already in place.
The next stage is software design. This involves creating algorithms, or instructions for the computer. The actual coding process may be completed by software engineers, who have comprehensive training, or by programmers who are versed only in coding. Later comes validation and maintenance. Stages don’t necessarily proceed in a linear manner; they may be organized in a variety of ways, including spiraling.
What Types of Software Require Engineering?
A systematic and disciplined approach isn’t necessary for every endeavor. You don’t need engineering training to design a simple game or a program that teaches your child to read. You do need it, though, to create high stakes software for the defense department.
Businesses also employ software engineers to create customized software and address vulnerabilities before they happen. This makes sense when we think of the complexity of the tasks that the average professional carries out, tasks like holding meetings in real time with collaborators oceans away. Even when engineering principles aren’t necessary for safety, sound design can increase efficiency and decrease costs.
You’ll find a diverse group of employers advertising for true software engineers. Disney Interactive Media is among the companies seeking software developers who are familiar with the software development life cycle.
Education and Job Prospects for Software Engineers
There are two main branches of software engineering. Applications software engineers create and maintain computer applications. Systems software engineers analyze technical needs department by department and create or maintain appropriate systems. Setting up and maintaining intranet systems would fall under their scope.
Software engineers typically hold at least a baccalaureate degree. A master’s is necessary for some positions. The focus is on acquiring a core of software development knowledge that will remain relatively stable across a span of years, even as new languages are developed and others go out of favor.
Software engineering is a growing field, even during difficult economic times. The Bureau of Labor Statistics reports that while employers may outsource some positions, outsourcing is less likely to occur in highly specialized computer and software engineering positions than in lower level programming positions. There are exciting opportunities for those with an educational background in software engineering, computer science, software development, computer engineering and similar disciplines. Check out some of the potential career paths...Software Engineering Career Paths