CS 532 Software Engineering Fall 2014 Credits: 3 units Contact Hours: Monday and Wednesday 1400-1515 Instructors: Jo Ann Lane Office: GMCS 564 Email: jalane@mail.sdsu.edu Patty Kraft Office: GMCS 544 Email: pkraft@mail.sdsu.edu Office Hours: Mondays and Wednesdays 1300 – 1400 (and by appointment) Course Materials 1. Required text: Boehm, Lane, Koolmanojwong, and Turner, The Incremental Commitment Spiral Model: Principles and Practices for Successful Systems and Software, AddisonWesley, 2014. ISBN-13: 978-0-321-80822-6 2. CS 532 lecture notes/slides (available on Blackboard) Course Information for CS 532 Description from the Official Course Catalog Theory and methodology of programming complex computer software. Analysis, design, and implementation of programs. Team projects required. Prerequisites: Computer Science 320 and 530 Course Type: Selected elective course in the program Specific Goals for CS 532 Course-Level Student Learning Outcomes 1. Ability to integrate concepts from previous CS core courses and software engineering principles and apply to the development of a team project. 2. Ability to select various software development life cycle models (both traditional and agile) appropriate for a given software system. 3. Ability to translate a set of software system needs into a set of requirements that can be used to plan and manage the software development process for the team project. 4. Ability to estimate the size of a software application and use size to estimate team project schedule and cost (effort). 5. Ability to apply techniques to reduce software development cost/schedule or to manage a software project to fit within cost/schedule constraints. 6. Ability to plan appropriate software requirement testing strategies for different types of software. 7. Ability to select and apply compatible design techniques for software architectures, data models, user interfaces, and computational algorithms. 8. Ability to apply quality processes (peer reviews/testing) to team project work products and balance these activities with project cost/schedule constraints. 9. Ability to decide when a software system is sufficiently mature to deliver to the customer/user community. Relationship to CS Program Course Outcomes CS 532 addresses the following CS Program course outcomes: a) An ability to apply knowledge of computing and mathematics (mathematics limited to requirements for team project) b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs d) An ability to function effectively on teams to accomplish a common goal e) An understanding of professional, ethical, legal, security and social issues and responsibilities f) An ability to communicate effectively with a range of audiences (customer/team level) g) An ability to analyze the local and global impact of computing on individuals, organizations, and society h) Recognition of the need for and an ability to engage in continuing professional development i) An ability to use current techniques, skills, and tools necessary for computing practice j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices. k) An ability to apply design and development principles in the construction of software systems of varying complexity. Topics Covered The following topics are covered in CS 532: 1. Software Engineering Overview 2. Project Planning and Management: lifecycle models and estimation 3. Requirements Identification and Management: techniques and tools, functional requirements, and performance requirements 4. Development Tools and Methods: documentation, peer reviews and inspections, configuration management, metrics 5. Database Design: normalization and addressing performance issues 6. Software Architecture/Top-Level Design: architecture styles, reuse, commercial-offthe-shelf software products 7. User Interface Design: techniques, use of patterns, guidelines 8. Detailed Design: data structures, user interfaces, algorithms 9. Implementation: coding, unit testing, and debugging techniques 10. Independent/Formal Testing: test levels, test planning, test execution and reporting, analysis of test results Course Schedule and Grading Policies Approximate Due Dates for Major Assignments and Exams Week/ Lead 1 Week Start Date 1/Lane and Kraft 8/25 2/Lane 9/1 Reading Assignment Topic Software Engineering Overview Chapter 0 Project Activities/ Reviews Set up teams HOLIDAY: 9/1/2014 ICSM Principles Chapters 1-2 Finalize teams and projects 3/Lane 9/8 ICSM Process Patterns Chapters 3-5 4/Kraft 9/15 Requirements Identification and Management Chapters 6-7 5/Lane 9/22 Project Planning, Management, Quality Assurance, and Metrics Chapters 14 Requirements “database” due for approval by 2 pm on 9/22/2014 6/Kraft 9/29 Test Planning Chapter 15 First project report due: Requirements analysis and project plan due by 2 pm on 10/1/2014 7/Kraft 10/6 Data Modeling/Design Web readings1 8/Kraft 10/13 Software Architecture/TopLevel Design (slides 1-27) Chapter 8 9/Lane and Kraft 10/20 10/Lane 10/27 Second project report due: Test plan/updated project notebook due by 2 pm on 10/22/2014 1st Midterm Exam: Review on 10/20/2014, exam on 10/22/2014 Based on reading and lecture materials from weeks 1 through 7 Software Architecture/TopLevel Design (continuedslides 28 to end) Chapter 11 http://www.itteam-direct.com/gwbadat.htm : data modeling; http://www.phlonx.com/resources/nf3/ : database normalization Week/ Lead Week Start Date 11/Kraft 11/3 User Interface Design Web readings2 12/Kraft 11/10 Detailed Design Chapter 9 13/Lane 11/17 Implementation Chapter 9 14/Kraft 11/24 Test and Operations Chapter 10 Topic Reading Assignment Project Activities/ Reviews Third project report due: Project architecture and data model; updated project plan/notebook due by 2 pm on 11/3/2014 Wednesday, November 26, 2014: No classes 2 15/Lane and Kraft 12/1 Team retrospectives of projects and demos of project prototypes/first increments Critique of team retrospectives and demos due at end of class on 12/3/2014 15/Lane and Kraft 12/8 2nd Midterm Exam: Review on 12/8/2014, exam on 12/10/2014 Comprehensive exam with more emphasis on reading and lecture materials from weeks 8 through 14 16/Lane and Kraft 12/15 13001500 4th project report due: Comparison of project plans to actual performance; project lessons learned and lessons learned assessment; test report based on actual testing conducted on prototype/first increment. www.time-tripper.com/uipatterns/index/php and http://designinginterfaces.com/ : Introduction, Organizing the Content, Getting Around, Organizing the Page, Getting Input from Users, and Showing Complex Data. Major Assignments: Team Projects Class will be divided into 4-5 person teams. Each team will be provided a set of high-level requirements to be implemented, integrated, and tested. Each team’s requirements will be implemented using a selected set of the software engineering processes covered in the course. Activities will begin with project planning and culminate in a review of the team results. Each team will be required to submit 4 reports related to their project: 1. The first report will state and analyze the objectives and requirements for the system as well as describe the approach and estimates for developing the software systems. 2. The second report will present the project test plan. 3. The third report will describe and analyze the selected architecture and data model for the software system to be developed. 4. The fourth report will compare actual results to initial plans and then develop a set of lessons learned for future projects (what worked well, what did not work well, and for elements that did not work well, recommendations for improving the process). Scored activities and weighting by percentage of total score 1. Individual work: 50% First Midterm (20%) Second Midterm (20%) Class participation/retrospective analysis (10%) 2. Team work: 50% Each of 4 papers (10%) Demo (10%) Grading Scale: Standard curve Other Course Policies Special Assistance: If you are a student with a disability and believe you will need accommodations for this class, it is your responsibility to contact Student Disability Services at (619) 594-6473. To avoid any delay in the receipt of your accommodations, you should contact Student Disability Services as soon as possible. Please note that accommodations are not retroactive, and that accommodations based upon disability cannot be provided until you have presented your instructor with an accommodation letter from Student Disability Services. Your cooperation is appreciated.