CSC 509 Software Engineering II CSC 509 Software

  • Slides: 15
Download presentation
CSC 509, Software Engineering II CSC 509 Software Engineering II Winter Quarter, 2005 Clark

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

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

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

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

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

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

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

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

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

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?

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

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

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

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 –

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