CMPT 275-4 E100: Software Engineering I
Instructor: Dr. Herbert H. Tsang, P.Eng., Ph.D.
TA: Denny C. Dai
Lecture: Thur, 17:30-20:20, SFU Harbour Centre HCC 1800
1. Course Objectives/Description
An introduction to software engineering techniques used for both software development process and software project management. The course centers on a team-based software development project. Students will utilize different tools to drive requirements gathering, object-oriented analysis, user documentation and design phases. The project also includes implementation and testing phases as well as simple data normalization. Release and maintenance phases are discussed. Throughout the course, software project planning, quality assurance, configuration management and people management are examined.
- Software Life Cycle and Software Development Process
- Requirements Gathering and Specification, as well as Object-Oriented Analysis
- Design: high-level design (architectural, module interface, user interface, etc.) and low-level design (detailed design of classes)
- Implementation: code standards, code review, etc.
- Testing: unit, integration, system, user acceptance and test plans
- Documentation: user manual, etc.
- Issues related to Maintenance and Support
- Introduction to Project Management
- Introduction to Software Configuration Management
- Introduction to Quality Assurance
The above material will be covered through lectures, reading, discussions, homework assignments, and a course project.
- Assignments ……………………50%
- Final …………………………..35%
Most assignments will be done in teams. Finally, the university may use, or require students to submit assignments to an automated service that checks for plagiarism (i.e. cheating by copying). Closed-book exams. Late assignments will not be accepted. Students must attain an overall passing grade on the weighted average of exams in the course in order to obtain a clear pass (C- or better). Finally, the university may use, or require students to submit assignments to an automated service that checks for plagiarism (i.e. cheating by copying).
3. Course Project
The course centers on a team-based software development project. The goal of the project is develop software which has an online component. This software shall run on an iPhone or iPod/Touch. SFU School of Computing Science is part of the iPhone Developer University Program. The University Program provides a wealth of development resources, sophisticated tools for testing and debugging, and the ability to share applications within the same development team. Institutions can also submit applications for distribution in the App Store.
- Note that most assignments will be done in teams.
- All team must consist of 4 or 5 people. Team member are assigned randomly.
- The grade you receive for the team project is based on the assumption that each team member put 100% effort into the team project. If you have a slacker team member who does not do their work, then discuss this issue in your team meetings.
- It is up to your team to decide how best to organize itself. You may want to experiment with different organizational structures over the semester until you find one that works best for your team.
4. Class Schedule, Readings, and Assignments
|1||May 7||Course intro; project teams; introduction to version control with Subversion; other software tools.||Chapter 1 (Introduction)|
|2||May 14||Software process models: waterfall, evolutionary; component-based. Process iteration: incremental, spiral. Overview of process activities. The Rational Unified Process. CASE tools.||Chapter 4 (Software Processes)|
|3||May 21||Overview of management activities; project planning; project scheduling; bar charts; activity networks; Gantt charts. Risk management: identification, analysis, planning, monitoring.||Chapter 5 (Project Management)|
|4||May 28||Functional and non-functional requirements; domain, user, and system requirements; interface requirements; requirements document. Feasibility studies; requirements elicitation, analysis, and discovery; requirements validation and management||Chapter 6 (Software Requirements)|
|5||June 4||Feasibility studies; requirements elicitation, analysis, and discovery; requirements validation and management.||Chapter 7 (Requirements Engineering)|
|6||June 11||System models: context models, behavioral models, data models, object models, structured methods.||Chapter 8 (System Models)|
|7||June 18||High-level system organization; modular decomposition; control styles||Chapter 11 (Architectural Design)|
|8||June 25||Midterm examination (15%)|
|9||July 2||Objects and classes; object-oriented design methodology.||Chapter 14 (Object-oriented Design)|
|10||July 9||UI design issues; UI analysis; interface prototyping and evaluation||Chapter 16 (User Interface Design)|
|11||July 16||Verification and validation; software inspections; formal and automated methods. System testing; component testing; test case design; test automation.||Chapter 22 (Verification and Validation) Chapter 23 (Software Testing)|
|12||July 23||Agile methods; extreme programming; RAD; prototyping. Design patterns; application frameworks.||Chapter 26 (Software Cost Estimation)|
|13||July 30||Estimation techniques; algorithmic cost modeling; project duration and staffing. Group project presentations. Guest lecturer: Justine Bizzocchi, Technology Manager, University/Industry Liaison Office, Simon Fraser University||Chapter 17 (Rapid Software Development) and Chapter 18 (Software Reuse)|
|August 10||Final Examination (35%) / 19:00-22:00 / HCC 1800|
Midterm (~ Week 8)
Final (~Week 14-15)
5. Text / References (software engineering)
- Ian Sommerville. Software Engineering (8th edition). Pearson, 2007. Online: author, publisher. [REQUIRED]
- Gustafson, David A. Shaum's outline of theory and problems of software engineering, New York : McGraw-Hill, 2002.
- Object-Oriented Software Engineering: Using UML, Patterns, and Java, Bernd Bruegge, Allen H. Dutoit, Prentice Hall, 2004: Second Edition
- The Mythical Man-Month, Frederick P. Brooks, Addison-Wesley, Anniver, 1995: Anniversary Edition [Recommended]
- Facts and Fallicies of Software Engineering, Glass, Robert L., Addison-Wesley, 2003
- Roger S. Pressman. Software Engineering: A Practitioner's Approach. McGraw-Hill, 2004. Online: publisher, ToC.
- Carlo Ghezzi, Dino Mandrioli, Mehdi Jazayeri. Fundamentals of Software Engineering. Prentice Hall, 2002. SFU record.
- Frederick P. Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, 1995. Online: Safari, SFU library.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. SFU record.
- Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2000. Online: author, Safari, SFU library.
- Kent Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, 1999. Online: Safari, SFU library, Agile Manifesto.
- Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1999. Online: Safari, SFU library.
- James Rumbaugh, Ivar Jacobson, Grady Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999. Online: Safari, SFU library.
- Martin Fowler. UML distilled: applying the standard object modeling language. Addison-Wesley, 2004. Online: Safari, SFU library.
- Gerard J. Holzmann. The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, 2003. Online: Safari, SFU library.
- Flemming Nielson, Hanne Riis Nielson, Chris Hankin. Principles of Program Analysis. Springer, 2005. SFU record.
6. Extra Readings
- "Two case studies of open source software development: Apache and Mozilla" link
- "On the criteria to be used in decomposing systems into modules" link
- "Software risk management: principles and practices by Barry Boehm" link
- "How Microsoft builds software" link
7. Useful links
- Project management and requirements engineering http://www.processimpact.com/pubs.shtml
- Dr. Jody Paul's website on Software Engineering http://www.jodypaul.com/sweng.html
- How to Design Programs - http://htdp.org/ and http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
- Software Engineering Institute | Carnegie Mellon - http://www.sei.cmu.edu
- Construx Software - http://www.construx.com
- Software Productivity Center - http://www.spc.ca
- http://www.joelonsoftware.com (especially: www.joelonsoftware.com/articles/fog0000000043.html)
- http://www.softwaremetrics.com (good materials on Function Points including introductory and long training manuals)
- Ed Yourdon - http://www.yourdon.com
- Software development resources - http://www.martinig.ch
- iPhone development related information
- iPhone Dev Center - http://developer.apple.com/iphone/
- iPhone Developer Program - http://developer.apple.com/iPhone/program/
- Apple iPhone information - http://www.apple.com/iphone/
- iPhone Developer University Program - http://developer.apple.com/iphone/program/university.html
- Stanford CS 193P iPhone Application Programming http://www.stanford.edu/class/cs193p/cgi-bin/index.php
- JUnit web site - http://www.junit.org/
- JUnit FAQ - http://junit.sourceforge.net/doc/faq/faq.htm
- JUnit Cookbook - http://junit.sourceforge.net/doc/cookbook/cookbook.htm
Academic Honesty plays a key role in our efforts to maintain a high standard of academic excellence and integrity. Students are advised that ALL acts of intellectual dishonesty are subject to disciplinary action by the School; serious infractions are dealt with in accordance with the Code of Academic Honesty (T10.02) (http://www.sfu.ca/policies/teaching/t10-02.htm). Students are encouraged to read the School's policy information (http://www.cs.sfu.ca/undergrad/Policies/).
- CMPT 201 or CMPT 225, MACM 101(or CMPT 205), MATH 151
Copyright © 2009, Herbert H. Tsang