본문 바로가기
etc/이것저것

정보처리기사 실기 (1) 소프트웨어 구조 요약

by re-hwi 2024. 7. 18.

제가 중요하다고 생각되는 것만 요약한 글이므로 자세한 내용이 없을 수 있습니다. 

소프트 웨어 공학의 3R

  • 역공학
    : 이미 개발된 시스템을 분석
  • 재공학
    : 시스템의 기능을 개선하거나 재구성
    ex) 건물의 문이 고장났을 때 건물 전체를 고치지 않고 문만 고치는 것과 같음
  • 재사용
    : 이미 개발된 소프트웨어의 전체 또는 일부를 다시 사용하는 것

소프트웨어 개발 단계 

  1. 계획
  2. 요구사항 분석
  3. 설계
  4. 구현
  5. 테스트
  6. 유지보수

개발 방법론

구조적 방법론

> 절차지향적인 개발 방법론

 

애자일 방법론

> 빠르고 유연하게 대응하는 개발 방식 

 

애자일 방법론 종류

> XP: 반복적이고 점진적인 개발

>> XP 의 특징: 용기, 존중, 의사소통, 피드백, 단순성 (의사선생님 약은 존 용기아주세요)

> SCRUM: 유연하고 생산적인 프로젝트 관리방식

 

소프트웨어 개발 모델

  • 폭포수 모델
    분석>설계>개발>테스트>유지보수의 단계로 진행
  • 나선형 모델
    분석>위험분석>개발>평가
  • V모형
    개발 단계에 따른 테스트를 중점으로 진행 

프로젝트 관리

프로젝트 핵심 관리대상(3P)

  • 사람
  • 문제
  • 프로세스

PMBOK

  1. 프로젝트 착수
  2. 프로젝트계획
  3. 프로젝트 실행
  4. 프로젝트 통제
  5. 프로젝트 종료

개발 비용 산정

기법

  • LOC
    : 예측치 = 낙관치 + 4(기대치) + 비관치
  • COCOMO
    - 조직형 (Organic) : 
    - 반분리형 (Semidetached) : 
    - 내장형 (Embedded) : 

요구 공학

요구사항 분석도구

HIPO

: 하향식 소프트웨어 개발을 위한 문서화 도구

 

요구사항 분석 모델링

  • 기능적 모델링
    > 액티비티 다이어그램
  • 정적모델링
    > 클래스 다이어그램
  • 동적모델링
    > 순서 다이어그램, 상태 다이어그램

소프트웨어 설계

소프트웨어 설계의 원리

  • 분할 및 정복
  • 추상화
  • 분해
  • 모듈화
  • 정보 은닉
  • 결합도와 응집도

설계 모델링

  • 구조 모델링
    : UML 정적 다이어그램
  • 행위 모델링
    : UML 동적 다이어그램

UML

구성요소

  • 사물
  • 관계
  • 다이어그램

UI 설계

유형

  • CLI : 키보드로 조작
  • GUI : 그래픽으로 조작
  • NUI : 인간의 움직임으로 조작

설계 도구

  • 와이어프레임 : 기본 구조와 레이아웃을 나타내는 설계도구
  • 스토리보드 : 시나리오 흐름을 시각적으로 나타내는 도구

형상관리 도구

버전관리 도구

  • 공유폴더 방식 (RCS, SCCS) 
  • 클라이언트/서버 방식 (CVS, SVN)
  • 분산 저장소 방식 (Git)

모듈 구현

결합도 

  • 자료 결합도
    : 값이 전달되는 경우
  • 스탬프 결합도
    : 배열, 오브젝트등이 전달
  • 제어 결합도
    : 제어 요소가 전달되는 경우 (if같은거) 
  • 외부 결합도
    : 다른 모듈에서 선언한 변수를 다른 모듈에서 참조하는 경우
  • 공통 결합도
    : 전역변수를 참조하고 갱신하는 경우
  • 내용 결합도
    : 다른 모듈 내부에 있는 변수나 기능을 사용하는 경우

응집도

  • 기능적 응집도
    : 모듈 내부 기능이 단일한 목적을 위해 수행되는 경우
  • 순차적 응집도
    : 모듈 내에서 나온 출력값을 다른 활동이 사용할 경우
  • 통신적 응집도
    : 동일한 입출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
  • 절차적 응집도
    : 모듈 안에 구성요소들이 순차적으로 수행할 경우 <- 순차라는 말이 들어갔다고 순차적 X
  • 시간적 응집도
    : 특정 시간에 처리되어야 하는 활동
  • 논리적 응집도
    : 유사한 성격을 갖거나 특정 형태로 분률되는 요소들이 한 모듈에서 처리되는 경우
  • 우연적 응집도
    : 모듈 내 구성요소들이 연관 없을 경우

Pan-in, Pan-out

B에서 Pan-in은 A 1개, Pan-out은 E,F 2개

인터페이스

전송 데이터

  • Json : 값과 쌍으로 이루어짐, JS 기반
  • XML : 마크업 언어 
  • YAML : 데이터 직렬화 언어
  • CSV : 쉼표로 구분되는 데이터 형식, excel

인터페이스 구현
AJAX

: JS 를 사용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능

SOAP 

: XML 기반 프로토콜 (XML + 프로토콜 나오면 SOAP)

WSDL
: 웹 서비스 기술언어 (XML + 언어 나오면 WSDL)

REST

: 자원을 이름으로 구분하여 해당 자원의 상태를 주고받음

 

객체지향 구현

객체지향 설계원칙 (SOILD)

  • 단일 책임 원칙
    : 한 클래스는 하나의 책임만을 가져야 함
  • 개방 폐쇄 원칙
    : 확장에 대해서는 열려있어야 하고 수정에 대해서는 닫혀있어야 함
  • 리스코프 치환 원칙
    : 자식 클래스는 언제나 부모 클래스를 대체 할 수 있어야 함
  • 인터페이스 분리 원칙
    : 자신이 사용하지 않는 인터페이스는 만들지 않아야 함
  • 의존성 역전 원칙
    : 의존관계를 맺을 때 변화가 없는것에 의존해야 함

디자인 패턴

  • 생성
    더보기
    추상 팩토리 : 서로 연관되거나 의존적인 객체들의 조합을 만드는 인스턴스를 제공
    빌더 : 동일한 생성 절차에서도 다른 표현이 가능
    팩토리 메서드 : 객체 생성을 서브 클래스로 위임하여 캡슐화
    싱글톤 : 클래스의 인스턴스가 하나임을 보장
  • 구조
    더보기
    어댑터 : 클래스의 인터페이스를 다른 인터페이스로 변환
    브리지 : 구현부에서 추상층을 분리하여 독립적인 확장이 가능
    프록시 : 객체의 대리를 제공
  • 행위
    더보기
    옵서버 : 객체의 상태변화를 관찰

테스트

테스트 오라클

  • 참 오라클 : 모든 입력값에 정확한 결과를 생성하는 오라클
  • 샘플링 오라클 : 제한된 입력값 들에 예상되는 결과를 제공하는 오라클
  • 휴리스틱 오라클 : 특정 입력값에는 정확한 결과값을 제공하나 그 외의 값에는 근사값을 제공
  • 일관성 검사 오라클 : 소프트웨어의 변경 전/후로 일관성을 검증하는 오라클

 

테스트 레벨 

블랙박스 테스트 : 내부 코드를 보지 않고 입출력 만으로 테스트하는 기법

  • 동등분할기법 : 입력자료에 초점을 맞춰검사
  • 경계값 분석 : 입력값의 경계값 ex) 100까지 입력 받을 수 있는 코드에 99,100,101 
  • 원인-효과 그래프 : 데이터의 관계와 출력에 영향을 미치는 상황을 분석한 뒤 효용성이 높은 테스트를 선정
  • 오류예측 : 테스터의 감각으로 테스트

화이트 박스 테스트 : 내부 코드를 보며 데이터의 흐름 등을 테스트하는 기법

반응형

댓글