csc 395 – software engineering lecture 2: programming as art & intro to software engineering
TRANSCRIPT
CSC 395 –Software Engineering
Lecture 2:
Programming As Art & Intro to Software Engineering
Today’s Lecture
Discuss Computer Programming As Art Introduce Software Engineering
What “Software Engineering” means What a Software Engineer does Topics included in Software Engineering
Donald E. Knuth
Received every possible award in computer science
Wrote volume of books called Art of Computer Programming First created TeX typesetting language and
METAFONT font design system Major figure in algorithmic analysis,
programming languages, and computer programming Major contributor to theoretical computer science
Half the battle is showing up
Is Computer Science an art or science? Why or why not?
Software Engineering
Book’s definition of Software Engineering
[D]iscipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the client’s needs. Furthermore, the software must be easy to modify when the user’s needs change.
Does this sound like art or science?
Software Engineering
Programs often late, over budget, and buggy Led to 1967 NATO study group & 1968 conference Referred to as “software crisis” Note: Microsoft not created until 1975
Make producing software like making hardware, building bridges, or other instances of applied science Give rigor of other disciplines of engineering
40 Years of Software Engineers
From 9236 projects completed in 2004
Software Engineer
What does a Software Engineer do?
How does this differ from a Programmer?
Software Engineering Topics
Economics: Should we switch to faster coding method? What is included in “coding”? How were these experiments carried out? Consider costs of training Difficulty to make this switch Effect on overall productivity, finding & fixing bugs
Software Engineering Topics
Client Relationships:How to determine what they want? Settling on requirements is incredibly hard But sooner a problem is found, easier it is to fix
Software Engineering Topics
Psychology:What is the most productive way to get a group of ____ individuals to work on a project as a team?
Software Engineering Topics
Abnormal Psychology:What is the most productive way of getting individuals to work on a project as a team, given that they chose a field where they spend all day in front of a computer?
Software Engineering Topics
Warranties:We cannot prove a program will terminate. How do we find all the bugs?
A bug occurs at the client site. How do we know what caused the bug?
Can we prevent it from occurring again?
Software Engineering Topics
Maintenance:Is it acceptable to put out a program knowing you will need users to add patches?
Legal, Ethical, and Social Issues:We cannot be legally prevented from reselling a book, but can be prevented from giving away software that we no longer use. Why? Is this a good thing?
For Next Lecture
Monday’s lecture will Look at how software is really developed Discuss what is done in each stages of the
software lifecycle Give you a better idea of why Microsoft and EA
keep putting out lousy software