Software Engineering or Software Engineering ?

Software Engineering or Software Engineering?

One issue still to be resolved is whether software engineering programs will place a greater emphasis on engineering or on software.

One school of thought, exemplified by the bachelor's program at R.I.T., is that a software engineer should be taught to develop software using a mindset and approaches that have traditionally been associated with engineering, but a software engineer does not necessarily need to be familiar with traditional engineering subjects. This kind of software engineer will take university courses in mathematics, computer science, management, and software-specific topics, but will not take the full set of courses traditionally associated with engineering.

A second school of thought is that a software engineer should be a traditional engineer who has received special training in software development. David Parnas of McMaster University in Ontario, Canada contends that, to achieve full professional credentials and respect from other engineers, professional software engineers need to have the same educational foundation that other engineers have. Software engineers often work in nuclear power plants, avionics software, manufacturing control, and other engineering areas in which knowledge of engineering fundamentals is beneficial or necessary. Students learning this kind of software engineering will take university courses in general chemistry, engineering mathematics, engineering materials, thermodynamics and heat transfer, and other courses that are part of an engineer's traditional core education. They will also take courses that are part of a traditional computer science degree program.

Table 18-1 summarizes the programs of study at McMaster University and R.I.T.[10]

The differences between R.I.T.'s and McMaster's programs point to an important difference in philosophy about software engineering. The McMaster program sees software engineers as engineers who develop software. The R.I.T. program sees software engineers as programmers who create software using an engineering approach.

Programs like the one at McMaster University will produce software engineers who can pass the Fundamentals of Engineering exams that all professional engineers in the United States and Canada must pass and eventually attain a P.E. (professional engineer) license in the United States or a P.Eng. in Canada. Programs like the R.I.T. program won't provide software engineers with the engineering background needed to pass current Fundamentals of Engineering exams.

Both kinds of programs are valuable. The more common need in the software industry is for software engineering that produces economical business systems, but the criticality of some systems (including software in nuclear power plants and airplanes) calls equally strongly for software engineering. Some people have argued that there is only one true kind of software engineering, but I believe it is appropriate to refer to both kinds of programs as "software engineering" and to the graduates of both kinds of programs as "software engineers."

These different approaches do imply different relations to existing engineering disciplines and different relations to licensing and certification programs. We'll return to these topics in Chapter 19.

Table 18-1. Course requirements for two kinds of software engineering
 

R.I.T.

MCMASTER U.

Math and Science

Chemistry, calculus, matrices, complex numbers differential equations, discrete mathematics, probability and statistics

Introductory Engineering

Structure and properties of engineering materials; dynamics and control of physical systems; thermodynamics and heat transfer; waves, electricity and magnetic fields

Computer Science

Introductory programming; digital system principles; computer architecture; logic design; data structures and algorithms; machine-level programming; programming language concepts; optimization methods, graph models, search and pruning techniques

Software Development

Software architecture and design; requirements specification; professional communication skills; designing concurrent and real-time software; designing parallel and distributed systems; computation methods for science and engineering; user interface design

Managing Software Development

Software process and product metrics

Management Information Systems (MIS)

Principles of information systems design



Professional Software Development(c) Shorter Schedules, Higher Quality Products, More Successful Projects, [... ]reers
Professional Software Development(c) Shorter Schedules, Higher Quality Products, More Successful Projects, [... ]reers
ISBN: N/A
EAN: N/A
Year: 2005
Pages: 164

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net