Software Engineering (CloudMonk.io)
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 software design | design, software development | development, software use | use, and software maintenance | 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.
Fair Use Source: B00UANX0E0
External sites
* wp>Software engineering
Wikipedia
Error: File not found: wp>Software engineering
----
Cloud Monk is Retired (impermanence | for now). Buddha with you. Copyright | © Beginningless Time - Present Moment - Three Times: The Buddhas or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.
----