An article in the Communications of the ACM (March 2009, vol 52 #3) makes software engineering sound just slightly better than a voodoo ritual (no disrespect to voodoo intended). I would also ask a related question, “does computer science have anything to do with software engineering?”. For example, objected oriented design is the accepted software design methodology today, but what science exactly is behind this? CS seems to deal with the logic and complexity of algorithms, but that’s really a very small part of software engineering.
Anyway, here are some quotes from the article:
In its most general form, the “engineering process” consists of a repeated cycle through requirements, specifications, prototypes, and testing. In software engineering, the process models have evolved into several forms that range from highly structured preplanning (waterfalls, spirals, Vs, and CMM) to relatively unstructured agile (XP, SCRUM, Crystal, and evolutionary). No one process is best for every problem.
Despite long experience with these processes, none consistently delivers reliable, dependable, and affordable software systems. Approximately one-third of software projects fail to deliver anything, and another third deliver something workable but not satisfactory. Often, even successful projects took longer than expected and had significant cost overruns. Large systems, which rely on careful preplanning, are routinely obsolescent by the time of delivery years after the design started. Faithful following of a process, by itself, is not enough to achieve the results sought by engineering…
software engineering literature … relies heavily on software anecdotes and draws very lightly from other engineering fields. Walter Tichy found that fewer than 50% of the published software engineering papers tested their hypotheses, compared to 90% in most other fields.