190 likes | 197 Views
Explore fundamental concepts and methods for building high-quality software systems. Topics include development processes, requirements elicitation, design techniques, validation strategies, and project management. Not a programming course.
E N D
CourseOverview 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).
Syllabus Lecture Notes Practice Exam Problems Exercises Reading assignments Announcements Web Site Visit the course website at: www.cise.ufl.edu/class/cen5035/SE_founds
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 (model-based) 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, inter-organizational distributed computing, service-oriented 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.
CourseOverview Software Engineering Foundations Stephen M. Thebaut, Ph.D. University of Florida