Comp 523: Software
Instructor: Diane Pozefsky
Office: Sitterson 356
AOL and MSN Instant Messenger: dianepozefsky
Yahoo Messenger: dianepoz24
Time: Tuesday and Thursday 12:30 - 1:45
Location: Sitterson 011
What is software engineering?
In its SWEBOK project, IEEE defines software engineering as
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (Guide to the Software Engineering Body of Knowledge, IEEE 2001)
But in general, you will find a broad range of usages.
Software Engineering has come to mean at least two different things in our industry. First of all the term "software engineer" has generally replaced the term "programmer". So, in that sense there is a tendency to extrapolate in people's minds that Software Engineering is merely the act of programming. Secondly, the term "Software Engineering" has been used to describe "building of software systems which are so large or so complex that they are built by a team or teams of engineers", as was used in Fundamentals of Software Engineering by Ghezzi, Jazayeri, and Mandrioli. (Software Engineering Yellow Pages)
Underlying all the definitions is a set of processes and technologies that take software development from the sphere of art to an engineering discipline. Software engineering is still an emerging discipline and some of the technologies and models accepted today will be discredited, but given the importance of software development in today's world, its growth as an engineering discipline is certain.
The goal of this course is to teach the skills
necessary for building a software product as a team. The lecture
portion of the class will cover the broader picture of software
engineering that includes a wide range of software development projects
in terms of size, complexity, and criticality. There will be at least
one test that will cover the class material. The essence of the course,
however, is the faculty-coached team project. Teams of 3 students spend
the semester negotiating, estimating, scheduling, specifying, coding,
debugging, integrating, documenting and testing a substantial
programming product. Each project has a real client that is expecting a
completed project. Project grades are based on code, documentation,
ambition, effort, teamwork, and accomplishment.
At the end of the course, each student will have experienced all aspects of a software development project, including