14 Replies - 4578 Views - Last Post: 13 November 2011 - 12:57 AM

Software Engineering is not really engineering

Posted 12 November 2011 - 02:04 AM

Hi all

Now a days i am studyng software engineering as a subject in Bachelors of Computers Science. What i found after studying it and doing some research on it which is obvioulsy very little and basic , I found that software engineering is not rally engineering and it is just a coined term which was useful in older days. Now we cannot engineer a software as there is not particular theory behind it. I would like to hear your comments on it. What do you say about it? Or Am i alone having such a feeling? what do you feel about it.
For more information on my view point check if you want Software Engineering is not really engineering

Re: Software Engineering is not really engineering

Posted 12 November 2011 - 09:08 AM

I both agree and disagree. It's not that we can't engineer software, it's just that we usually don't.

If you just want to talk about the "science" and "theory" behind software engineering, it does exist - it's just mathematics rather than physics. There are mathematical methods to model a system, prove properties about it, refine that model into code that can be mathematically verified. They're usually lumped together under the umbrella term "formal methods" and researchers have been developing them since the 1960's.

People have said for years that this stuff should be the basis for a making programming a "science" or engineering discipline. The problem with these methods is that they've never penetrated into the mainstream. Outside of certain niches like critical systems development, hardly anybody uses them. And, in fact, most professional software developers aren't even aware that they exist.

That said, you are correct that the way software development is practiced in many (if not most) companies is in no way "engineering". Much of the software industry is either grossly disorganized or driven by fads rather than evidence. There are still lots of companies that don't have a defined development process, organized QA, or even basic things like source control and defect tracking. And in many cases, even if they do have some defined process, it gets thrown out the window at the first sign of schedule pressure.

The way I look at it, we really have two different fields: "software development" and "software engineering". They get lumped together because they're both about "creating software", but the methods by which they do it are different enough that they should be considered separately. Software engineering is what the people at Altran Praxis do. Software development is what happens in the company IT department that "does Scrum" but without the daily meetings and keeps their source code on the network share rather than setting up a proper SCM system.

requirements acquisition is a task which even a program do. Collecting requirements in a nice way needs experience and little of skill. It cant be termed into engineering as it is not that much of a task. Requirements acquisition is done in every project, be it software or not. But requirement engineering is not given special attention in other things. It is more or less equal to QA. All the good programmers are able to do class modeling coding debugging of really complex systems trivially. Making it sound like Engineering task is not an OK.

Re: Software Engineering is not really engineering

Posted 12 November 2011 - 10:38 AM

AdaHacker, on 12 November 2011 - 09:08 AM, said:

I both agree and disagree. It's not that we can't engineer software, it's just that we usually don't.

If you just want to talk about the "science" and "theory" behind software engineering, it does exist - it's just mathematics rather than physics. There are mathematical methods to model a system, prove properties about it, refine that model into code that can be mathematically verified. They're usually lumped together under the umbrella term "formal methods" and researchers have been developing them since the 1960's.

People have said for years that this stuff should be the basis for a making programming a "science" or engineering discipline. The problem with these methods is that they've never penetrated into the mainstream. Outside of certain niches like critical systems development, hardly anybody uses them. And, in fact, most professional software developers aren't even aware that they exist.

That said, you are correct that the way software development is practiced in many (if not most) companies is in no way "engineering". Much of the software industry is either grossly disorganized or driven by fads rather than evidence. There are still lots of companies that don't have a defined development process, organized QA, or even basic things like source control and defect tracking. And in many cases, even if they do have some defined process, it gets thrown out the window at the first sign of schedule pressure.

The way I look at it, we really have two different fields: "software development" and "software engineering". They get lumped together because they're both about "creating software", but the methods by which they do it are different enough that they should be considered separately. Software engineering is what the people at Altran Praxis do. Software development is what happens in the company IT department that "does Scrum" but without the daily meetings and keeps their source code on the network share rather than setting up a proper SCM system.

Yeah i totally agree that if softwares are developed using formal methods then it is really software engineering. But its not the problem with Software Developers it is problem with formal methods. Formal methods are not capable enough to produce innovative and good softwares which are requirement of today. The type of softwares Altran Praxis develop may be developed using formal methods or mathematically driven approach however many of the softwares cant be made using formal methods. Now a days softwares are attractive, dynamic, intelligent and commercial. Such softwares like commercial games, social networking sites, netbeans, chatbot cant be engineered because yet computers are not capable enough to be creative. Software engineering approach most of the times kill creativity.

Do you think that if people start following software engineering approach or formal method then the quality and innovation of software produced will be better than softwares created today?

The theory what you stated is theory of computation or typical known as automata. It is branch of mathematics and formal languages. It hardly can be called as theory behind programming or coding. But i dont think so that it is theory of software engineering.

Computer science or computing science (abbreviated CS) is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems. Computer scientists invent algorithmic processes that create, describe, and transform information and formulate suitable abstractions to design and model complex systems

Computer Science being the science of computation

theory of computation isn't the same sa automata -> an automata being a self operating machine (aka robot).

Software Development is the more general term used to describe the creation of software (of any type). It's bit like saying your a painter when you do paint-by-numbers, yes it involve paint but you can say your an Old Master

Software Engineer is a recognised certified profession (like a doctor) and has Institution that govern the profession. The IEEE Computer Society even has a "Software Engineering Code of Ethics".[

Re: Software Engineering is not really engineering

Posted 12 November 2011 - 07:00 PM

yaKashif, on 12 November 2011 - 01:38 PM, said:

Now a days softwares are attractive, dynamic, intelligent and commercial. Such softwares like commercial games, social networking sites, netbeans, chatbot cant be engineered because yet computers are not capable enough to be creative.

No - you can certainly engineer all of those things. You're misunderstanding where engineering fits in to the software development process. The kind of creativity you're talking about comes earlier in the process, when determining what to build - the features the software should have, what it should look like, etc. Engineering is about how things are built - making them reliable and bug-free. You can be as creative as you want in designing what kind of software you want to build, but still apply engineering to actually implementing that design. The two are not mutually exclusive.

Quote

Do you think that if people start following software engineering approach or formal method then the quality and innovation of software produced will be better than softwares created today?

Innovation? You don't apply engineering principles in order to be more innovative. You apply them to ensure what you build is correct and reliable. Innovation has nothing to do with it.

Quote

The theory what you stated is theory of computation or typical known as automata.

You must be confused - I didn't say anything about computability theory. I was talking about this sort of thing.

Re: Software Engineering is not really engineering

@AdaHacker
You cleared things in right way that engineering is not related to innovation and creativity. Thats nice explanation. Then Engineering role is minimized to deadly extent.

Quote

The kind of creativity you're talking about comes earlier in the process, when determining what to build

Requirements Engineering and Analysis, prototyping is al considered a part of Software Engineering and it is same as what to build. Talking in software engineer's terminology How to build starts from design stage. Building starts from implementation. If just how to build is Engineering then it has very limited scope. Still your opinion and what you shared is good and less Biased.

There are links to two more posts in my post Software Engineering is not really engineering on my blog. If you have got time check them as well.

@AdamSpeight2008 you didnt answered my question even. If IEEE recognizes some profession then its not the final word. Tom DeMarco's article on Software Engineering was also published in IEEE. Yes i understand it is Tom's thinking and not of IEEE.

Re: Software Engineering is not really engineering

The component parts maybe have been built. Like Bricks and Wooden Planks in the construction industry. You can have a load of coppers on the floor, doesn't make it a heating system for your house. It still needs to be plumbed in. That requires some form of heating engineer, (some country require this done by a certified professional.)

Unless the work is yours from conception to completion, it's not up to you to decide the "creativity of the software" (What does that means? Define it.). All you can do is suggest to custom (ie the person who commission/pays for the work.)

Your blog entry is full of unsubstantiated claims and assertions .

Quote

If software engineering you think that software engineering is practical then kindly why don’t you ask Larry Page(Google’s co-founder) that which model you used to make Google, which model you used to create Google plus. Ask Bill gates that which model he or his company used to create Silver light. Did they implemented .NET by prototyping, incremental or waterfall model<BG> Most of us know which model was used by Microsoft but that model is taught no where in the world. Steve Jobs: the man behind apple, ask him what principle he applied in making of Mac.

Have you asked any of the people mention in the above extract quote from your blog entry. I seriously doubt it.

If all the programmer in the world did follow sound engineering principles then why is the internet for full (in my opinion) work that don't follow them, (for example have a look at some the code in the Dream In Code help sections) As for creativity all I see is a lot derivative works and apps. How many music players, "Angry Birds", Fart App and Tower Defense programs does one need?

From what seen of the online applicationm stores and maarketplaces. There's a lot of software that has been written (out there) that doesn't have a market / customer for.

Re: Software Engineering is not really engineering

Posted 13 November 2011 - 12:28 AM

@AdamSpeight2008
Obviuosly your doubt is right that I didnt asked any of the three tech giants i mentined oin the blog entry.
Well! i didnt really get you maybe because what i told is prety confused in itself. so i cant say any thing more. Its alright, I just wanted to know opinions of people on what I think. Thanks for reply and your time.

Re: Software Engineering is not really engineering

Posted 13 November 2011 - 12:42 AM

I usually mix creativity and Innovation and think both are kind of same thing. Innovation is usually considered a type of creativity. Lets take Google as an example. Google was a research project of PhD students. It rolled in the eyes of people a lot due to its far more better result in search engine. They introduced the concepts of page ranking on the basis of linking sites and they have newer concepts of Panda update etc... I think Google was a creative and innovative project. Even now the theme of google and their unconventional approach towards marketing and development make them unique and creative.
By creativity of software I mean that the software is capable of evolution and flexible enough that it can mould to new things easily. Basically i mean Innovation by creativity.