Project management - Department of Computer & Information

advertisement
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
Download