book_lover 2024. 4. 20. 21:07

소프트웨어 공학이란

  • 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문

소프트웨어 공학의 3R

  • 역공학(Reverse Engineering) - 산출물(문서)가 없을 시 소스를 보고 산출물 생성
  • 재공학(Re-Engineering) - 분석 -> 재구성 -> 역공학 -> 이관
  • 재사용(Reuse) - 다시 다른곳에서 사용
    모듈의 독립성 높이기 위해서 응집도 높임 / 결합도 낮춤

소프트웨어 개발 단계

  • 계획 
  • 분석 - 요구사항 분석
  • 설계 - 모델링(그림그리기)
  • 구현 - 실제 개발
  • 테스트 - 한번걸러 한번씩 나옴
  • 유지보수

소프트웨어 개발 방법론

  • 폭포수 모델 - 선형 순차, 원형 복귀 불가
  • 프로토타이핑 모델 - 시제품 제작
  • 나선형 모델 - 계획 - 위험 분석 - 개발 - 고객평가, 반복(점진적 발전)
  • RAD 모델
    도구를 이용하여 빠르게 개발
  • V 모형
    폭포수 모델 + 테스트에 초점 맞춤
  • 4세대 기법

애자일 방법론

  • XP : 의사소통, 용기, 피드백, 존중, 단순성
  • 스크럼 : 스프린트, 백로그
  • 크리스털 : 규모에 따른 방법론 제공
  • FDD : 기능주도 개발

프로젝트 관리

  • 프로젝트 핵심 관리대상
    사람, 문제, 프로세스 - 3P
  • PMBOK
    프로젝트 관리 프로세스 및 지식체계
    착수, 계획, 실행, 통제, 종료

비용산정

  • 하향식
    전문가 판단 기법, 델파이 기법
  • 상향식
    원시코드 라인 수, 단계별 노력
  • 수학적
    - COCOMO : 조직형, 반분리형, 내장형
    - Putnam : Rayleigh-Norden, SLIM
    - FP : 내부 논리 파일(ILF), 외부 연계 파일(EIF), 외부 입력(EL), 외부 출력(EO), 외부 조회(EQ)

일정산정

  • WBS
  • CPM 네트워크 작성
  • 임계경로 계산
  • 간트 차트 표현

플랫폼

  • CPND
    - Contents : 텍스트, 이미지, 오디오, 비디오 등
    - Platform : 웹사이트, 애플리케이션 등
    - Network : 통신 시스템
    - Device : 스마트폰, 콤퓨터 태블릿 등

미들웨어

  • 원격 프로시저 호출
  • 메시지 지향 미들웨어
  • ORB
  • DB 접속 미들웨어
  • TP 모니터
  • 웹 애플리케이션 서버
  • 엔터프라이즈 서비스 버스

요구사항 개발 프로세스

  • 도출 : 인터뷰, 설문조사, 브레인스토밍, 워크샵 등
  • 분석 : DFD, Data Dictionary, Mini-Spec, ERD, STD, UML
  • 명세 : 정형/비정형, 기능/비기능
  • 확인 및 검증

HIPO

  • 하향식 소프트웨어 개발을 위한 문서화도구
  • HIPO Chart 종류
    - 가시적 도표
    - 총체적 도표
    - 세부적 도표

객체지향 분석 방법론

  • 럼바우(Rumbaugh) 방법
    • 객체 모델링 : 객체 다이어그램
    • 동적 모델링 : 상태 다이어그램
    • 기능 모델링 : DFD
  • Booch(부치) 방법 : 미시적 및 거시적 개발 프로세스
  • Jacobson 방법 : Use case를 중심으로 한 분석 방법론
  • Coad와 Yourdon 방법 : E-R 다이어그램을 사용
  • Wirfs-Brock 방법 : 분석과 설계의 구분 없음

설계의 종류

  • 상위 설계 : 아키텍처, 데이터 등
  • 하위 설계 : 모듈, 자료구조, 알고리즘
  • 협약에 의한 설계 : 선행조건, 결과조건, 불변조건

소프트웨어 아키텍처 4+1뷰

  • 논리 뷰 : 시스템의 기능적 요구사항
  • 구현 뷰 : 모듈의 구성과 개발자의 관점을 반영
  • 프로세스 뷰 : 프로그램 실행 시의 시스템을 표현
  • 배치 뷰 : 시스템의 물리적 배치
  • 유스케이스 뷰 : 아키텍처 설계 및 검증을 주도

소프트웨어 아키텍처 패턴 종류

  • 계층화 패턴
  • 클라이언트-서버 패턴
  • 마스터-슬레이브 패턴
  • 파이프-필터 패턴
  • 브로커 패턴
  • 피어 투 피어 패턴
  • 이벤트-버스 패턴
  • 모델-뷰-컨트롤러 패턴
  • 블랙보드 패턴
  • 인터프리터 패턴

UML

시스템의 구조와 동작을 명세하는 표준화된 모델링 언어

UML 특징

  • 가시화 언어
  • 명세화 언어
  • 구축 언어
  • 문서화 언어

UI 설계

  • UI : 정보 기기와 사용자 간의 상호작용을 가능하게 하는 매개체
  • UX : UI를 통해 경험하는 모든 것
  • UI 유형
    • CLI
    • GUI
    • NUI
    • OUI
    • VUI

UI 설계 도구

  • 와이어프레임
  • 스토리보드
  • 프로토타입
  • 목업 - 정적 모형
  • 유스케이스

UI 설계 원칙

  • 직관성
  • 유효성
  • 학습성
  • 유연성

협업도구

  • 여러 사람들이 프로젝트를 동시에 수행할 수 있도록 도와주는 소프트웨어
  • 특수 게시판

형상관리도구

  • 소프트웨어 개발과정에서발생하는 모든 변경을 통제하고 관리하는 방법
  • 변경관리 / 버전관리/ 형상관리
  • 형상관리 절차
    - 형상 식별 : 관리 항목 구분
    - 형상 통제 : 변경 요청을 검토하고, CCB의 승인을 거쳐, 베이스라인에 반영
    - 형상 감사 : 검토
    - 형상 기록 : 기록
  • 형상관리 도구
    - CVS, SVN, GIT