CSC 509 Software Engineering II CSC 509 Software
- Slides: 15
CSC 509, Software Engineering II CSC 509 Software Engineering II Winter Quarter, 2005 Clark S. Turner 1
CSC 509, Software Engineering II Administration • Instructor – Clark S. Turner • Required Books – Petroski, “To Engineer is Human” (read last term) – Winograd, “Bringing Design to Software” (read cover to cover) – Simon, “The Sciences of the Artificial” (you skimmed last term? read cover to cover) • Office: 14 -211 – phone (805) 756 6133 – Office Hours: ¤ Tuesday, 12: 10 - 3 pm ¤ Thursday 2: 10 - 4 pm • Prerequisites – 205, 508, permission of instructor, graduate standing • Course website at: – www. csc. calpoly. edu/~csturner 2
CSC 509, Software Engineering II Basic Course Requirements • • • Attendance and participation Presentations (you are expected to volunteer) to class Reporter duty to the class (abstract class progress each week) Personal journal recommended Near publishable quality research paper – 20 - 40 pages – proper use of sources to develop arguments – significant bibliography – topic in software engineering design (broadly interpreted) ¤ chosen, proposed by you, may be continuation of 508 work • focus on design aspects ¤ double dipping is fine with me ¤ collaboration is fine with me, but clear credit must be given to collaborators 3
CSC 509, Software Engineering II The Basic Definition of our Work (again) • Software Engineering is. . . – the study of software process, software development principles, methods and tools ¤ requirements elicitation and analysis ¤ requirements and design notations ¤ implementation strategies ¤ testing methods ¤ maintenance techniques ¤ management strategies – the production of quality software, delivered on-time, within budget, and satisfying users’ needs 4
CSC 509, Software Engineering II The problem and the response. . . • Software is typically – late – over budget – faulty – hence. . . the “software crisis” ¤ go see the “Chaos Report” referenced on my website! • Software Engineering – software production should use established engineering principles – history: coined in 1967 and endorsed by a NATO conference in 1968 5
CSC 509, Software Engineering II What type of software? • Small single-developer projects can typically get by without Software Engineering – typically no deadlines, small budget (freeware), not safety-critical • Software Engineering is required for – large projects (100, 000 lines of code and up) – multiple subsystems – teams of developers (often geographically dispersed) – safety-critical systems (software that can kill people. . . ) 6
CSC 509, Software Engineering II What is Engineering? • Engineering is – sequence of well-defined, precisely-stated, sound steps, which follow method or apply technique based on some combination of ¤ theoretical results derived from a formal model ¤ empirical adjustments for un-modeled phenomenon ¤ rules of thumb based on experience • This definition is independent of purpose. . . – “engineering” can be applied to many disciplines ¤ however, does software have the formal models, rules of thumb. . . ? • Are software “engineers” employees or professionals? – are we independent in our employ? ¤ do we have obligations to society? • go look at the Software Engineering Code of Ethics (ref on my website) 7
CSC 509, Software Engineering II Software Engineers require. . . • a broad range of skills – Mathematics – Computer Science – Economics – Management – Psychology • applied to all phases of software production • are we indeed supposed to be “general engineers? ” – Recall Jackson’s diatribes 8
CSC 509, Software Engineering II Requirements and Design Aspects • User needs and perceptions are difficult (impossible? ) to assess – functionality isn’t enough • • Requirements specification is a contract with the customer Requirements must provide a definitive basis for testing Requirements is about the domain of the problem Design suggests a solution in the software domain Requirements addresses “what? ” Design addresses “how? ” Or is “Design” on the other side of Jackson’s boundary? 9
CSC 509, Software Engineering II Sample Software Qualities • • Correctness Reliability Robustness Performance Usability Testability What do these terms mean? – what are the relationships between these qualities? – how can we “design” for such qualities? 10
CSC 509, Software Engineering II Uniqueness of Software • What are we dealing with? – The stuff doesn’t “wear out” (but does exhibit a bathtub curve …) – The stuff has no “tolerance” - it is binary – The stuff weighs nothing, and you can’t really “see” it. – It is very plastic, we can always “change” it in place ¤ try that with your automobile! • Why don’t other engineering principles apply? – For example, statistical reliability methods? ¤ No mean value theorem applies ¤ No accurate user profile or operational distribution – So, when we test, what do we find out about software? ¤ Can’t tell for sure if our software is good or not. 11
CSC 509, Software Engineering II Definitions! • Research (read the shaw paper linked on website!) • Process – go read Osterweil’s “Software Processes are Software Too” (link on my website) • • Tools Methods Design Function – distinguish “feature” 12
CSC 509, Software Engineering II Design - the topic of the course • Are we “designers? ” – give a few definitions – what is a “great designer” (Brooks? ) • Is “design” about – meeting the customer’s specifications (contract) – solving the user’s problem ¤ exactly who is the “user” and who is interested? 13
CSC 509, Software Engineering II Read for next time • Read – Ch 5 of Simon’s book regarding “the science of design” – Winograd (sections 1 - 3) – Assign all Winograd, some Simon • Need volunteers to present • How do these pieces stack up as research and contributions to knowledge? – Detail: ¤ facts of the situation, problem statement ¤ arguments about possible solutions ¤ author’s analysis of arguments and author’s solutions (or answers) ¤ your analysis of author’s work 14
CSC 509, Software Engineering II Class Reporters • Need 2 volunteers each week – each take notes on all work presented that week – meet after the week’s classes: ¤ discuss important and weak points ¤ make list of open questions discussed ¤ make list of questions that arise from the whole week of discussions ¤ make list of questions that actually were answered – create a 10 minute presentation for start of following week to analyze the previous week’s work in class ¤ Not a mere summary or abstract ¤ Needs to contain real thought, insights and questions raised ¤ Deliverable: present a written report (can be paper outline of slide presentation) with names, dates and relevant information to me ¤ volunteers chosen at first class 15