Gregory M. KapfhammerAssociate Professor of Computer Sciencehttp://www.cs.allegheny.edu/~gkapfham/ |
Will There Ever Be Software Engineering?
|
I agree with Jackson's statement since their are many more important areas of computer science that are more toward the times now. The y2k example is an area of computer science that was needed at the point of the year 2000 problem. Another example that is not in the core curriculum is that of web site progamming that is needed for almost everyday use. When new programming areas come into society, people adapt to that language or programming style, and without there being very much written on the new area, the comp sci curriculum is un affected until years later.
Chris Howell
Why do you think that the Department of Computer Science at Allegheny does not include a course on web site programming? What if we taught a course in web site development using PHP and then PHP was replaced with a new web language. Would you fell that the Faculty adequately prepared you for a lifetime in the discipline of software engineering if you took this course? Should computer science curriculum really change with each passing fad? Personally, I would contend that it should not! Greg
Richard Geary
If I understand the quote correctly, for the most part, I think I agree. The theoretical core of computer science has alot less to do with mainaining software than knowledge of the language and the semantics of the software system itself. For example, when fixing a "showstopper" bug in a software system, I would think that knowledge of some of the core CS concepts would not prove useful, that is, for most cases.
I think that I would be better able to respond to your assertion if you gave me a specific example of a showstopper defect. Personally, I see much of the software testing process as being very "formal", "theoretical", and "rigorous." I believe that I am a better tester because I am well-grounded in disciplines that require mathematical thinking. What do you think? Greg
Brenda Gruber
I disagree with Jackson's statement. In order to keep software in working order you need the software engineering aspect, "the messy and poorly documented details of the particular ingredients" along with the core computer science curriculum.
Jackson contradicts himself when he states, "Software engineers should not themselves be computer scientists, but must command a core body of knowledge derived from computer science, wedding this knowledge to the concepts and disciplines taught to other engineers." He further continues that determining this core body of knowledge is the hard part, which i agree with, but it is still a derivation of the core computer science curriculum.
I would venture to state that the core curiculum might need to be "tweaked" or altered to be taught from the software engineering view, but essentially it is still the same core that is needed and taught. Even though completely understanding the underlying theories and basics might not be immediately necessary it can prove to be useful in understanding the big picture.
Jackson provides the example that software engineers are not concerned with building hardware, but they must cooperate with hardware engineers and both are responsible for the final machine. A similar arguement can be used to illustrate any of the aspects of the core computer science curriculum. Understanding the underlying principles and concepts of the systems and the computer science involved will make creating and testing software for those systems more productive ("keeping the alphabet soup of software in working order").
I think that your response is largely on target. I believe that it is important for software engineers to have a strong theoretical background. However, it is also important for these same software engineers to have a background in a wide variety of programming languages, development environments, and problem domains. Personally, I think that it is more important to teach students the fundamentals and then allow them to explore these problem domains (such as web site programming, finance, etc). Greg
- Essentially, Jackson is urging software engineers to specialize their skills in order to enable them to develop certain types of software systems. Do you agree or disagree with this statement?
I agree with this statement. I feel that if software engineers specialize in developing certain types of software systems, then their will be more advanced and better systems in the future.
Chris Howell
What does the phrase "more advanced" really mean? Does this mean that the discipline itself has advanced or does that mean we now have software engineers that are more advanced in their abilities to engineer certain types of software systems? How would an undergraduate institution go about educating these highly specialized software engineers? Greg
Richard Geary
I'm not so sure I agree with this, for a few reasons. Why specialize into one area? All this does is limit the amount of available jobs you can perform should you be out of work. Perhaps some better software could be created if engineers specialized, but I think a better idea is to try to improve yourself and learn in all areas. There's nothing wrong with being well-rounded, as long as you do your job well.
Brenda Gruber
I do not completely agree with this statement. First, if a software engineer is specialized in only one type of system that limits what they are able to do. It seems to me that a crucial part of software engineering is being adaptable and having the ability to apply new technologies to software systems.
If you specialize in one particular type of software system that may limit the types of technology that you would learn and use with that system. By limiting yourself to one particular area you limit the new technology and information that you could use, which seems to contradict what a software engineer would want to do. Wouldn't a software engineer want to continually learn and adapt to new technologies and apply them to any software system (even if it wasn't in their specialized area of interest) just for the sake of making a better software system?
Furthermore, it is often the case that software engineers need to learn how to use old technologies and apply these to solving new problems. I think that it is generally useful to have the abililty to apply a wide range of technologies to solving a wide range of problems. Of course, if you are particularly interested in solving certain types of problems, then you should start specializing in this area (or course, you must balance this specialization with current economic factors). Personally, I am very interested in developing open source software testing tools and I have found that much of my software development has focused in this area. Greg
Link to this Page
- Introduction to Software Engineering last edited on 30 August 2004 at 1:12 pm by aldenv28.allegheny.edu