정보처리기사 도전기
[정보처리기사 실기 이론정리1] 소프트웨어 공학
츄98
2024. 7. 21. 00:44
1. 소프트웨어 공학 : 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
2. 3R : 역공학, 재공학, 재사용
- 역공학(Reverse Engineering) : 이미 개발된 시스템을 분석하여 요구 분석서, 설계서 등의 문서를 추출하는 작업
- 재공학(Re-Engineering) : 기존 소프트웨어를 폐기하지 않고, 기능을 개선하거나 새로운 소프트웨어로 재활용
- 재공학 과정 : 분석(Analysis), 재구성(Restructuring), 역공학(Reverse Engineering), 이관(Migration) - 재사용(Reuse) : 이미 개발된 소프트웨어의 전체 또는 일부를 다시 사용하는 것
- 합성 중심(Composition Based, 블록 구성) : 모듈을 만들어 이를 조합해 소프트웨어를 완성
- 생성 중심(Generation Based, 패턴 구성) : 추상화된 형태의 명세를 구체화해 프로그램을 만듦
3. 소프트웨어 개발 단계 : 계획 -> 요구사항분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
4. 구조적 방법론 : 절차지향적인 소프트웨어 개발 방법론, 제한된 구조 안에서 코드 생성, 순차적으로 실행
=> 데이터흐름도(DFD), 자료사전(DD), 상태전이도(STD), 소단위 명세서(Minispec)
5. 정보공학 방법론 : 기업에 초점을 둔 방법론
6. 객체지향 개발 방법론 : 현실 세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)로 표현
- 캡슐화 : 객체의 세부 구현을 숨기고 인터페이스만을 제공
- 정보은닉 : 객체 내부의 세부 사항을 외부로부터 숨김
- 상속 : 재사용과 확장성을 위해 상위 클래스의 속성과 메서드를 하위 클래스가 상속
- 다형성 : 하나의 인터페이스가 다양한 형태의 구현을 가질 수 있음
- 추상화 : 복잡한 현실세계를 단순화하여 모델링
7. CBD (Component Based Development) 방법론 : 재사용 가능하다는 키워드.. 새로운 기능 추가가 용이한 확장성 제공
8. 애자일 방법론 : 변화에 빠르고 유연하게 대응하는 개발방식, 소프트웨어의 개발의 민첩성과 효율성 강조
- XP (eXtreme Programming) : 반복적이고 점진적인 개발을 강조
- SCRUM : 유연하고 생산적인 프로젝트 관리 방식
- FDD (Feature-Driven Development) : 기능 중심의 반복적 개발 방식
- Crystal 방법론 : 프로젝트의 크기와 중요도에 따라 방법론을 조정
- ASD (Adaptive Software Development) : 합동 애플리케이션 개발을 사용한 방법론
9. 폭포수 모델
- 순차적 접근 : 계획 -> 분석 -> 설계 -> 구현 -> 테스트 -> 운영
- 단계적 검증
- 한 번 시작된 단계는 이전 단계로 돌아가거나 병행 진행이 허용되지 않음
- 요구사항 변경이 어려우며, 유연성 부족, 고객 피드백 부족
10. 프로토타이핑 모델
- 고객이 요구하는 주요 기능을 프로토타입으로 먼저 구현
- 계획수립 -> 프로토타입 개발 -> 사용자평가 -> 구현 -> 인수
11. 나선형 모델
- 폭포수모델과 프로토타이핑 모델 장점 통합, 위험분석 추가
- 계획 및 요구분석 -> 위험분석 -> 개발 -> 사용자평가 -> 계획 및 요구사항 분석 -> ... (반복)

12. RAD (Rapid Application Development) 모델
- 매우 빠른 개발 주기, 고급 소프트웨어 개발 도구와 CASE 도구 활용, 사용자 피드백
13. V 모형

14. 애자일 방법론(1) XP(eXtreme Programming)
- 핵심가치 : 용기, 존중, 의사소통, 피드백, 단순성
- 짝 프로그래밍 (Pair Programming), 테스트 기반 개발(Test Driven Development), 지속적인 통합 (Continuous Integration), 작은 릴리즈 (Small Release), 공동 코드 소유 (Collective Code OwnerShip)
- 시스템 메타포어 (System Metaphor) : 최종적으로 개발되어야 할 시스템 구조를 조망
- 코딩 표준 (Coding Standard) : 코드 작성을 위한 일관된 기준을 설정
- 코드 개선 (Refactoring) : 코드의 구조를 개선하면서 기능을 변경하지 않고 코드를 정리
15. 애자일 방법론(2) SCRUM
- 제품 백로그 (Product Backlog) : 개발할 제품에 대한 요구사항 목록
- 스프린트 (Sprint) : 반복적인 개발주기, 1~4주간의 짧은 기간을 목표로 설정
- 스프린트 계획 회의 (Sprint Planning Meeting)
- 스프린트 백로그 (Sprint Backlog) : 각각의 스프린트 목록에 도달하기 위해 필요한 작업 목록
- 일일 스크럽 회의 (Daily Scrum Meeting) : 날마다 진행되는 15분 정도의 미팅
- 실행 가능한 제품 (Shippable Product) : 스프린트 결과
- 제품 책임자 (Product Owner) : 제품 백 로그를 정의하여 우선순위를 정함
- 스크럼 마스터 (Scrum Master) : 프로젝트 관리자, 팀이 스크럼을 효과적으로 활용할 수 있도록 보장