일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 웹개발
- typeScript
- csee
- Software Engineering
- 찬양
- dbms
- QT
- 프론트엔드
- 날마다 솟는 샘물
- 혼자공부하는sql
- SQLD
- 일반화학
- CHEMISTRY
- 묵상
- CCM
- SQL
- 어노인팅
- 데이터베이스
- Database
- 한동대학교
- GLS
- 글로벌리더십학부
- 전산전자공학부
- 날솟샘
- FE
- 유태준교수님
- 남재창교수님
- 설교
- 예배
- 화학
- Today
- Total
멈추지 않는 기록
L01-Introductuction to Software Engineering 본문
Agenda
- 일반적인 강의 정보
- L01: 소개
General Course Information
Goals
1. 소프트웨어, 소프트웨어 개발 및 소프트웨어 엔지니어링 활동의 기본 개념을 이해한다.
2. 현대 소프트웨어 엔지니어링 방법론을 이해하고 실습한다.
3. 기본적인 소프트웨어 엔지니어링 도구를 사용할 수 있는 핵심 기술을 습득한다.
4. 팀 프로젝트를 수행하고 의사소통 능력을 연습한다.
ECE30013/ITP40001 소프트웨어 엔지니어링
- 강사: JC Nam (그냥 JC라고 불러 주세요! 교수님이라고 부를 필요 없음)
- jcnam@handong.edu ⇒ 가장 빠르게 응답을 받을 수 있는 방법
- NTH407 (전화번호: 1404)
- 오픈 채팅방: LMS에서 링크 확인
- 면담 시간: 예약제로 운영
- 홈페이지에서 내 캘린더 확인: https://lifove.github.io
- 가능한 시간대를 포함하여 이메일 보내기
- 강의 시간 및 장소
- ○MT2: NTH412
- 수강생 수: 66명
- 조교
- 김동규 (Donggyu Kim): kdg1941@handong.ac.kr
Course Materials
- Software Engineering 10TH EDITION
- 저자: Ian Sommerville
- 출판사: PEARSON
- 교재 홈페이지: https://software-engineering-book.com/
- 강의는 이 교재를 따름! 매 수업 전 교재를 읽는 것을 적극 추천!
- 강의 슬라이드 및 배포 자료
- Google Drive를 통해 공유되는 기타 자료
Grading
- 그룹 프로젝트: 40%
- 중간고사: 15%
- 기말고사: 15%
- 퀴즈/과제: 30%
- 퀴즈는 온라인으로 진행될 예정 (LMS 퀴즈)
- 출석 점수는 없다.
- 추가 과제 수행 시 가산점
- 수업에서의 적극적인 참여 (개인 또는 그룹)
Grading: 절대 평가 (100점 만점)
- A+ >= 95
- A0 >= 90
- B+ >= 85
- B0 >= 80
- C+ >= 75
- C0 >= 70
- D+ >= 65
- D0 >= 60
- F < 60
- 보너스 점수가 최종 학점에 매우 중요한 영향을 미칠 수 있음!
Class policies (Common)
- 다음의 경우 F 학점이 부여됨:
- 부정행위 또는 학문적 부정행위를 저지를 경우.
- 중간고사 또는 기말고사를 정당한 사유 없이 결석할 경우.
- 전체 수업의 1/4 이상을 결석할 경우.
- 결석은 HGU 학사 규정 8-34조에 해당하고 증빙 서류를 제출할 경우에만 인정됨. (http://rule.handong.edu)
Class policies (Language)
- 영어 사용 비율: 100%
- 과제 및 시험은 영어 필수!
- 영어 미사용 시 점수 없음.
HGU CSEE Standard & Honor Code Guideline
- 전체 내용 (한글 및 영어 PDF 파일 다운로드): http://csee.handong.edu/학부소개/학부-규정집/
- 주요 내용
- 출석: 수업에 참석하지 않고 출석을 체크하는 모든 행위는 부정행위에 해당함.
- 과제: 인터넷 등에서 획득한 과제물 또는 프로그램 코드의 일부 또는 전체를 이용하는 것은 부정행위에 해당함. 자신의 과제물을 타인에게 보여주거나 빌려주는 것도 부정행위에 해당함. 팀 과제가 아닌 경우, 두 명 이상이 함께 과제를 수행하여 개별적으로 제출하는 것도 부정행위에 해당함.
- 팀 프로젝트: 상호 평가가 포함된 팀 프로젝트에서 본인의 공헌도를 초과하는 평가 결과를 요구하거나 인정하는 것은 부정행위에 해당함.
- ChatGPT 또는 기타 AI 서비스
- 사용 가능하지만, 본인이 이해한 내용을 직접 작성해야 함.
- ChatGPT가 제공한 정보가 정확하지 않을 수 있으며, 오류가 있을 경우 감점될 수 있음.
- ChatGPT 및 기타 서비스에서 코드 관련 도움을 받을 수 있지만, 반드시 출처를 코드 주석에 명시해야 함.
- 자세한 가이드는 과제 설명에서 제공될 예정.
Topics we cover
- 소개 (Ch01)
- 전문 소프트웨어 개발 및 윤리 (Ch01)
- 소프트웨어 프로세스 (Ch02)
- 프로젝트 관리 및 계획 (Ch22-23)
- 애자일 소프트웨어 개발 (Ch03)
- 요구 공학 (Ch04)
- 시스템 모델링 (Ch05)
- 아키텍처 설계 (Ch06)
- 설계 및 구현 (Ch07)
- 오픈 소스 소프트웨어(OSS) 개발 (Ch07)
- 그룹 발표
- OSS 도구
- 소프트웨어 테스트 및 도구 (Ch08)
- 중간고사
- 소프트웨어 진화 (Ch09)
- 형상 관리 (Ch25)
- 품질 관리 및 그 기술 (Ch24)
- 신뢰할 수 있고 안전한 시스템 (Ch10-14)
- 최종 그룹 프로젝트 발표
- 기말고사
Schedule (tentative)
Week | Monday | Thursday(LMS) | Remark |
1 | Mar 6 | Mar 3 | Mar 6: the first realtime class, HW1 |
2 | Mar 10 | Mar 13 | M: QnA class |
3 | Mar 17 | Mar 20 | M: QnA class, Group Project, Quiz 1 |
4 | Mar 24 | Mar 27 | M: QnA class |
5 | Mar 31 | Apr 3 | M: QnA class |
6 | Apr 7 | Apr 10 | M: QnA class, Quiz 2 |
7 | Apr 14 | Apr 17 | M: QnAclass |
8 | Apr 21 | Apr 24 | Midterm |
9 | Apr 28 | May 1 | M: QnA class, HW2 |
10 | May 5 | May 8 | M: QnA class |
11 | May 12 | May 15 | M: QnA class |
12 | May 19 | May 22 | M: QnA class |
13 | May 26 | May 29 | M: QnA class, Quiz 3 |
14 | June 2 | June 5 | Final Project Presentation |
15 | June 9 | June 12 | Final Project Presentation, Summary lecture |
16 | June 16? | June 19? | 16 or 19 Final Exam?? |
- 3월 31일 수업은 변동될 수도 잇다.
- 월요일 수업은 대면, 목요일 수업은 비대면
Homework Tasks (15 points)
- HW1 (3%, 1-2주차): SE 주제!
- HW2/3 (12%)
- 소프트웨어 테스트 활동 경험.
- 소프트웨어 엔지니어링 도구 경험.
Group Project (40 points)
- 발표 및 그룹 매칭 (3주차)
- 프로젝트 제안서 (6주차)
- 제안서 (요구 사항 및 설계)
- 최종 프로젝트 발표 (14주차 및/또는 15주차)
- 최종 발표
- 상대 절대 평가
- 가장 우수한 팀은 35점을 받음.
- 가장 낮은 팀은 20점을 받음.
- 모든 팀은 동일한 평가 기준으로 평가됨.
- 동료 평가: 가장 우수한 마지막 팀의 멤버는 30점 이상을 받을 수 있으며, 가장 형편없는 팀의 멤버는 20점을 받을 수 있음.
이 수업에 대한 질문이 있나요?
L01: 소개
큰 그림이 중요하다!
Textbook Chapters
파트1. SE 입문 | 파트2. 시스템 신뢰성 및 보안 | 파트3. 고급 SE | 파트4. 소프트웨어 관리 |
소프트웨어 프로세스 | 신뢰할 수 있는 시스템 | 소프트웨어 재사용 | 프로젝트 관리 |
애자일 소프트웨어 개발 | 신뢰성 공학 | 컴포넌트 기반 SE | 프로젝트 계획 |
요구사항 공학 | 안전 공학 | 분산 SE | 품질 관리 |
시스템 모델링 | 보안 공학 | 서비스 지향 SE | 구성 관리 |
아키텍처 설계 | 복원력 공학 | 시스템 공학 | |
설계 및 구현 | 시스템 오브 시스템즈 | ||
소프트웨어 테스팅 | 실시간 소프트웨어 공학 | ||
소프트웨어 진화 |
Topics in IEEE/ACM International Conference on Automated Software Engineering (ASE2025)
1. 요구 사항 및 설계
- 요구 사항 수집 및 관리, 추적 가능성 분석
- 소프트웨어 아키텍처 및 설계
- 모델링 및 모델 기반 엔지니어링
- 소프트웨어 제품 라인
- 구성 요소 기반 또는 서비스 지향 시스템
- 객체 지향 또는 측면 지향 시스템
2. 테스트 및 분석
- 회귀, 변이 및 모델 기반 테스트
- 시스템, 단위 및 통합 테스트
- 블랙, 그레이 및 화이트 박스 퍼징
- 자동화된 프로그램 수정 및 합성
- 정적 및 동적 분석
- 경험적 프로그램 분석
3. 유지 보수 및 진화
- 디버깅 및 결함 위치 지정
- 리팩토링 및 재구성
- 리버스 엔지니어링
- 소프트웨어 재사용
- API 설계 및 관리
4. 인간 및 사회적 측면
- 소프트웨어 엔지니어링 프로세스 (예: 애자일, DevOps)
- 친환경 및 지속 가능한 기술
- 소프트웨어 엔지니어링 윤리 및 가치
- 소프트웨어 경제학
- 체계적인 코드 검토 및 검사
- 프로그램 이해 및 시각화
- 크라우드 기반 및 협업 소프트웨어 엔지니어링
- 인간-컴퓨터 인터페이스
5. AI와 소프트웨어 엔지니어링
- 자율적이고 자기 적응 시스템
- 검색 기반 소프트웨어 엔지니어링
- 추천 시스템
- AI4SE
- SE4AI
6. 소프트웨어 분석
- 소프트웨어 저장소 마이닝
- 모바일 앱 및 앱 스토어 분석
- 데이터 기반 사용자 경험 이해 및 개선
- 소프트웨어 엔지니어링에서의 데이터 기반 의사 결정
- 소프트웨어 메트릭 (및 측정)
7. 소프트웨어 엔지니어링의 형식적 측면
- 형식적 방법 및 모델 검증
- 프로그래밍 언어
- 도메인 특화 또는 사양 언어
- 소프트웨어 검증 및 확인
8. 보안 및 기타 비기능적 속성
- 보안 및 개인 정보 보호
- 신뢰성 및 안전성
- 신뢰성 및 가용성
- 성능
Topics in International Conference on Software Engineering (ICSE2025)
1. AI for Software Engineering
- AI 기반 추천 시스템을 통한 자동화된 소프트웨어 엔지니어링 (예: 코드 생성, 프로그램 수정, AIOps, 소프트웨어 구성 분석 등)
- 소프트웨어 엔지니어링을 위한 인간 중심 AI (예: 소프트웨어 엔지니어가 AI 에이전트와 시너지 효과를 내는 방법)
- 신뢰할 수 있는 AI for SE (예: 소프트웨어 엔지니어링을 위한 AI의 보장 제공, 한계 특성화 및 오용 방지 방법)
- 지속 가능한 AI for SE (예: 소프트웨어 엔지니어링을 위한 친환경 AI의 에너지 발자국 줄이기 방법)
- 협업 AI for SE (예: AI 에이전트가 소프트웨어 엔지니어링 자동화를 위해 협력하는 방법)
- LLM 및 기타 기초 모델을 통한 소프트웨어 엔지니어링 작업 자동화 (예: 대형 비전 모델)
- 전통적인 메트릭을 넘어선 효능 측정 (예: 정확도, BLEU 등)
- 소프트웨어 엔지니어링을 위한 프롬프트 엔지니어링 (예: 새로운 프롬프트 설계)
- AI 지원 소프트웨어 설계 및 모델 기반 엔지니어링 (예: 사양 채굴, 프로그램 합성, 소프트웨어 아키텍처 설계)
2. Analytics
- 소프트웨어 저장소 마이닝 (버전 관리 시스템, 이슈 추적 시스템, 소프트웨어 생태계, 구성, 앱 스토어, 커뮤니케이션 플랫폼 등 포함)
- 소프트웨어 시각화
- 데이터 기반 사용자 경험 이해 및 개선
- 소프트웨어 엔지니어링에서의 데이터 기반 의사 결정
- 소프트웨어 메트릭 (및 측정)
3. Architecture and Design
- 아키텍처 및 설계 측정 및 평가
- 소프트웨어 설계 방법론, 원칙 및 전략
- 소프트웨어 설계를 위한 이론 구축
- 아키텍처 품질 속성 (예: 보안, 개인 정보 보호, 성능, 신뢰성)
- 모듈성 및 재사용성
- 설계 및 아키텍처 모델링 및 분석
- 아키텍처 복구
- 의존성 및 복잡성 분석
- 분산 아키텍처 (예: 마이크로서비스, SOA, 클라우드 컴퓨팅)
- 패턴 및 안티 패턴
- 설계 및 아키텍처의 기술 부채
- 아키텍처 리팩토링
- 적응형 아키텍처
- 아키텍처 지식 관리
4. Dependability and Security
- 형식적 방법 및 모델 검증 (하드웨어에만 초점을 맞춘 솔루션 제외)
- 신뢰성, 가용성 및 안전성
- 회복력 및 안티프래질리티
- 기밀성, 무결성, 개인 정보 보호 및 공정성
- 성능
- 신뢰성 및 보안을 위한 설계
- 소프트웨어 보안을 향상시키기 위한 취약성 탐지
- 임베디드 및 사이버 물리 시스템을 위한 신뢰성 및 보안
5. Evolution
- 진화 및 유지 관리
- API 설계 및 진화
- 릴리스 엔지니어링 및 DevOps
- 소프트웨어 재사용
- 리팩토링 및 프로그램 차이 비교
- 프로그램 이해
- 리버스 엔지니어링
- 환경 및 소프트웨어 개발 도구
- 진화를 이해하기 위한 추적 가능성
6. Human and Social Aspects
- 개인에 초점을 맞춘 (프로그램 이해, 직장 스트레스, 직무 만족도 및 경력 발전 등)
- 팀에 초점을 맞춘 (예: 함께 작업하는 팀, 분산 팀, 글로벌 팀, 가상 팀; 팀 내 커뮤니케이션 및 협업)
- 커뮤니티에 초점을 맞춘 (예: 오픈 소스, 실천 공동체) 및 회사 (조직, 경제)
- 사회에 초점을 맞춘 (예: 지속 가능성; 다양성 및 포용성)
- 개인, 팀, 커뮤니티 및 회사를 지원하는 프로그래밍 언어, 환경 및 도구에 초점을 맞춘
- 소프트웨어 개발 프로세스에 초점을 맞춘
Topics in International Conference on Software Engineering (ICSE2025) Continues
1. Requirements and Modeling
- 요구 사항 공학 (비기능 요구 사항 포함)
- 이론적 요구 사항 기초
- 요구 사항 및 아키텍처
- 피드백, 사용자 및 요구 사항 관리
- 요구 사항 추적 가능성 및 의존성
- 모델링 및 모델 기반 엔지니어링
- 변동성과 제품 라인
- 시스템 및 소프트웨어 추적 가능성
- 모델링 언어, 기술 및 도구
- 모델 기반 엔지니어링의 적용에 대한 실증 연구
- 모델 기반 모니터링 및 분석
2. Software Engineering for AI
- AI 모델을 위한 소프트웨어 엔지니어링
- AI 구성 요소가 포함된 시스템을 위한 소프트웨어 엔지니어링
- AI 코드, 라이브러리 및 데이터셋을 위한 소프트웨어 엔지니어링
- 자율 시스템 및 자기 치유 시스템의 엔지니어링
- AI 모델의 자동 수정
- AI 기반 시스템의 테스트 및 검증
- AI 기반 시스템의 검증 및 사용자 기반 평가
- AI 기반 시스템을 위한 요구 사항 공학
3. Testing and Analysis
- 소프트웨어 테스트
- 퍼징, 검색 기반 접근 방식 및 기호 실행과 같은 자동화된 테스트 생성 기술
- 비기능적 속성의 테스트 및 분석
- GUI 테스트
- 모바일 애플리케이션 테스트
- 프로그램 분석
- 프로그램 합성 (예: 제약 기반 기술)
- 프로그램 수정
- 디버깅 및 결함 위치 지정
- 런타임 분석 및/또는 오류 복구
HW1 (3 points)
- [HW1 제출 링크](https://forms.gle/nFMoAWnnuv2UtQzc7)
- 각 장 제목의 정의를 작성하라.
- 각 교과서 장과 관련된 ICSE/ASE 주제를 찾아라.
- 기한: 3월 16일 일요일 23:59
Agenda
- 전문 소프트웨어 개발
T1: 전문 소프트웨어 개발
Professional software development: Why is it so important?
(전문 소프트웨어 개발: 왜 그렇게 중요한가?)
- Software is everywhere!
(소프트웨어는 어디에나 존재한다!) - Software is not affected by physical constraints. This leads to software to become
(소프트웨어는 물리적 제약의 영향을 받지 않는다. 이로 인해 소프트웨어는)- Extremely complex
매우 복잡해지고 (물리적 한계 없이 기능을 확장할 수 있어 구조가 복잡해진다.) - Difficult to understand
이해하기 어려워지며 (눈에 보이지 않는 논리적 개념으로 이루어져 있어 전체 흐름을 파악하기 힘들다.) - Expensive to change
변경 비용이 비싸다. (작은 변경도 예상치 못한 오류를 유발할 수 있어 유지보수와 검증에 많은 비용이 든다.)
- Extremely complex
- Software project failure! >> We need Software Engineering (SE)! SE is helpful!
(소프트웨어 프로젝트 실패! >> 우리는 소프트웨어 공학이 필요하다! 소프트웨어 공학은 유용하다!)
- Increasing system complexity
(시스템 복잡성이 증가하고)
- Larger and more complex systems
(더 크고 복잡한 시스템) - Demands always changes
(요구 사항이 항상 변경됨) - Quickly build and deliver
(빠르게 구축하고 재공해야 함 - Need new capabilities
(새로운 기능 필요)
- Larger and more complex systems
- Failure to use software engineering methods
(소프트웨어 공학 방법 사용 실패)
- Developers can easily write programs.
(개발자들은 쉽게 프로그램을 작성할 수 있다.) - But it is extremely difficult to develop reliable software with less cost without SE methods.
(그러나 소프트웨어 공학 방법 없이는 저렴한 비용으로 신뢰할 수 있는 소프트웨어를 개발하기가 매우 어렵다. )
- Developers can easily write programs.
- Increasing system complexity
소프트웨어 개발자 vs. 소프트웨어 엔지니어
개발자는 주방장, 엔지니어는 요리사
엔지니어는 아이디어를 내는 사람
개발자는 아이디어를 구현하는 사람
엔지니어는 프로그램에 사이클에 관여하고, 개발자는 코드를 구현하는 느낌.
엔지니어는 시니어, 개발자는 주니어
소프트웨어 엔지니어로서 자랑스러워하라!
- 많은 세계적인 공통 문제가 있다...
- 우리는 이러한 문제를 해결할 수 있는 시스템을 개발할 수 있다!
우리가 다룰 주제
- 소개 (Ch01)
- 전문 소프트웨어 개발 및 윤리 (Ch01)
- 소프트웨어 프로세스 (Ch02)
- 프로젝트 관리 및 계획 (Ch22-23)
- 애자일 소프트웨어 개발 (Ch03)
- 요구 사항 공학 (Ch04)
- 시스템 모델링 (Ch05)
- 아키텍처 설계 (Ch06)
- 설계 및 구현 (Ch07)
- 오픈 소스 소프트웨어 (OSS) 개발 (Ch07)
- 그룹 발표
- OSS 도구
- 소프트웨어 테스트 및 도구 (Ch08)
- 중간 시험
- 소프트웨어 진화 (Ch09)
- 구성 관리 (Ch25)
- 품질 관리 및 기술 (Ch24)
- 신뢰성 및 보안 시스템 (Ch10-14)
- 최종 그룹 프로젝트 발표
- 기말 시험
읽기 자료
- 주요 교과서: Ch01 및 Ch02
'한동대학교 > Software Engineering' 카테고리의 다른 글
L07L08-Agile Software Development (Ch03) (0) | 2025.03.29 |
---|---|
L06-Project Planning (Ch23) (0) | 2025.03.24 |
L05-Project Management (Ch22) (0) | 2025.03.17 |
L03L04-Software Process (0) | 2025.03.13 |
L02-Introductuction to Software Engineering (2) (0) | 2025.03.06 |