Slashdot Log In
Software Engineering Body of Knowledge
Posted by
michael
on Thu Nov 22, 2001 04:00 PM
from the you-should-be-eating-dinner-instead-of-reading-this dept.
from the you-should-be-eating-dinner-instead-of-reading-this dept.
An Anonymous Coward writes: "The IEEE has a project going to establish a Software Engineering Body of Knowledge. I'd recommend that all Slashdotters read this and send comments to this since this project could lead to the officially designating Software Engineers as a real Engineering discipline. That could then mean that licenses could be required to practice software development and that this could to regulation and other legal ramifications." On the surface this looks like a fairly boring document/process, but this is a major step forward - turning software engineering from an art into a science.
This discussion has been archived.
No new comments can be posted.
Software Engineering Body of Knowledge
|
Log In/Create an Account
| Top
| 428 comments
(Spill at 50!) | Index Only
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
|
2
(1)
|
2
What about the PPR? (Score:4, Insightful)
To see the PPR, surf to http://www.c2.com/cgi/wiki
What about my MCSE? (Score:5, Funny)
Both kinds: Science and Art! (Score:3, Insightful)
Huh? I don't get the fears.... (Score:3)
Okay, correct me if I'm wrong, but Electrical Engineering is designated a "real Engineering discipline", right? Well I've never taken a course on EE, nor do I have any kind of license or certification, but I'm still allowed to take my radios apart and fix them when they break, right? Why would this official designation of software engineering affect anything? Am I the only one who doesn't get this?
That's not all. (Score:4, Interesting)
But then you need 4 (IIRC) years as basically an apprentice, working full time under the direct supervision of an accredited engineer. Naturally, this is, "We can end your career before it even begins!" internship-type employment.
So we're talking about a bare minimum 7-year investment (more likely 8 or 9) before they'll even look at you. These restrictions have been tightening up, requiring larger and larger investments in time, over the last decades, and I expect it to continue in this manner.
It seems to me that all of our professional organizations are slowly becoming old-fashioned guilds, organized less for the benefit of the general public and more for the members. Organizations in which one doesn't become a full member who can work unsupervised until middle age, assuming one commits oneself in one's youth. They already have the protection of government, so entrenched that nobody ever seems to suggest weakening their monopolies.
Do we really need a Bar Association? Do you think lawyers are more ethical, more beneficial to society because there's a government-granted monopoly to its members on arguing the law on others' behalf? Do you think your area's medical association is doing the best possible job producing competent, efficient doctors with no competition or alternative of any kind?
How many professionals are just wielders of required rubber stamps? How many brilliant young potential innovators are slowly crushed into mediocre clock-watchers, who have been shown again and again that putting your time in, looking respectable, and covering your ass pays off better than doing your job well and advancing the state of the art?
I think that far too few people question the value, competence, and good faith of professional organizations. They're just accepted as natural features of a well-run society, assumed to be the best interface to highly specialized skills without an active evaluation.
I look at them, and see the gradual calcification, then downfall of our society. I see never moving beyond asphalt roads and cars that move at 60 MPH, never moving a viable population off the planet, never extending the average human lifespan beyond 100 years.
I hate to see people talking about moving this kind of influence into software. It's one thing to run competing private organizations that certify certain skills, it's quite another to start legally requiring certification from a particular one, giving it monopoly status. Let alone ceasing to question whether it should keep that status.
Licenses Required? (Score:5, Insightful)
Requiring a license to be a programmer is a bad thing. If you think it will improve software quality, you're mistaken. Think I'm crazy? How many software contributers have an engineering certification? Sorry, no cert, no programming. No open-source software.
OK, so let's change the rules a bit. "You must be certified in order to write commercial software". You think that will help anything? Who determines what classifies as commercial software? Is my Mandrake CD commercial software? If so, does that mean all the software on it, including the free software, is now commercial? Not good.
However, what if there's a non-commercial certification process. Run, not by RedHat or Microsoft, but by a vendor-independent group of engineers. You prove to them that you are a capable engineer/programmer/whatever. They give you a certificate that actually means something. Perhaps require the certification to be re-written every N years.
Now, companies can have a certification that says this person is a software engineer. Not a Microsoft-certified software engineer. Not a RedHat-certified software engineer. An engineer-certified software engineer. No commercial influence, transferrable skills, and a large skill set.
Re:Licenses Required? (Score:4, Interesting)
Take the bridge building analogy. If an engineer designs a bridge that falls apart and people die, they are liable. His company may also be liable. If a city engineer put his stamp on the bridge design, then he is also liable, and perhaps the municipality he works for.
Why should software be any different? We get mad when MS Word dies on us and we lose an hours work. Can we sue Microsoft for lost revenue because we missed a deadline because of that, and therefore missed a contract? Probably not (well, I haven't read a EULA lately) but there's no reason why we shouldn't be able to. Actually that was a bad example. Lemme try again.
How about a software firm contracted to write a control system for a city's traffic grid. A bug or poor design causes a set of lights to go on the blink, two people run an intersection and both die in the resulting collision. Who pays the damages? Not sure, perhaps the city... but its not their fault. But they can't pass that onto the software firm... not currently.
But instead, if we had licensed software engineers, who in certain instances like the one above, who were now indefinately liable for their work, and who are required by the customer to "sign off" on it... well, it can only bode well for the quality of software.
The big thing here is that the customer has to demand accountability --> Im sure that big e-commerce data centres demand guaranteed uptime from Microsoft..
As an engineer myself, Im constantly reminded of my responsibility to society. Alright, I don't write code for the space shuttle, or code that flys your 767 to Bermuda. In fact, I don't write code that even sees a customer. But I do write code that tests product (in this case radio systems for police and ems). If I screw up, don't properly test my code, then the product code is not properly tested, and perhaps at a critical moment a system will go down and a police officer facing a dangerous suspect will lose his life. That sucks.
Consumer software should be no different, but we don't demand the accountability.
Developer with no CS Degree (Score:4, Insightful)
Are we suddenly going to stop rewarding initiative, independent learning, flexibility and gumption, and only give credit to people who were lucky enough to figure out their career paths in their late teens, unlike me? Proposterous!
Re:Developer with no CS Degree (Score:4, Informative)
Electricians and electrical technicians aren't useless. They can get good jobs, they just can't legally design commercial electrical products (unless they work under a supervising engineer, of course).Electrical Engineers go through Ethics courses and Occupational Safety courses, and they have to take responsibility for the things they make.
If a professional Engineer designs something, it _MUST_ work as specified. If it doesn't, the consumer can sue the engineer that made it. With software (which is not made by engineers) doesn't work, you can't do much about it. That's the difference between engineers and non-engineers.
Re:Developer with no CS Degree (Score:5, Insightful)
What you need to consider is:
Do you really consider you know as much about the structure of programs (in general), putting software together, and have as broad an overview and experience as someone who's spent 20 years intensively studying and applying software, and trying to refine it to it's optimum, and is at least as talented as you?
The idea of accreditation is that you take people with the talent, and subject them to several years of rounded exposure to the whole of the discipline, so they don't fall foul of errors caused by lack of understanding of associated areas. You then test these people to ensure that they don't make the stupid mistakes that can and frequently are made by people applying good methodology in a stupid way (it happens).
What is being rewarded is people who went into a field because they liked it, and followed it, and gained experience. Don't call it luck, 'cos I don't buy that.
You chose your path, they chose theirs, and perhaps, just perhaps, they're being rewarded for the initiative, independant learning, flexibility and gumption they showed in choosing their career because it's what they wanted to study in the first place!
If you consider that in 11 months, you're on par with some of the old timers that HAVE been in the game for 20 or 30 years (I've worked with some in my time), then, I think you're exactly the kind of person that shouldn't be an engineer.
These things take time. If you want full accreditation, you should be prepared to do the graft and sweat that the rest of the world put in, even if it means going back to study full time again for several years, to re train from another discipline.
It seems that perhaps the move is partly to prevent the influx of people who've suddenly realised that there's a fast buck to be made in the computing world, and take a fast track that trains intensively in one area, to get them able to perform programming tasks, and these people pushing that envelope into areas they were never trained for.
I'm sure you're very good at what you do, and I'm in no way trying to take away from you what you have achieved, and yes, I agree, it's quite an achievement. I just ask you not to belittle those people who had the insight to choose their career early and stick to it.
As to the cries I hear here in the UK so often of "Oh, but that's so ELITIST!".. Well, yes. But I'd rather be travelling in a plane programmed by a set of guys who have proven themselves to be the elite by many years of peer review and monitoring, than a bunch of guys who thought maybe this would be the best way to assemble an avionics system, although they couldn't quite put on paper why that was so...
Knowing the Slashdot of today, it's quite likely this will be modded down, but, I've worked with gurus claiming to be fools, and fools claiming to be gurus, and I say what I see.
Malk
License to practice engineering? (Score:3, Insightful)
Needing a license to practice only applys to CERTAIN types of engineers doing CERTAIN projects. I can tell you right now that if you go to work for Intel, but don't have an EE, you're not going to be arrested or anything. Sure, Intel may be taking a chance, but that's their problem. Now, Civil Engineers designing bridges is a different issue.
I expect it would be the same for software engineering. Good (and neerly necessary) to have the certification, but it won't impede Free Software in any way.
Software Engineering Code of Hygiene (Score:3, Funny)
Some observations from a non-software engineer (Score:5, Interesting)
To me an essential part of engineering has always been a sense of responsibility to society as a whole. Technology is harnessing natural forces in a way that provides benefit to someone or some group. Engineers try to ensure that this technology is used is as safe a fashion as possible. Minimization of risk. Planes stay in the air, bridges don't fall down, the water is safe to drink.
The article is hopelessly
The other side of the responsibility coin is liability. Engineers must show due diligence and carry liability insurance. It would likely be easier to insure an accredited software engineer working on a mission critical system.
I'm anxious to see what might come out as accreditation criteria for software engineers. I hope it would require some knowledge of the larger technological context and social responsibility.
The problems with certification (Score:5, Informative)
We have had some discussion on the C++ newsgroups recently, regarding the possibility of getting a decent C++ certification scheme started in the industry. Bear in mind that we're talking about a major language here, and one that has an incredibly high number of "users" who don't really know the first thing about it -- or worse, get that first thing wrong -- but think they're experts. There is no single commercial body that "owns" C++, so no political spin needs to be put on things. Basically, this is a prime candidate for certification.
Except that we concluded viable certification was not going to happen. Without a major industrial sponsor, and without a large body of experts who are actually qualified to administer the necessary tests, you'd never get it off the floor.
And what would "certified in the use of C++" mean, anyway? There are many different areas of C++ programming, and while some projects use most/all of them, other projects would never use, for example, much of the STL. To have any practical use, any certification would have to be more precise than just "good at C++".
Remember, this is just one language, and still the expert population felt it would be impossible to provide an effective recognition in today's environment. What hope can anyone have of effectively regulating software engineering as a whole in this today's development world, then? There are more contradictions in this industry than anywhere else I've ever seen, with some companies successfully using development methods for years where other companies have failed completely using the same methods. Who's to say, with any justification or authority, which methods a "chartered software engineer" should use?
Certify Software, not Software Engineers (Score:3, Insightful)
Certified software is tested and putatively immutable, and you can always throw more testing at it if you think it needs it.
DO-178B [google.com] procedures require that all software designs and implementations be reviewed and tested, the tests reviewed, and the reviews reviewed, by different engineers--or companies--wherever practicable. And it comes with different levels of certification, to allow cost reduction where lower levels of risk are involved.
--Blair
(Note to web surfers, if you want to go to yahoo.com, say, to find standards links, do not mis-type the domain as "yaho.com". Trust me on this. I also advise everyone to use Panicware's free Pop-up Stopper [panicware.com]. This node is getting wrapped right now.)
Professionalizing Software is Premature (Score:5, Insightful)
- Codifying a set of "best practicies" that, when applied, assure a solid
product.
- Codifying educational programs that teach these best practices.
- Certifying people who graduate from the educational process as "Software
Engineers".
The big problem with this idea is step 1: Sure, we have best practices, but they do not assure a solid product. By far, the highest assurance practice to date for developing working software is to make sure the developers have a lot of talent and dedication. There are software engineering best practices, but when goobers apply them, they are fully capable of producing bloated non-working crap. This is characteristic of an art, not an engineering discipline.It is very nice that people are sufficiently concerned about software quality and its impact on the real world (e.g. comp.risks). But this in no way means that we actually have best practices that will assure that mediocre developers can produce working product. Wishing for it (or mandating it) will not make it so.
Crispin
--
Crispin Cowan, Ph.D.
Chief Scientist, WireX Communications, Inc. [wirex.com]
Immunix: [immunix.org] Security Hardened Linux Distribution
Available for Purchase [wirex.com]
No more licensing! (Score:3, Insightful)
No, no, no, no, NO, NO, NO!!! Keep the government AWAY from it all, for pity's sake! We don't want legislation to dictate who can and cannot write software. In my county, my wife and I are not allowed to cut each others' hair in the privacy of our own home. Because beauticians got together some time ago and petitioned the government to make it illegal to cut hair without a "license." To get a license, you have to go to a qualified beauty school and then spend so many hours cutting hair in professional, and authorized, salons.
Of course, they then artificially limit the number of beauty schools that they allow to train for such licenses. The same thing happened in the medical profession. This sort of thing is routinely done by factional groups to pressure the government to create a stranglehold on the market, reducing supply and thus letting them charge more for their services.
In the long run, it only winds up hurting us all by driving the price up while not increasing the quality of the services we receive. Do you really think that having an "official license" makes doctors better than they would be otherwise? Are "certified" Microsoft Engineers any more qualified to work with Microsoft products than the rest of us?
Bad and good beauticians and doctors can be singled out by this little phenomenon called reputation. We don't need a piece of "official" government legislation to be mandated on all who want to enter the market in some lame attempt to make things better than they would be without the artificial intervention (do a search for "Adam Smith and invisible hand").
Let anyone who wants to write software professionally, whether or not they have a degree, license, or whatever, and let the buyer beware. Let each entity build a reputation, and the market will pick the best man for the job.
Mutual Exclusion Syndrome isn't good for anyone!!! (Score:5, Insightful)
"On the surface this looks like a fairly boring document/process, but this is a major step forward - turning software engineering from an art into a science."
On the surface viewing Software Engineering as all science and no art makes for boring documents and processes. When people are bored, they naturally don't do nearly as good a job. Indeed, the best Software Engineers have the science part down cold, but also have a natural instinct that is the direct manifestation of their artistic inclination. Art and Science are the Yin and Yang of Software Engineering, and to remove or diminish the role of either is to diminish the effectiveness of the software developer(s), regardless of which one you mistakenly choose to emphasize.
If one wants to improve the overall quality of their software they must develop both their left and right brain. To shun one in favour of the other is folly. It is no different than strengthening one leg and cutting of the other in an attempt to be more mobile. Hopping around on that one remaining leg will certainly make it big and strong, but mobility will suffer almost detrimentally. I guess that makes it a major unbalanced hop toward the different, and less effective, not a major step toward anything.
Perhaps these people have never heard of the Software Engineering Institute [cmu.edu] and the Capability Maturity Model? Then again, what do I know? I'm too artistic to be any good at Software Engineering
Too much process, not enough content (Score:4, Insightful)
The Association for Computing Machinery withdrew its support [acm.org] for this SWEBOK effort, after deciding that their approach to licensing practioners was inappropriate. So this probably isn't going anywhere.
In comparison with other engineering disciplines, the real problem is that we don't have a good handle on how to build software with huge safety margins so that it doesn't need to be engineered.
This seems confusing, until you look at, say, structural engineering. If you want to build something, there are standard handbooks that will tell you how to build something that's much stronger than it really needs to be, but won't fall down. That's how most houses are designed. Only when you get into more complex construction (steelwork, arches, laminated wood beams, etc.) do you need a licensed professional engineer to sign off (literally) on the blueprints.
We don't explicitly make that distinction for software. With fifty years of computing behind us, it may be time to do that.
A good place to start would be control software for anything with more than some minimal amount of energy. (For example, programming a VCR control CPU wouldn't require certification, but a garage door opener control would.) We could then go on to, say, software that handles the money of others, and perhaps to networking software that can affect more than 100 users at a time.
A formal distinction of which software matters and which doesn't is the first step. The industry needs to take that step.
Too Many Vested Interests, Too Many Uncertainties (Score:4, Insightful)
The basic problem is that there is simply no consensus in the industry as to what constitutes "good engineering" in software, beyond a certain very basic level. We're a very, very young discipline, and unlike structural or electronic engineering the mathematics does not exist to prove what we are doing is right.
In the absence of any real proveability in our craft, all you can do is make broad pronounciations, and then quibble about their interpretations. You can say "testing is good", but you'd never get a room full of programmers to agree whether test-first programming is better than testing completed code, and nobody's yet been able to determine which is more efficient under which circumstances. Similarly, you can say "well-designed code is good", but who's going to moderate the dispute between the CMM waterfall three month design phase group, the moderate Agile "design the module just before you code it" group, and the eXtreme "design is something you achieve as a by-product of merciless refactoring" party.
I have little faith in the mission of this group, as I can't ever see it coming up with a satisfactory document. Either the qualification for being a software engineer will be so broad as to be useless, or (more likely) it will mean that the industry will continue on as it always has, we'll just go back to being called programmers, and spend our time scoffing at certified "software engineers" as followers of an arcane, broken methodology.
Charles Miller
Wrong, as usual. (Score:3, Insightful)
That could then mean that licenses could be required to practice software development
Sigh. No.
It would mean you couldn't go calling yourself a Software Engineer if you're NOT, but nobody is going to card you trying to buy a copy of VC++.