소프트웨어 구축 Chapter 01~03

숨오·2025년 10월 1일

Chapter 01. 소프트웨어 공학

1. 소프트웨어 공학의 3R

  • 역공학(Reverse) -> 유지보수성 향상

    기존 개발된 시스템을 CASE 도구를 이용하여 설계서 등의 문서로 추출하는 작업
  • 재공학(Re-engineering) -> 위험부담 제거

    기존 SW의 기능을 개선시키거나 새로운 SW로 재활용하는 작업
    과정: 분석 > 재구성 > 역공학(소스코드를 가지고 설계 수준 분석) > 이관
  • 재사용(Reuse)
    이미 개발되어 있는 SW 전체 혹은 일부분을 다시 사용
    함수/객체/컴포넌트/애플리케이션 재사용

    종류: 합성중심(모듈만들어 끼워 맞춤),
    생성중심(추상화 형태 명세를 구체화해 프로그램 만듦)

2. 소프트웨어 개발 단계

: 계획 - 요구분석 - 설계 - 구현 - 테스트 - 유지보수

3. 소프트웨어 개발 모델


3-1. 폭포수모델: 선형 순차적 모델, 병행이나 거슬러 반복 진행되지 않음

3-2. 프로토타이핑 모델: 견본/시제품을 통해 완성해나가는 모델

3-3. 나선형 모델: 계획 - 위험분석 - 개발 - 평가 반복 모델, 대규모 프로젝트에 적합

4. 애자일 방법론 (차가 기!스! 날것같으면 X!L!칸!에 대세요)


4-1. 기능 중심(FDD): 신규 기능 단위로 개발

4-2. 스크럼: 우선순위 부여, 개발주기 30일, 매일 15분정도의 회의

4-3. XP(extreme programming): 문서보다는 코드를 중시
(핵심가치 5가지: 의!사선생님, 피!존! 용!기에 담!(단)아주세요)

4-4. Lean 린: 도요타 린 시스템 품질기법

Chapter 02. 프로젝트 계획 및 분석

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

: 사람(People), 문제(Problem), 프로세스(Process)

2. SW 개발 비용 산정 기법

  • 하향식 산정 기법
    전문가 판단기법: 전문가 의뢰
    델파이 기법: 여러 전문가
  • 상향식 산정 기법
    원시코드라인 수(LOC):
    (낙관치(가장 적은 라인수)) + (4*중간치(평균라인수)) + 비관치(가장 많은 라인 수)) / 6
  • 수학적 산정 기법:
    COCOMO: 조직형(5만라인 이하), 반분리형(30만라인 이하), 내장형(30만라인 이상)
    PUTNAM: 랠리노든 곡선을 기초로 하는 모형
    SLIM: 랠리노든 곡선을 기초로 개발한 자동화 추정도구
    FP(기능점수): 기능의 개수가 기준
    ESTIMACS: FP모형을 기초로 개발된 자동화 추정도구
    ㄴ 데이터기능(내부논리파일,외부연계파일), 트랜잭션기능(외부 입력,출력,조회)

3. 개발 일정 산정

  • WBS(work breakdown structure): 프로젝트 활동, 업무 세분화 작업
  • PERT: 미사일 개발 프로젝트로 개발됨, 시간 단축 목표
  • CPM: 화학공장 유지 프로젝트로 개발됨, 최소의 비용 추가 투입을 고려 > 시간 단축 목표
  • PERT/CPM: PERT로 완료시간 결정하고, CPM으로 단축하는 방법
    ㄴ 임계경로(Critical Path): 가장 오래 걸리는 일정이 임계경로
  • 간트 차트: 일정 계획의 최종 산출물로, 바 형태의 도구

4. 미들웨어 (중간 매개 SW)

  • 원격 프로시저 호출(Remote procedure call)
  • 메시지 지향 미들웨어(Message Oriented Middleware): 비동기형 메시지 전달
  • ORB(Object request broker): 객체지향 시스템에서 서비스 요청, 전송
  • DB 접속 미들웨어: 애플리케이션-데이터베이스 서버 연결
  • TP 모니터: 트랜잭션 처리 감시하고 제어
  • 웹 어플리케이션 서버(WAS, web application server): 동적인 콘텐츠 제어
  • 엔터프라이즈 서비스 버스(ESB): 표준 I/F 통신 지원, 기업 안팎 시스템 환경 연동

5. 요구사항 개발 프로세스(도분명확)

도출 - 분석 - 명세 - 확인

6. 객체 지향 분석 방법론

  • Rumbaugh(럼바우):
    객체모델링: 객체 다이어그램 이용 / 가장 선행되어야 함
    동적모델링: 상태 다이어그램 이용 / 객체나 클래스의 상태, 사건을 중심으로 표현
    기능모델링: 자료흐름도 이용 / 프로세스들간의 자료 흐름을 중심으로 처리과정 표현
  • Booch: 미시적, 거시적 개발 프로세스 모두 사용
  • Jacobson: Use case 강조
  • Coad & Yourdon: E-R 다이어그램 사용
  • Wirfs-Brock: 분석-설계 간 구분 없음

Chapter 03. 소프트웨어 설계

1. 소프트웨어 설계의 원리

  • 모듈화: 개발가능한 작은 단위로 나눔
  • 정보은닉: 내 정보를 숨기고, 클래스 외부에서 특정 정보 접근 막는 것
  • 추상화: 핵심 위주로 단순화시켜 모델링
    ㄴ 과정 추상화: 자세한 단계 X, 수행흐름만 먼저 설계
    ㄴ 데이터 추상화:데이터 구조를 대표가능한 표현으로 대체
    ㄴ 제어 추상화: 여러 명령들을 간단한 표현으로 대체

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

  • 논리뷰: 기능적 요구사항
  • 구현뷰: 정적인 SW 모듈 구성, 개발자 관점
  • 프로세스뷰: 실행 시의 시스템 구현, 동작이 중점적
  • 배치뷰: 배치 다이어그램
  • 유스케이스뷰:다른 뷰 검증, Use case 다이어그램 사용,
    +1에 해당하며 나머지 4개 뷰 모두 참여하며 영향을 줌

3. 소프트웨어 아키텍처 패턴

  • 계층화패턴: 하위층이 제공하는 서비스를 상위층의 서브시스템이 이용할 수 있는 구조
  • 클라이언트-서버 패턴: 다수의 클라이언트와 하나의 서버로 구성
  • 마스터-슬레이브 패턴: 마스터가 슬레이브한테 작업 분산
  • 파이프-필터 패턴: 처리된 데이터를 파이프통해 전송 (재사용성 높음)
  • 브로커 패턴: 분산 시스템에서 사용되는 패턴
  • 피어 투 피어 패턴: 피어라 부르는 컴포넌트 간에 서비스를 주고받는 패턴
  • 이벤트-버스 패턴: 이벤트 버스를 통해 특정 채널로 메시지 발행
  • MVC 패턴: 3개의 컴포넌트가 각자의 역할을 가지고 서비스 제공하는 패턴
    모델: 도메인 기능, 자료 저장 보관
    뷰: 사용자에게 결과표시
    컨트롤러: 사용자로부터 입력받아 연산처리
  • 블랙보드 패턴: 해결전략이 알려지지 않은 문제에 대해 유용한 패턴
  • 인터프리터 패턴: 특정 언어 프로그램 해석 컴포넌트 설계할 때 사용되는 패턴

4. UML 특징

: 가시화, 명세화, 구축, 문서화 언어

  • 사물: 구조사물(물리적 요소), 행동사물(요소들의 행위), 그룹사물(요소들 그룹화), 주해사물(부가설명, 제약조건)
  • 관계
    일반화관계: 상속개념 (ex.가전제품 - 세탁기, TV, 식기세척기)
    연관관계: 2개 이상 사물이 서로 관련 (ex.사람-휴대폰)
    의존관계: 2개 이상 사물이 서로 관련됐으나, 매우 짧은 시간만 유지 (ex.학생-색연필)
    실체화관계: 인터페이스를 구현받아 추상 메서드를 오버라이딩 (ex.리모콘 틀 - 선풍기 리모콘, TV 리모콘)
    집합관계-집약관계: has a 관계, 전체 객체가 사라진다해도 부분 객체 사라지지 않음 (ex. 불고기 - 간장, 다시다, 미원)
    집합관계-합성관계: 부분 객체가 전체 객체에 속하는 관계로 긴밀하고 필수적 관계 (ex. 책상 - 책상다리, 상판, 나사)

5. UML 구조적(정적) 다이어그램

: 클래스,객체, 컴포넌트,배치, 복합체구조,패키지 (클객 컴배 복패)

  • 클래스 다이어그램: 구성요소 간 정적인 관계를 표현한 다이어그램
    ㄴ구성요소 : 클래스 이름, 속성(클래스의 상태,정보) , 연산(동작) , 접근 제어자
  • 객체 다이어그램: 특정 시점에 존재하는 객체와 그 관계 표현
  • 컴포넌트 다이어그램: 구현 단계에서 사용 컴포넌트의 구조와 연결 관계 표현
  • 배치 다이어그램: 물리적 요소 위치, 구현단계
  • 복합체 구조 다이어그램: 내부 구조 표현

6. UML 행위적(동적) 다이어그램

: 유스케이스, 시퀀스(순차), 커뮤니케이션, 상태, 활동, 타이밍 (유시커 상활타)

  • 유스케이스 다이어그램: 시스템이 제공하고 있는 기능 등을 사용자의 관점에서 표현한 다이어그램
    ㄴ 구성요소: 시스템, 액터(사람이나 시스템), 유스케이스(시스템 기능)
    ㄴ 연관관계: 상호작용 있음, 실선 표현 (사용자 - 글을 등록한다)
    ㄴ 포함관계(include): 유스케이스 수행시 반드시 실행되어야 하는 경우 (글을 등록한다 -> 로그인한다)
    ㄴ 확장 관계(extend): 특정 조건에 따라 기능을 수행하는 경우 (글을 등록한다 <- 파일을 첨부한다/안한다)
  • 순차 다이어그램: 시스템/객체들이 주고받는 메시지 표현
  • 커뮤니케이션 다이어그램: 객체들 간의 연관까지 표현
  • 상태 다이어그램: 상태 변화 과정을 표현
  • 활동 다이어그램: 처리의 흐름을 순서에 따라 표현
  • 타이밍 다이어그램: 객체 상태 변화와 시간제약을 명시적으로 표현
profile
자신감만땅

0개의 댓글