1. 소프트웨어 개발 절차
계획 -> 분석 -> 설계 -> 코딩 -> 테스트 및 통합 -> 유지보수
2. 소프트웨어 개발 방법론
- 폭포수 모형 : 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어가는 개발 방법론
- 나선형 모형 : 점진적으로 개발 과정을 반복하면 개발 방법론
- 프로토타입 모형 : 사용자와 시스템 사이의 인터페이스에 중점을 두어 견본품을 만드는 방법론
- 애자일 모형 : 고객, 협업, 변화 대응에 가치를 두는 개발 방법론
※ 애자일 모형의 기반이 되는 기법들로는 팀이 중심이 되는 스크럼 기법과 고객의 참여와 개발 과정의 반복을 극대화하는 XP(Extreme Programming) 기법이 있다.
- 테일러링 : 내/외부적 요인들로 인해 개발 방법론의 절차나 기법을 수정 및 보완하는 작업
※ 내부적 요인으로는 프로젝트의 규모, 요구 사항, 기술 등이 있으며 외부적 요인으로는 법, 표준 등이 있다.
3. 요구사항
- 기능 요구사항 : 기능에 초점
- 비기능 요구사항 : 품질 및 제약사항에 초점
- DFD(Data Flow Diagram, 자료 흐름도) : 자료의 흐름을 도형을 통해 나타내는 방법
- CASE : 요구 사항 분석 자동화 도구
- UML : 개발 대상물을 다이어그램으로 표현할 때 사용되는 객체지향 모델링 언어
4. 소프트웨어 아키텍처
- 추상화 : 복잡한 데이터로부터 핵심적인 개념을 간추려내는 것
- 인터페이스 : 복잡한 데이터로부터 핵심적인 개념을 간추려낸 것
- 정보 은닉 : 정보를 다른 모듈이 접근하거나 변경하지 못하도록 하는 것
- 캡슐화 : 속성과 함수를 하나로 묶는 것
- 상속 : 상위 클래스의 속성과 메소드를 물려받아서 재사용을 높이는 개념이다.
- 다형성 : 동일한 메시지에 다양한 방법으로 응답할 수 있는 능력
※ 자바에서의 다형성 : 동일한 메소드명으로 다양한 메소드를 만들 수 있다.
- 결합도 : 두 모듈 사이의 연관 관계로, 낮은 것이 좋다.
- 응집도 : 한 모듈의 내부 요소들의 관계로, 높은 것이 좋다.
5. 보안 점검 내용
- 모든 실행경로에 대해 접근제어 검사를 수행
- 중요 기능을 수행하는 페이지에서는 재인증 기능을 수행
- 암호화
- 멤버 변수보다 지역 변수를 활용
- 디버그 코드 최소화
- private 접근자 적극 활용
6. 소프트웨어 패키징
- 패키징 : 모듈들을 묶어 배포용 파일을 생성하는 과정
- 릴리즈 노트 : 개발 과정에서 정리된 정보를 사용자와 공유하기 위한 문서
- 형상 관리 : 변경 사항 관리를 의미하며, 주로 원격 저장소와 로컬 저장소를 함께 두는 분산 저장소 방식을 이용한다.
- 빌드 자동화 도구 : 모듈을 묶어 실행 파일로 만드는 과정을 자동화하는 도구 - 예) gradle, maven
7. 애플리케이션 테스트
- 파레토 법칙 : 애플리케이션의 결함은 특정 모듈에 집중되어 있다.
- 살충제 패러독스 : 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는다.
- 오류-부재의 궤변 : 결함을 제거해도 사용자의 요구사항을 만족시키지 못하면 품질이 높다고 볼 수 없다.
- 검증 테스트 : 제품의 생산 과정 테스트 (명세서 기반)
- 확인 테스트 : 제품의 결과 테스트 (사용자의 요구사항 기반)
- 화이트박스 테스트 : 코드의 모든 논리적인 경로를 테스트
- 블랙박스 테스트 : 기능, 결과물만 테스트
- 테스트 과정 : 단위 -> 통합 -> 시스템 -> 인수
- 알파 테스트 : 사용자가 개발자 앞에서 수행하는 테스트
- 베타 테스트 : 사용자가 개발자 없이 직접 수행하는 테스트
- 스텁 : 하위 모듈을 대체하는 시험용 모듈
- 드라이버 : 상위 모듈을 대체하는 시험용 모듈
- 테스트케이스 : 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 명세
- 테스트 슈트 : 테스트케이스의 집합
- 테스트 오라클 : 사전에 정의된 참 값을 대입해서 테스트하는 기법
- 테스트 하네스 : 테스트 환경(테스트를 지원하기 위해 생성된 코드와 데이터)
- 목 오브젝트 : 실제 모듈을 흉내내는 모의 객체
- 오류 : 인간의 실수
- 결함 : 장애를 초래하는 문제 부분
- 장애 : 결함이 실행되어 나타나는 현상
8. 인터페이스
- EAI(Enterprise Application Integration) : 애플리케이션 중심의 통합을 위한 솔루션 - 예) Point to Point, Hub&Spoke, Bus
- ESB(Enterprise Service Bus) : 서비스 중심의 통합을 위한 솔루션
- 인터페이스 보안을 적용해야 하는 영역 : 네트워크, 애플리케이션, 데이터베이스 영역
- 인터페이스 객체 : 데이터 통신 형식 - 예) JSON, XML 등
9. 비용 산정 기법
- 비용 결정 요소 : 프로젝트 요소, 자원(인적, SW/HW) 요소
- 델파이 기법 : 많은 전문가의 의견을 종합하는 기법
- LOC(Line Of Code) : 코드 라인 수를 기반으로 예측 - 예) COCOMO, Putnam 모형
※ Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 나타내는 모형
- 기능 점수(FP) 모형 : 기능별 가중치를 부여하여 예측
10. 프로젝트 일정 계획
- PERT : 작업의 경로를 표시하는 네트워크로 각 작업 소요 시간의 비관치, 기대치, 낙관치를 계산한다.
- CPM : 작업의 경로를 표시하는 네트워크로 임계(최소) 경로를 계산할 때 쓰인다.
- 간트 차트 : 작업의 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
11. 기타 용어 정리
- APM : 애플리케이션 모니터링 도구
- CMMI : 개발 조직의 성숙도 평가 모델
- SPICE : 소프트웨어 처리 개선 및 능력 평가 기준
- 재공학 : 기존 시스템을 재구성하는 기법
- 역공학 : 개발 단계를 역으로 올라가 기존 시스템을 설계서로 추출하는 기법
- 미들웨어 : 서로 다른 기종 사이에서 다양한 서비스를 제공하는 프로그램
'IT 상식 > CS' 카테고리의 다른 글
[CS] 자료구조 요약 (0) | 2022.11.26 |
---|---|
[CS] 데이터베이스 요약 (0) | 2022.11.20 |
[CS] 운영체제 요약 (0) | 2022.11.10 |
[CS] 네트워크 요약 (0) | 2022.11.06 |
[CS] 디자인 패턴과 프로그래밍 체계 요약 (0) | 2022.11.01 |
댓글