Tim St. John Masters Computer Engineering Software Engineering Track

advertisement
Tim St. John
Masters Computer Engineering
Software Engineering Track
Software Engineering Programs
Are Not
Computer Science Programs
By David Lorge Parnas
Presented by
Timothy St. John
Software Engineering
• Software Engineering courses have become a source of
contention in many universities.
• Computer Science departments have resisted the thought of
Software Engineering being a facet of Engineering.
• In this presentation I will discuss the authors beliefs of a
separation of the two departments.
• I will also compare and contrast the two departments.
• Then finally I will present some of my own beliefs on the topic
Software Engineering are not Computer Science Programs.
Why do we need a New Type of
Engineer?
•The increase importance of software.
•The need for software to be able to integrated
with hardware.
•The need for a New type of Engineer that is able
to work with other disciplines of Engineering.
•Even with this new type of Engineer there is still
the need for CS professionals.
SE Are Not Just Good Programmers
• The term “Software Engineer” is used as a euphemism for
“programmer”.
• An Engineer is a professional who is held responsible for
producing products that are fit for use.
• Software Engineers need to know many things that are not
part of Computer Science.
• Software is never used in isolation from other Engineering
products.
A Historical Analog
• As an area of science becomes mature, the educational
institution develop an engineering program.
• One career is for those who like to design products for others
to use.
• The other is for those who like to study the phenomena that
interests both groups and extending our knowledge in this
area.
• Each career path attracts a distinct type of student.
How Does Science Education Differ
From Engineering Education
•
Future Scientists, who will add to our knowledge base need
to learn:
1)
2)
3)
•
What is true.
How to confirm or refute models of the world.
How to extend our knowledge of what is true in their field.
Future Engineers, who will design trustworthy products,
need to learn:
1)
2)
3)
What is true and useful in their chosen specialty.
How to apply that body of knowledge.
The design and analysis discipline that must be followed.
Engineers and Scientists are different
• The differences between Science and Engineering programs
make sense because:
– If you are going to do specialized research, extending the science, you
can afford to be narrow in your body of knowledge but not out-ofdate.
– If you are carrying out scientific research, you can expect your results
to be checked by those who read and referee your reports and papers.
– Scientists frequently work on narrow problems or in teams; licensed
professional engineers often take responsibility for some complete
product, which means that they require extensive knowledge outside
of their engineering specialty.
What will Software Engineers Do?
• Analyze the intended application to determine requirements
that must be satisfied.
• Participate in the design of the computer system
configuration.
• Design the basic structure of the software.
• Analyze the software structure for completeness, consistency
and suitability for the application.
• Implement the software as a set of well-structured and well
documented programs.
• Perform systematic and statistical testing of the software and
integrated computer systems.
Why does the Distinction Between CS
and SE Appear unclear?
• Many faculty in Computer Science departments believe that
they are already teaching Software Engineering.
• Various educational programs have included some software
courses in their programs.
• Computer Science departments has tried to fill the gap by
including so-called “Systems” or “Applied computer Science”
courses in their offerings.
• It is the attempt by many CS programs to fill both roles that
makes it difficult for some to see why we need a separate SE
program.
Differences in Curriculum Philosophy
• A SE program should be designed for accreditation as an
engineering program.
• A SE program will be relatively rigid with few technical
options.
• A SE program, like many other Engineering programs, might
not require students to pick their specialty within Engineering
until second year.
• CS programs can start presenting specialized material earlier.
• The CS programs should continue to offer students a chance
to be curiosity driven when choosing courses.
• CS programs can spend more time discussing research areas
that are not yet routine or even ready to use.
Differences in topic Coverage
• Some of the topics covered in CS could be:
– The denotational semantics of programming languages.
– Neural computation, and many parts of artificial
intelligence, and some aspects of computability and
automata theory.
 Some of the topics covered in SE could be:
 SE programs should understand aspects of
communicational, control theory, and interface design.
 SE programs should stress known algorithms and
applying tools and technology that were developed by
others.
Similarities and Differences in course
content
Similarities:
• Mathematical logic is important to both SE and CS.
• Courses in operating systems.
Differences:
• SE programs should have an emphasis on the role of logic in checking
specifications.
• CS programs on logic , students would learn the differences between
various kinds of logics, and to discuss issues such as generalized decisions
procedures and the meaning of non-denoting terms.
• CS programs prepare students to continue their studies in graduate
programs.
• SE programs focus on preparing students to enter the workforce
immediately after undergraduate programs.
A Sketch of a SE Curriculum
• Basic courses taken by all other engineering
disciplines.
• Courses for SE that provide an overview of basic
Engineering disciplines.
• Courses on the mathematical foundations of SE.
• Software design courses.
Software Courses
• Software Design 1: Programming to meet Precise Specification
• Software Design 2: Structure and Documentation of Software
• Design and Selection of Computer Algorithms and Data
Structures
• Machine-Level Computer Programming
• Computer Networks and Computer Security
• Software Communications systems
• Computational Methods for Science and Engineering
• Design of Real-Time Systems and Computerized Control
Systems
CS Course that should be included
in the SE Curriculum
• Applications of Mathematical logic in Software
Engineering.
• Discrete mathematics.
• Statistical Methods for Software Engineering.
• Database design.
Courses Shared with most other
Engineering disciplines
•
•
•
•
•
•
•
•
Linear Systems.
Calculus 1,2.
Differential Equations.
Intro to Electrical Engineering.
Intro to Programming for Engineers.
Engineering Economics.
Statics
Dynamics.
SE Education must focus on the
Fundamentals
• Students need to learn the fundamentals of physics,
mathematics, and a way of thinking.
• Students need to remember that the topics are today’s
replacements for earlier fads and will be replaced.
• The fundamentals taught today needs to last for most
students careers which could last up to 4 decades in some
cases.
• It is important that the software courses be taught differently
from convent CS courses.
• Students who choose engineering as a career path are people
who want to learn how to design and analyze real systems.
Software Engineering is different from
Computer Science
• CS programs tend to focus on core software areas, but there is
a growing need for people to develop software for new
applications.
• SE branch of Engineering is quite different from the
specialized CS programs titled “Software Engineering”.
• Software Engineering programs should be accredited unlike
CS programs.
• Licensing of Software Engineers who are in private practice is
just as important as the licensing of Civil Engineers.
Overview
• This paper was published in December of 1998.
• The papers example of EE and Physics was a good example of
what could happen to CS and SE.
• The differences between Science and Engineering programs
make sense.
• What Computer Science majors are developed to become.
• What Software Engineers majors are developed to become.
• Computer Science must continue to develop.
My Philosophy
•
•
•
•
I was a CS major when I applied to UCF.
What I believe the difference between CS and SE.
What are the similarities of the two programs.
What I think should be included in the SE program that is only
in the CS program.
• What I think should be included in the CS program that is only
in the SE program presently at UCF.
• What I think should become of the future SE programs.
Any Questions?
Tim St. John
[email protected]
Download