130 likes | 280 Views
CSC444 Software Engineering. Prof. David A. Penny Lectures: 6:10 – 8:00 pm Tutorial Days: 6:10 – 7:00 pm, 7:10 - 9:00 pm lecture Course Website: https://ccnet3.utoronto.ca/20079/csc444h1f/ http://www.cs.toronto.edu/~penny/teaching/csc444-07f. Professional Practices.
E N D
CSC444Software Engineering Prof. David A. Penny Lectures: 6:10 – 8:00 pm Tutorial Days: 6:10 – 7:00 pm, 7:10 - 9:00 pm lecture Course Website: https://ccnet3.utoronto.ca/20079/csc444h1f/ http://www.cs.toronto.edu/~penny/teaching/csc444-07f Introduction
Professional Practices • This course teaches you professional software development practices not consistently taught anywhere else. • Deals mostly with process, very little with specs/designs/coding. • If you have the aptitude and inclination of becoming a professional software engineer you will find the course fascinating. • Otherwise I guarantee you will be bored! • Applying these practices will help you avoid • Missed dates • Poor quality software • Badly-designed features • Poor user documentation • Poor architecture and architectural documentation • Dysfunctional professional relationships between “The Business Side” and Software Development • When software is built in a professional fashion in industry, this is how it is consistently done. Introduction
Experience • Need • Formal education in the computing sciences • Professional experience • Build software that lots of people pay money to buy • Not just “are you paid” • Make certain decisions for v1 of a product • Live with your mistakes through v2, v3, v4, ... • Make fewer mistakes next time around • We try to fill the gap a bit • Lessons coming out of extensive professional experience • Not all professionals agree on what constitute “basic professional practices” • Characteristic of an immature industry • But can agree on the problems we are trying to solve • One (informed) opinion will be presented here Introduction
About Prof. Penny • Graduated B.Sc. in CS UofT 8T5, Ph.D 9T3 • OOT IDE, Polyx, MiniTunis, CE, ... • IBM Labs 1992 – 1994 • C++ IDE for AIX • Algorithmics 1994 – 1999 • VP Software Development • RiskWatch > $500M in revenues to-date • Consultant 1999 – 2003 • Software management consulting (~10 engagements) • UofT CS 2000 – 2003 • Associate Professor • Electronics Workbench 2003 – 2005 • VP R&D – Acquired by National Instruments • MultiSim/UltiBoard/UltiRoute (8MLOC) • Ceryx 2005 – present • CIO • Provisioning system Introduction
Text • Required Course Text: • Professional Software Development • 2007 edition • by David A. Penny • ~350 pages • Can buy from me starting next week for $60. Introduction
Grades • 2 Solo Assignments – 15% each • A1: Self-Aware Programming • A2: Optimization and Testing • Late Policy: • 15% absolute penalty if handed in <= 1 week late • Not accepted after that • 1 Team Assignment – 25% • Release Planning and Team Software Construction • Exam – 40% • Closed book • Covers all lectures, tutorials, assignments, and assigned reading • Class Participation – 5% • Based on existence and quality of submitted questions and answers Introduction
Course Conduct • Come to ALL the lectures and come prepared • You should have read the assigned textbook reading • You should have thought about it • Take notes during lectures. Ask questions to clarify material you are not 100% clear on. • Review the posted slides afterwards. • Prepare for the midterm and the examinations by re-reading the text and the lecture notes. Practice writing the tests • Previous year’s midterms and exams are posted for your review purposes Introduction
Let’s Get started! Introduction
Top-10 Essential Practices • Crystallized for me whenever I enter into a new engagement. • If any of these are missing, I know I have something to fix. • These are all important • It will take more than this course to cover them all • You will agree that all suggestions are sensible and will probably vow to carry them out • On your first job, you’ll focus on code and test and forget most of them • You’ll be bitten in the ass • You’ll re-commit to the ideas (if you’re good) • Simple but hard • Trust me: make sure these things are done and everything will go ok • Very hard to change behaviour • Need to be dogged and determined and tricky Lecture 1
source code control reproducible builds infrastructure defect/feature tracking automated regression testing control release planning feature specifications architectural control effort tracking process control refinement business planning Lecture 1
Intended Audience • Commercial software vendor environment • Not open source, internal IT, ASP, NASA, ... • Who • Individual contributors, Technical leaders, First-line managers, Directors, VP’s, CTO’s • Next release • Not initial release • “Green fields” is 80% inspiration, 20% process • “Next Release” is 80% process • Next release development is more important to businesses • Initial release development • Innovation is clearly also important • Innovation is less amenable to help from process • Should set things up to be sustainable Lecture 1
New Product Versus Established One • New product • 1 yr. to develop • 3 coders, 1 tester, 1 documenter • Cost = 1 x 5 x $100,000 = $500,000 • Established Product • 5 years later • 20 coders, 10 testers/build, 5 documenters • Cost to date = $10,000,000 • Ongoing cost = $3,500,000 / year • Improve productivity by 10% • New product: save $50,000 • Established Product: save $1,000,000 to date, $350,000/year • Next release development is more economically important. • Understanding next release development allows you to setup things in a sustainable fashion during an initial release effort. Lecture 1
Tentative Lecture Schedule Introduction