Announcement
- Final exam on May 28th 11:00 AM-1:00 PM
- May 9th: No more reduced SafeHome implementation. Instead, a sample program is given for your reference (see Project section).
- Feb 8th: CS 350 BBS at NOAH is available now. All class attendants are encouraged to write questions or comments on the class at the BBS.
Administrative Information
Instructor: Moonzoo Kim
- Office: 2434 (located at the east wing)
- Phone: 042-869-3543
- E-mail: moonzoo@cs.kaist.ac.kr
- Office hour: Tues & Thr 17:00-18:30 (reservation e-mail would be preferred)
- Teaching assistants:
- Yunho Kim — Office: 2438 (east wing) — E-mail: kimyunho@kaist.ac.kr — Phone: 042-869-3583 — Office hour: Wed 4:00-7:00 PM
- Chan-Hee Yi — Office: 1430 (east wing) — E-mail: chyi@salmosa.kaist.ac.kr — Phone: 042-869-5579 — Office hour: Tues 1:00-4:00 PM
- Lecture hours: MWF 11:00 AM - 12:10 PM
- Lecture room: 2112 (a.k.a the 2nd lecture room)
- Grading: HW & projects: 40%, Pop-up quiz & attendance: 20%, Midterm exam: 20%, Final exam: 20%
- Late HW is accepted with 20% penalty in 1 day, 40% penalty in 3 days. HW will not be accepted after that.
- Note: The official language in the class is English. All students should submit homeworks and project in English.
Course Material
- Text: "Software Engineering: A Practitioner’s Approach (SEPA)" by R. S. Pressman, McGraw-Hill, 6th Edition
- Sub-text: "Practical Model-Based Testing: A Tools Approach" by M. Utting and B. Legeard, Morgan Kaufmann
- Recommended reading:
- Fundamentals of Software Engineering (2nd ed) — C. Ghezzi, M. Jazayeri, D. Mandrioli
- Applying UML and Patterns (3rd ed) — C. Larman
- UML Distilled (3rd ed) — M. Fowler & K. Scott
- Code Complete (2nd ed) — S. McConnell
- Internet resources:
Course Schedule
- Wk 1-2: The Software Process
- Feb 13: General introduction to the class
- Feb 15: Intro. To SE (1/2)
- Feb 18: Intro. to SE (2/2)
- Feb 20: No class
- Feb 22: Ch1. Intro. to SE
- Feb 27: Ch2. A generic view of process
- Feb 29: Ch3. Process models
- Mar 3: Ch4. Agile Development
- Mar 5: Ch5. Software Engineering Practice
- Mar 7: Ch7. Requirements engineering
- Mar 10: Telelogic DOORS
- Mar 12-21: Unified Modeling Language (UML Tutorial) & Telelogic Rhapsody
- Mar 18: Ch8. Analysis Modeling (1/2)
- Mar 24, Mar 26: Ch8. Analysis Modeling (2/2)
- Mar 28: Ch9. Design Engineering
- Apr 7: Ch10. Architectural Design
- Apr 14: Ch11. Component Design
- Apr 16: Analysis model review
- Apr 21: Re-engineering home service robots for improved software reliability : a case study (slides)
- Apr 23: Ch14. Testing Tactics Supplementary matierial: Software Unit Test Coverage and Adequacy H ZHU, PAV HALL, JHR MAY - ACM Computing Surveys, 1997
- May 9: Guideline for SafeHome Implementation
- May 14, 16: Ch15. Product Metrics
- May 19-23: Advanced verification methods (JML, Java-MaC, etc.)
- May 19: Java Modeling Language (JML) (slides)
- May 21: Java-MaC: A Run-time Assurance Approach for Java Programs (slides) Tool download
- May 23: Unit Testing of Flash Memory Device Driver through a SAT-based Model Checker (slides) Tool download
- June 6: Final review on SafeHome project
Assignments
- Summary of “No silver bullet: essence and accidents of software engineering” — Computer, 20(4):10-19, April 1987
- Summary of "No silver bullet: Software Engineering Reloaded" — IEEE Software Jan/Feb 2008 (Due Mar 24)
Project: SafeHome in SEPA 6th ed
- SafeHome dialog
- Page list for SafeHome in SEPA: safehome_page_public.xls
- You can download DOORS, requirements management and traceability tool, and its manuals:
- DOORS
- DOORS manuals
- Install guide: DOORS install guide (Zip password given on Mar 10th class)
- Each team has two DOORS IDs, TeamN-1 and TeamN-2 where N is your team number. Initial password is not set. After first login, create your own password.
- We use SEPA as a main requirement source. You have to read SEPA carefully to understand system requirements, etc.
- Note that SEPA's description of SafeHome is not complete. Therefore, you have to make your own assumptions about unclear points, which must be explicitly stated.
- Post your questions regarding SafeHome project into the CS350 BBS to share the questions and answers with all classmates. Sending e-mail regarding the SafeHome project to the instructor or TAs is not encouraged.
- Each team should provide a "who did what" list to show how each team member contributed to the project for project progress.
- Team assignments:
- 박지영, 이재송, 최재영
- 이수현, 조재영, 조종기, 조준영
- 구지성, 김으뜸, 안다비, 이명경
- 권세중, 원강희, 이상영, 이지은
- 김근우, 박다혜, 오은수
- Mar 21st: Due of complete requirement specifications
- Make a systematic requirement specification of SafeHome using DOORS.
- Should provide both hardcopy and DOORS file.
- Apr 15th: Due of complete use-case diagram, use-case description, sequence diagram, and activity diagrams (swimlane diagram)
- You are welcome to add more diagrams or pictures if they help describe the SafeHome's requirements clearly.
- Presentation of analysis model on Apr 16th & 18th (in English):
- Each team has 20 minutes to present their design.
- Demonstrate concrete traceability.
- Presentation movies: Team1, Team2, Team3, Team4, Team5. If you cannot play the movies uploaded, follow the instruction in this link.
- Apr 28th: Due of class diagram, CRC cards, state diagram, and lessons learned
- Presentation of design model on Apr 30th & May 2nd (Each team has 20 minutes to present their design)
- You are welcome to add additional materials such as architecture or component design, if they can explain your design more clearly.
- Demonstrate concrete traceability.
- May 9th: Due of peer review of design document of other teams. See sample review of team5
- June 4th: Due of implementation and testing stages
- safehome.jar contains all device emulator classes as well as a demo source code. Run "jar safehome.jar" for demonstration.
- You should download and place camera1.jpg in the same directory of safehome.jar. If you open two cameras, download camera2.jpg too.
- A sample program which consists of a dumb CP in C, one camera in Java and one camera display in Java is provided as your implementation reference.
- Your code should contain full document/comments. For example:
- Test process that you undertake should be described, e.g., how you perform unit tests, integration tests, regression tests, top-down tests, bottom-up tests, etc. Test cases should be described, too.
- Design test cases for unit test first, then start implementation if possible.
- Mapping between implementation and your design should be explicitly described.
- June 6th 10:00 AM - 12:00 PM Final presentation