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

2024. 7. 18. 20:39·etc/이것저것

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

소프트 웨어 공학의 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 
  • 원인-효과 그래프 : 데이터의 관계와 출력에 영향을 미치는 상황을 분석한 뒤 효용성이 높은 테스트를 선정
  • 오류예측 : 테스터의 감각으로 테스트

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

반응형
저작자표시

'etc > 이것저것' 카테고리의 다른 글

[PWA] FCM 모바일 알림 구현하기 (Vue.js)  (4) 2024.09.18
2024 정보처리기사 실기 (2) 데이터베이스 구축  (0) 2024.07.24
2024 1회 정보처리기사 필기 합격 후기  (2) 2024.02.17
팩맨 컨셉 PPT 템플릿  (2) 2023.05.24
컴퓨터 활용 능력 검정시험 (1급) 실기 후기  (0) 2023.02.01
'etc/이것저것' 카테고리의 다른 글
  • [PWA] FCM 모바일 알림 구현하기 (Vue.js)
  • 2024 정보처리기사 실기 (2) 데이터베이스 구축
  • 2024 1회 정보처리기사 필기 합격 후기
  • 팩맨 컨셉 PPT 템플릿
re-hwi
re-hwi
재휘의 개발일기
    반응형
  • re-hwi
    Dvelopment blog
    re-hwi
  • 전체
    오늘
    어제
    • 재휘의 개발일기 (167)
      • 개발 (25)
        • 소프트웨어 공학 (25)
      • Python (18)
        • numpy (8)
      • OS (23)
        • 쉽게 배우는 운영체제 (23)
      • Front end (1)
        • HTML (6)
        • CSS (9)
        • JavaScript (18)
        • React (2)
        • Vue.js (5)
        • TypeScript (5)
        • Sass (3)
      • Algorithm (1)
        • 파이썬 알고리즘 인터뷰 (2)
        • 자료구조와 함께 배우는 알고리즘 (20)
      • Android (2)
        • 안드로이드 앱 프로그래밍 with 코틀린 (2)
      • Project (15)
      • Network (0)
      • etc (12)
        • 이것저것 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    개발
    연결리스트
    typeScript
    알고리즘
    pwa
    JavaScript
    js
    컴포넌트
    자료구조
    리액트
    scss
    numpy
    파이썬
    티스토리챌린지
    CSS
    표
    TS
    HTML
    정처기
    정보처리기사
    FE
    vue
    플레이리스트
    REACT
    뷰
    타입스크립트
    프론트엔드
    자료흐름도
    sass
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
re-hwi
정보처리기사 실기 (1) 소프트웨어 구조 요약
상단으로

티스토리툴바