views:

514

answers:

12

The term "software engineering" is often used without fully being considered. Since the field is relatively young compared to other mature professional disciplines, the definition is arguably still be worked out, and at the very least it is often understood differently by different populations despite being "defined" by IEEE or the like. So, how's software engineering being defined by SO users?

What is software engineering?

+4  A: 

According to wikipedia: http://en.wikipedia.org/wiki/Software_Engineering

My answer: "A combination of tools, methods, and techniques used in the optimal design, implementation, and maintenance of software systems."

Justin Standard
+8  A: 

Isn't Software Engineeing anything that somehow has to do with turning C8H10N4O2 into Code?

Michael Stum
+1 for the honesty :)
Yuval A
+10  A: 

As a computer engineering student, I take issue with people throwing the term, "engineering" around so loosely.

An engineer doesn't simply apply science in a practical way; he also carries a level of responsibility for his actions to ensure the well-being of society, the environment, etc. Very few "software engineers" have such responsibility. If Windows Vista crashes on 25% of the computer it's installed on, you won't see an engineer standing in front of a discipline committee.

Ryan Fox
Neither will an electronics engineer stand before one, if a cell phone crashes and needs to be restarted. Neither will a mechanical engineer if the grandfather clock mechanism breaks. Whats your point?
Mostlyharmless
I think more than "very few" software engineers have a responsibility to society. How about software engineers working on software systems in medical devices, aircraft, military systems, things like the FAA radar system...lives are on the line in all of those.
Thomas Owens
A: 

Software Engineer is just a title used by recruiters to lure unsuspecting victims into their lair.

Don't get hung up on it the fashion for Software Engineer has reached old age and will be pensioned off just a soon as one of the myriad of phrases used to describe what we do makes a quantum leap. What's the betting that it's something even less useful to describe what you do to industry outsiders?

sparkes
+6  A: 

As a software engineering student, I believe I can answer this question.

Software engineering is the application of engineering principles to software systems. This involves designing, constructing, and maintaining a low-cost, high-reliability system that meets the customer needs and then delivering all versions on time and budget.

Software engineering is composed of a number of domains, including requirements, design, construction, testing, maintenance, configuration management, quality, engineering management, tools and methods, and processes. These domains are derived from mathematics and statistics, computer science, cognitive sciences, telecommunications and networking, project management, quality engineering, and various other engineering disciplines.

If you want to know, I would read the Software Engineering Body of Knowledge.

I would like to say that, yes, software engineering is an engineering discipline.

Thomas Owens
+1 for good answer. One of my software engineering lecturers has written a nice essay on the topic of differences between SE and CS... http://www.cs.auckland.ac.nz/~ewan/essays/se_vs_cs/
Jacob
+4  A: 

In its simplest form, Software Engineering is simply the application of Computer Science.

However, it usually goes beyond this. When I took 'Software Engineering' in College, it was much more like a mix of Programming and Management. For example, Extreme Programming is a "software engineering methodology" (wikipedia)

Ryan was correct as well, Software Engineering also has to do with the consequences and implications of computer science. Both the ACM and IEEE of standards of Ethics that should be followed. (If this is of interest to you, I would suggest the book A Gift of Fire)

In summary, a Software Engineer is someone who can take the theory of Computer Science and apply practically, while having the foresight to realize the implications of his/her work

Joe
+1  A: 

@Thomas:

I didn't mean to imply that software engineering isn't engineering. It's just that many people who write code will call themselves software engineers to inflate their title.

Ryan Fox
A: 

@Ryan - That comment wasn't to you or anyone in particular. Just those people who are all like "omg se isn't engineering nubz it's like applied cs so gtfo out of engineering places arr!"

Thomas Owens
+4  A: 

In Germany, an engineer (Ingenieur), no matter of what profession, has certain professional “privileges”. For example, engineers are permitted to install high voltage equipment, something ordinary people aren't allowed to do unless supervised by a certified professional.

It is simply assumed that engineers knows what they're doing and can take responsibility for their actions. For that reason, attaining a degree in software engineering is very uncommon in Germany. The “throwing … around” of the term can't happen here. Any software engineer really is a fully-fledged engineer.

Konrad Rudolph
A: 

I would say that software engineering is the intelligent application of the knowledge base of software science (what computer science is generally focussed on).

Unfortunately, I think it is often mistaken that this is an immature new field of engineering. There is a huge body of knowledge and best practices - it is simply a complex field with more specialists than many other engineering fields.

Where I live, engineering is a regulated profession - though they way I understand it, engineering and professional engineering are quite different. Engineering is using your brain to solve problems to move a project forward. Professional engineering is an acceptance of responsibility and a recognition of skill when using your brain to solve problems to move a project forward.

Of course stackoverflow is a great resource for all of us - engineers, scientists, hackers, testers, coders, builders, managers, all!

Rob Hunter
A: 

I think it is the use of engineering principles of combining, optimzing and managing tools, methods, personnel and other resources to build an effective,efficient and applicable software.

A: 

Perhaps 'Software Enineering' is not the best term since it is not a engineering displine in the purest sense, but it is an attempt to provide formal methods to the process of creating software in the interest of better success and quality.

The need for such a discipline was identified in the late 1960s when it became obvious that software projects were taking too much time and money and failing at an unacceptable rate. The field flourished in the 1970s, but unfortunately an unacceptable number of projects still fail to to be completed on time or at all.

Please see my blog entry 'What Ever Happened to Software Engineering?'

Jim Anderson