소프트웨어 공학 개론
2018년 2학기
담당교수: 최은만(emchoi@dongguk.edu)
조교: 장몽령(zml940129@hotmail.com)
1. 강의 목적
● 목표 1 - 품질 좋은 소프트웨어를 협동하여 개발하는 방법과 기술을 배운다.
● 목표 2 - 배운 방법과 기술을 프로젝트를 통하여 익힌다.
2. 강의 방법
(1) 강의 - 주당 2회(플립 러닝 온라인 교육 6주)
지정된 교재와 미리 배부한 강의 노트에 기록된 개념들에 대한 자세한 해설. 각 개발 프로세스에 대하여 설명하고 각 단계에 적용될 수 있는 기법들을 구체적인 사례를 들어 소개한다.
(2) 디자인 스튜디오 - 6회(플립 러닝에 의한 오프라인 교육)
강의에서 설명한 설계 방법들을 프로젝트에 적용해본 결과를 리뷰하고 개선할 수 있도록 튜토링한다.
(3) 튜토리얼 - 2회
프로젝트에서 사용할 도구(StarUML, Ruby on Rails)에 대하여 설명하고 시연한다.
3. 프로젝트
소프트웨어 개발의 모든 단계를 경험하기 위하여 팀(4명) 프로젝트를 수행한다. 프로젝트에 대한 문제는 팀의 협의에 의하여 정할 수 있고 프로젝트 진행하는 동안 정해진 기간에 산출물을 제출하여야 한다. 프로젝트 결과를 마지막 주 발표한다.
9/18 – 프로젝트 팀 구성, 계획 수립
9/25 – 사용 사례 다이어그램
10/4 – 클래스 다이어그램
10/11 – 시퀀스 다이어그램
10/30 – UI 디자인
11/20 – 테스트 케이스
12/6 – 코딩 및 발표
4. 교과서 및 참고서
최은만, 새로 쓴 소프트웨어 공학, 정익사, 2014.
참고 교재:
(1) Sommerville, Software Engineering 10/E, Addison Wesley. 2015.
(2) R. S. Pressman, Software Engineering: A Practitioner's Approach(8th Edition),McGraw-Hill, 2014.
(3) C. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software Engineering(2nd Edition), Prentice-Hall, 2002.
(4) Pfleeger, Software Engineering: Theory and Practice(4th edition), 2013.
(5) Braude, Software Engineering Modern Approaches(2nd edition), Wiley, 2010
5. 평가 방법
● 프로젝트(25%) - Sprint #1(5%), Sprint #2(10%), Sprint #3(10%), 최종 릴리스 및 데모(10%)
● 플립러닝(10%) - 연습 문제 발표 및 Activity
● 시험(60%) - 중간(30%), 기말(30%)
● 출석(5%) - 출석 및 수업 중 퀴즈
6. 평가 규칙
● 프로젝트는 팀별로 1부만 마감일에 제출하며 팀별로 평가하는 것을 원칙으로 한다(기여도를 반영하여 평가함)
● 필기시험은 추가 시험 없음
● 평가 점수는 모두 공개하며 점수 올려주기는 없음
● 시험 부정행위 및 프로젝트 표절시 0점
● 1/5 이상 결석시 F학점
● 3회 지각은 1회 결석
7. 강의 일정
|
주 |
날짜(요일) |
Learning by Lecture |
Class Activity |
팀 프로젝트 |
마감 |
|
1 |
9/4(화) |
소프트웨어, 소프트웨어 엔지니어링 |
|
|
|
|
9/6(목) |
|
|
|
||
|
2 |
9/11(화) |
D01 프로젝트 팀 구성과 계획(애자일 프로세스) |
Activity #1: 팀구성, 주제, 미팅 일정 정하기 |
프로젝트#1: 프로젝트 팀 구성, 계획 수립 |
|
|
9/13(목) |
-요구란?, 요구추출과 분석 |
|
|
|
|
|
3 |
9/18(화) |
● 도입 ● 강의 동영상 1. 사용사례 2. 사용사례 다이어그램 ● 예제 ● 연습문제#1 |
Activity #2: 사용사례 작성 |
프로젝트 #2: 사용 사례 다이어그램 및 사용 사례 기술 |
프로젝트 #1 |
|
9/20(목) |
● 도입 ● 강의 동영상 1. 객체지향 개념(1) 2. 객체지향 개념(2) 3. 객체지향 개념(3) ● 예제 ● 연습문제#2 |
Activity #3: 클래스 찾기, 클래스 관계 |
|
|
|
|
4 |
9/25(화) |
추석 연휴 |
|
|
프로젝트 #2 |
|
9/27(목) |
● 도입 ● 동영상 1. 클래스 다이어그램 ● 연습문제#3 |
Activity #4: 클래스 다이어그램 |
프로젝트 #3: 클래스 다이어그램 그리기 |
|
|
|
5 |
10/2(화) |
Activity #5: 프로젝트 클래스 다이어그램 발표 및 디자인 스튜디오 |
|
|
|
|
10/4(목) |
● 도입 ● 동영상 1. 시퀀스 다이어그램 2. 코딩과의 매핑 ● 예제 ● 연습문제 #4 ● 연습문제 #5 |
Activity #6: 시퀀스 다이어그램 |
프로젝트 #4: 시퀀스 다이어그램 그리기 |
프로젝트 #3 |
|
|
6 |
10/9(화) |
프로젝트 요구 분석 발표 |
Activity #7: 프로젝트 시퀀스 다이어그램 |
|
|
|
10/11(목) |
- 추상화, 모듈화, |
|
|
프로젝트 #4 |
|
|
7 |
10/16(화) |
L08 설계원리와 아키텍처 - 시스템 요소, 아키텍처 스타일 |
|
|
|
|
10/18(목) |
● 도입 ● 동영상 1. UI설계(1) 2. UI설계(2) ● 예제 ● 연습문제6 |
Activity #8: UI 디자인 |
프로젝트 #5: UI 디자인 |
|
|
|
8 |
10/23(화) |
중간시험 |
범위: 1~6 장 |
|
|
|
9 |
10/30(화) |
|
|
프로젝트 #5 |
|
|
11/1(목) |
|
프로젝트 #6: 코딩 |
|
||
|
10 |
11/6(화) |
|
|
|
|
|
11/8(목) |
● 도입 ● 동영상 1. 코딩이란 2. 코딩 스타일 3. UML코드매핑 ● 예제 ● 연습문제7 |
Activity #9: 설계 코딩 매핑 스튜디오 |
|
|
|
|
11 |
11/13(화) |
- 원리, 화이트 박스 테스트 |
|
프로젝트 #7: 테스트 계획 |
|
|
11/15(목) |
L13 테스트(2) - 블랙박스 테스트, 객체지향 테스트, 통합 테스트, 인수 테스트 |
|
|
|
|
|
12 |
11/20(화) |
|
|
프로젝트 #7 |
|
|
11/22(목) |
|
|
|
||
|
13 |
11/27(화) |
- 범위설정, 일정 계획 |
|
|
|
|
11/29(목) |
L15 계획(2) - 노력 추정, 조직 계획, 위험 분석 |
|
|
|
|
|
14 |
12/4(화) |
- 품질 개념, QA 활동, 프로세스 품질, 프로덕트 품질, 인스펙션 |
|
|
|
|
12/6(목) |
프로젝트 발표(1) |
|
|
프로젝트 #6 |
|
|
15 |
12/11(화) |
프로젝트 발표(2) |
|
|
|
|
12/13(목) |
정리 |
|
|
|
|
|
16 |
12/18(화) |
기말 시험 |
범위: 7~10장 |
|
|