소프트웨어 공학 개론

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(화)

L01 강의 소개

소프트웨어, 소프트웨어 엔지니어링

 

 

9/6(목)

L02 S/W 프로젝트와 프로세스

 

 

  

2

9/11(화)

D01 프로젝트 팀 구성과 계획(애자일 프로세스)

Activity #1: 팀구성, 주제, 미팅 일정 정하기

프로젝트#1: 프로젝트 팀 구성, 계획 수립

    

9/13(목)

L03 요구분석

-요구란?, 요구추출과 분석

 

 

 

3

9/18(화)

L04 사용 사례(플립러닝)

도입

강의 동영상

1.  사용사례

2.  사용사례 다이어그램

예제

연습문제#1

Activity #2: 사용사례 작성

프로젝트 #2: 사용 사례 다이어그램 및 사용 사례 기술

프로젝트 #1

9/20(목)

L05 객체지향 개념(플립러닝)

도입

강의 동영상

1.  객체지향 개념(1)

2.  객체지향 개념(2)

3.  객체지향 개념(3)

예제

연습문제#2

Activity #3: 클래스 찾기, 클래스 관계

 

 

4

9/25(화)

추석 연휴

 

 

프로젝트 #2

9/27(목)

L06 클래스 다이어그램(플립러닝)

도입

동영상

1.  클래스 다이어그램

연습문제#3

Activity #4: 클래스 다이어그램

프로젝트 #3: 클래스 다이어그램 그리기

 

 

5

10/2(화)

T01 StarUML 튜토리얼

Activity #5: 프로젝트 클래스 다이어그램 발표 및 디자인 스튜디오

 

 

10/4(목)

L07 인터랙션 다이어그램(플립러닝)

도입

동영상

1.  시퀀스 다이어그램

2.  코딩과의 매핑

예제

연습문제 #4

연습문제 #5

Activity #6: 시퀀스 다이어그램

프로젝트 #4: 시퀀스 다이어그램 그리기

프로젝트 #3

6

10/9(화)

프로젝트 요구 분석 발표

Activity #7: 프로젝트 시퀀스 다이어그램

 

 

10/11(목)

L08 설계원리와 아키텍처

- 추상화, 모듈화,

 

 

프로젝트 #4

7

10/16(화)

L08 설계원리와 아키텍처

- 시스템 요소, 아키텍처 스타일

 

 

 

10/18(목)

L09 UI 설계(플립러닝)

도입

동영상

1.  UI설계(1)

2.  UI설계(2)

예제

연습문제6

Activity #8: UI 디자인

프로젝트 #5: UI 디자인

 

8

10/23(화)

중간시험

범위: 1~6 장

 

 

9

10/30(화)

L10 디자인 패턴

 

 

프로젝트 #5

11/1(목)

T02 Ruby on Rails(1)

 

프로젝트 #6: 코딩

 

10

11/6(화)

T02 Ruby on Rails(2)

 

 

 

11/8(목)

L11 구현(플립러닝)

도입

동영상

1.  코딩이란

2.  코딩 스타일

3.  UML코드매핑

예제

연습문제7

Activity #9: 설계 코딩 매핑 스튜디오

 

 

11

11/13(화)

L12 테스트(1)

- 원리, 화이트 박스 테스트

 

프로젝트 #7: 테스트 계획

 

11/15(목)

L13 테스트(2)

- 블랙박스 테스트, 객체지향 테스트, 통합 테스트, 인수 테스트

 

 

 

12

11/20(화)

T03 JUnit 튜토리얼

 

 

프로젝트 #7

11/22(목)

L14 유지보수

 

 

 

13

11/27(화)

L15 계획(1)

- 범위설정, 일정 계획

 

 

 

11/29(목)

L15 계획(2)

- 노력 추정, 조직 계획, 위험 분석

 

 

 

14

12/4(화)

L16 품질 보증

- 품질 개념, QA 활동, 프로세스 품질, 프로덕트 품질, 인스펙션

 

 

 

12/6(목)

프로젝트 발표(1)

 

 

프로젝트 #6

15

12/11(화)

프로젝트 발표(2)

 

 

 

12/13(목)

정리

 

 

 

16

12/18(화)

기말 시험

범위: 7~10장