Course Overview Software Engineering Foundations Stephen M. Thebaut, Ph.D. University of Florida Contact Info ● Instructor: Steve Thebaut ― e-mail: smt@cise.ufl.edu ● Teaching Assistant: James Nichols ― e-mail: jinichol@cise.ufl.edu Description ● A graduate-level survey of the fundamental concepts and principles underlying current and emerging methods, tools, and techniques for the cost-effective engineering of high-quality software systems. ● NOT a “programming” course. ● Focuses on surveying critical aspects of SE that may be less familiar to students of computer science. E.g.: Description (cont’d) ― identifying a development process appropriate to the circumstances, ― eliciting and documenting requirements, ― indentifying appropriate design techniques, ― employing effective verification and validation strategies throughout the software development lifecycle, ― software maintenance, and ― software project management. Prerequisites ● Familiarity with programming using a high-level language (C, C++, Java, etc.) ● Basic knowledge of algorithms, data structures (linear lists, etc.), and discrete math (symbolic logic) Class Logistics ● Lectures will be presented by the instructor in the morning based on prepared notes covering the main topics of the course. ● In the afternoons, students will prepare for and participate in TA- and student-lead discussions of assigned readings, exercises, and problem sets (schedule to be provided). Web Site Visit the course website at: www.cise.ufl.edu/class/cen5035/SE_founds ● Syllabus ● Lecture Notes ● Practice Exam Problems ● Exercises ● Reading assignments ● Announcements Textbooks ● SOFTWARE ENGINEERING, 8th Edition, by Ian Sommerville, Addison-Wesley, 2007. ● THE MYTHICAL MAN-MONTH, ESSAYS ON SOFTWARE ENGINEERING, Anniversary Edition, by Fred Brooks, Addison Wesley, 1995. ● REQUIREMENTS ENGINEERING: QUALITY BEFORE DESIGN, by Donald Gause and Gerald Weinberg, Dorset House Publishing, 1989. ----------------See the course website for required and recommended readings. Lecture Topics ● Course Overview and Introduction to SE: FAQs about SE, professional and ethical responsibility ● Software Processes: process models and activities, waterfall vs. evolutionary development, component-based SE, iteration, spiral development, Rational Unified Process, CASE ● Software Project Management: management activities, project planning and scheduling, risk management Lecture Topics (cont'd) ● Software Requirements Engineering: functional vs. non-functional requirements, user and system requirements, interface specification, software requirements documents, feasibility studies, elicitation and analysis, validation, requirements management ● Rapid Software Development and Prototyping: agile methods, extreme programming, RAD, software prototyping Lecture Topics (cont'd) ● Formal Specification: formal specification in the software process, sub-system interface (algebraic) specification, behavioral (modelbased) specification ● Architectural Design: architectural design decisions, system organization and decomposition styles, control styles, reference architectures Lecture Topics (cont'd) ● Distributed Architectures: multiprocessor architectures, client-server architectures, distributed object architectures, interorganizational distributed computing, serviceoriented software engineering ● Object- and Aspect-Oriented Design: objects and object classes, information hiding, aspects, join points and point cuts, design evolution ● Software Reuse: design patterns, application frameworks, component-based SE Lecture Topics (cont'd) ● Verification and Validation: V&V planning, reviews and inspections, black-box testing, white-box testing, integration and higher-level testing, proofs of correctness ● Software Evolution: program evolution dynamics, software maintenance ● Process Improvement: process and product quality, CMMI process improvement framework Examinations and Grades ● Course grades will be based solely on: ― a 60-minute "mid-term" exam (30%), ― a 90-minute comprehensive final exam (50%), and ― exercises and afternoon course work (learning activities, discussions, presentations, etc.) (20%) ● Grading Scale: A: 90-100% A-: 80-89% B+: 70-79% B: 60-69% B-: 50-59% Failing: 0-49% Tentative Exam Schedule ● The "midterm" exam, scheduled for July 23, covers the first half of the course (i.e., through Distributed & Service-Oriented Systems). ● The comprehensive final exam, scheduled for July 31, covers the entire course. Exam Ground Rules and Format ● Exams are closed-book/closed-notes. ● No calculators, laptops, PDA’s, etc., are allowed. ● All answers should be given in the spaces provided on the exam only. ● Question format may be short answer, matching, true/false, fill-in-the-blank, proofs, etc. ● The point-value of each question will be given. ● See the website for sample exam problems. "Homework" Exercises ● Problem sets/exercises will be posted on the course website. ● Students may work in small groups or individually. ● Solutions will submitted for evaluation and, in some cases, presented in class. Questions? Course Overview Software Engineering Foundations Stephen M. Thebaut, Ph.D. University of Florida