King Saud University College of Computer and Information Sciences Department of Software Engineering SWE 313 – SOFTWARE PROCESS AND MODELING 3(3-0-1) Semester II, Academic Year 2009-2010 Required Course: 3 hours lecture and 2 hours lab. per week Instructor: Dr. Abdullah Alghamdi Course Title: SWE313 Class Time : SAT, MON from 5:00 PM to 7:00 PM Class Room: CCIS Bldg Room 64 1st Floor Course Description (catalog): This course aims to provide a comprehensive presentation of the key concepts and models used in object-oriented approaches in software engineering. This includes a review of ObjectOriented concepts and modeling with UML: Structural Modeling, Behavioral Modeling – System architecture design, – User Interface Design – Object Persistence Design - Class and Method Design - Object-Oriented Testing – Unified Process development cycle – Use case analysis – Sequence diagrams – Encapsulation – Inheritance – Polymorphism – Design principles of coupling and cohesion – Design patterns. Students will be exposed to: Rational’s Software Tools, UML Generating tools, standard templates for SRS, Quality control and other SE related documents. Students will participate in a group project on objectoriented software engineering. Prerequisite(s): - Co-requisite(s): - Courses: SWE 211 – Introduction to Software Engineering Topics: General Overview about SDLC Development Methodologies Object-Oriented Concepts Courses: IS 230 – Introduction to Database Systems Topics: Data Modeling Textbook(s) and/or Other Required Materials: Primary: 1. S. Bennett, S. McRobb, and R. Farmer (2006). Object-Oriented Systems Analysis and Design Using UML. 3rd Edition, McGraw-Hill. Supplementary: 2. G. Booch et al. (2007). Object-Oriented Analysis and Design with Applications. 3rd Edition, Addison-Wesley. 3. C. Larman (2005). Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design. 3rd Edition, Prentice Hall. Course Objectives: 1. Define and Understand fundamental and advanced topics in O-O Software Engineering. 2. Understand the key concepts and principles of object-oriented analysis and design 3. Understand UML and its features and diagrams 4. Apply the object-oriented concepts in developing software systems. Course Learning Outcomes: 1. Define fundamental and advanced OO Software Engineering concepts 2. Understand how to capture system requirements in use cases 3. Understand how to transform an analysis models into to design models 4. 5. 6. 7. Apply an iterative process to the development of a design model. Describe some basic design considerations, including the use of design patterns. Use of different UML Diagrams to represent analysis and design models. Use the techniques of forward and reverse engineering to generate code from UML models and vice-versa. 8. Understand Software Processes and Software development methodologies (such as RUP). 9. USE OO Case tools (such as IBM Rational Rose) to create UML diagrams. Major Topics covered and schedule in weeks: Topic Review of Object-Oriented Concepts and principles of objectoriented analysis and design Abstraction, encapsulation, inheritance, polymorphism, Structural Modeling, and Behavioral Modeling Modeling the system functionality with use cases Apply an iterative process to the development of a design model: Unified Process Identify classes and class responsibilities Object Persistence Design Class and Method Design Distinguish between analysis and design activities. Describe some basic design considerations, including the use of design patterns. Model the architecture of the system. User Interface Design Use UML to represent analysis and design models. Use the techniques of forward and reverse engineering to generate code from UML models and vice-versa. Object-Oriented Testing Use OO case tools (such as Rational Rose and Rational Software Architect) to create UML diagrams. Concluding remarks, Review, and Evaluation Total # Weeks # Contact hours* 0.5 2.5 1 5 2 1 10 5 1 5 1 1 5 5 1 1 5 5 1 1 5 5 1 1 5 5 1.5 15 6 75 *Contact hours include lectures, labs, and tutorials. Assessment Plan for the Course: Students’ performance is evaluated based on quizzes, exams, and group projects. Evaluation: Quizzes Project (3 parts) Midterm Exam Final Exam Total 15% 20% 25% 40% 100% Course Policy: No late delivery of the project. Students are encouraged to discuss problems in the project but not copy. The final exam will be comprehensive. Contribution of Course to Meeting the Requirements of Criterion 5 (Curriculum): Curriculum Discipline Contribution General Education Mathematics and Basic Sciences Supporting Computing Topics Core Software Engineering Topics: Science Core Software Engineering Topics: Design Major Design Experience 50 % 40 % 10 % Relationship of Course to Program Outcomes: # Outcome Description (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) (m) (n) (o) an ability to apply knowledge of mathematics, science, and engineering an ability to design and conduct experiments, as well as to analyze and interpret data an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability an ability to function on multidisciplinary teams an ability to identify, formulate, and solve engineering problems an understanding of professional and ethical responsibility an ability to communicate effectively the broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context a recognition of the need for, and an ability to engage in life-long learning a knowledge of contemporary issues an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice the ability to analyze, design, verify, validate, implement, apply, and maintain software systems the ability to appropriately apply discrete mathematics, probability and statistics, and relevant topics in computer science and supporting disciplines to complex software systems the ability to work in one or more significant application domains the ability to manage the development of software systems H=High, M= Medium, L=Low Contribution M H H H