Table of Contents
Software Engineering
Return to Cloud Monk's Package Manager Book, Programming Glossary
Software engineering is the application of engineering to the development of software in a systematic method.
Recommended Reading: https://javaspecialists.eu/archive/Software%20Engineering.html
WHAT IS SOFTWARE ENGINEERING?
“A formal definition of software engineering might sound something like, “An organized, analytical approach to the design, development, use, and maintenance of software.”
More intuitively, software engineering is everything you need to do to produce [successful software. It includes the steps that take a raw, possibly nebulous idea and turn it into a powerful and intuitive application that can be enhanced to meet changing customer needs for years to come. You might be tempted to restrict software engineering to mean only the beginning of the process, when you perform the application’s design. After all, an aerospace engineer designs planes but doesn’t build them or tack on a second passenger cabin if the fi rst one becomes full. (Although I guess a space shuttle riding piggyback on a 747 sort of achieved that goal.) One of the big differences between software engineering and aerospace engineering (or most other kinds of engineering) is that software isn’t physical. It exists only in the virtual world of the computer. That means it’s easy to make changes to any part of a program even after it is completely written. In contrast, if you wait until a bridge is fi nished and then tell your structural engineer that you’ve decided to add two extra lanes, there’s a good chance he’ll cackle wildly and offer you all sorts of creative but impractical suggestions for exactly what you can do with your two extra lanes. The fl exibility granted to software by its virtual nature is both a blessing and a curse. It’s a blessing because it lets you refi ne the program during development to better meet user needs, add new features to take advantage of opportunities discovered during implementation, and make modifi cations to meet evolving business needs. It even allows some applications to let users write scripts to perform new tasks never envisioned by developers. That type of fl exibility isn’t possible in other types of engineering. Unfortunately, the fl exibility that allows you to make changes throughout a software project’s life cycle also lets you mess things up at any point during development. Adding a new feature can break existing code or turn a simple, elegant design into a confusing mess. Constantly adding, removing, and modifying features during development can make it impossible for different parts of the system to work together. In some cases, it can even make it impossible to tell when the project is fi nished. Because software is so malleable, design decisions can be made at any point up to the end of the project. Actually, successful applications often continue to evolve long after the initial release. Microsoft Word, for example, has been evolving for roughly 30 years. (Sometimes for the better, sometimes for the worse. Remember Clippy? I’ll let you decide whether that change was for the better or for the worse, but I haven’t seen him in a while.) The fact that changes can come at any time means you need to consider the whole development process as a single, long, complex task. You can’t simply “engineer” a great design, turn the programmers loose on it, and walk off into the sunset wrapped in the warm glow of a job well done. The biggest design decisions may come early, and software development certainly has stages, but those stages are linked, so you need to consider them all together.
External sites
Wikipedia
- Snippet from Wikipedia: Software engineering
Software engineering is an engineering approach to software development. A practitioner, called a software engineer, applies the engineering design process to develop software.
The terms programmer and coder overlap software engineer, but they imply only the construction aspect of typical software engineer workload.
A software engineer applies a software development process, which involves defining, implementing, testing, managing, and maintaining software systems and, creating and modifying the development process.
© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.