본문 바로가기
  • 실행력이 모든걸 결정한다
IT 상식/CS

[CS] 소프트웨어 공학 요약

by 김코더 김주역 2022. 12. 1.
반응형

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

댓글