90 likes | 107 Views
CSE350 Software Design and Engineering. University of Pennsylvania http://www.cis.upenn.edu/~jms 254 Moore GRW, 8-9509 January 16 th , 2001. Administrative. TA, Chuck Davin, davin@dsl.cis.upenn.edu My Office Hours are T/Th 8:30 or by Appt. – jms@cis.upenn.edu
E N D
CSE350 Software Design and Engineering University of Pennsylvania http://www.cis.upenn.edu/~jms 254 Moore GRW, 8-9509 January 16th, 2001
Administrative • TA, Chuck Davin, davin@dsl.cis.upenn.edu • My Office Hours are T/Th 8:30 or by Appt. – jms@cis.upenn.edu • No mid-term or final; 100% of the grade based on term project implemented by a group of 3 people • Plagiarism results in an “F”
Course Organization • Principles and Practice • Learn by listening and doing • Tuesday’s classes will be lectures on topics from the syllabus • Thursday’s classes will be focused on material needed for the project • Project will be kernel coding for OpenBSD – implementation of IP striping
Bulk Pack ready next week – copy center OpenBSD CD-Roms when groups are formed www.openbsd.org to read ahead Need to program in “C” Large vs. Small Systems – scale Software lifecycle SW reuse. Tools. Programming as a group activity SW Testing Documentation Legal issues Syllabus
What is SW Engineering? • SW systems are large and complex • Society increasingly relies on them • They are enormously costly • They are engineered artifacts • Opportunity: engineering discipline • So far: not really there. But why???
It’s not like other engineering! • Mathematics exists for the rest of engineering • Add cement, power, pressure,… voila! • Software systems are “non-linear” • Changing a single bit may break the program • Are there any principles?
Most “principles” are empirical • Adding programmers slows things down • Cost rises with complexity • Complexity is difficult to measure • 10% of the cost is development • 90% of the cost is maintenance • Major cost factor is people • At a certain scale, it’s a management problem
Complexity • All metrics are approximate • Lines of code? • Number of branches? • McCabe’s complexity measure? #programmers Complexity increasing….
Perhaps the central question is: • If you want to build a VERY complex system, are you better off • Enhancing “super-programmer” • Managing an “army of ants” • What do you think????