소프트웨어 설계
Ch01 소프트에어 개발 방법론
section01 소프트웨어 개발 방법론
01 소프트웨어 공학
시스템 소프트웨어
기본요소: 입력,처리,출력,제어,피드백
성능평가 기준
- 처리능력
- 반환 시간: 작업의뢰부터 처리까지의 시간
- 사용 가능도
- 신뢰도
- 응답 시간: 명령이 입력된 후 응답 출력이 개시될 때까지의 시간
프레임워크의 기대효과
- 품질 보증, 재사용성 향상, 유지보수 용이성
02 소프트웨어 개발 수명 주기
소프트웨어 개발 수명 주기
- 폭포수 모델
- 프로토타입 모델
- 나선형 모델
- 애자일 모델
스크럼 모델
XP(eXtreme Programming)
고객의 참여와 짧은 개발 과정의 반복을 극대화하여 개발 생산성을 높이는 개발 모델
- 단계별 단순한 설계를 통해 개발 속도를 향상
- 가치: 의사소통, 피드백, 단순, 존중, 용기
- 개발 프로세스: 소규모 릴리즈, 스파이크, 이터레이션
03 소프트웨어 개발 방법론
소프트웨어 개발 방법론
소프트웨어 개발 방법론 종류
구조적 방법론
- 정보와 정보의 구조를 중심으로 분석, 설계, 구현한다.
- 분할 정복을 통해 프로그램을 모듈화한다.
- 순차, 선택, 반복으로 프로그램의 흐름을 구성하여 복잡성을 감소시킨다.
컴포넌트 기반 방법론
- 개발 생산성, 이식성 및 호환성, 신속성, 유연성, 표준화 등의 장점이 있다.
- 일반적으로 프로세스 설계과정에선 객체지향 방법론을, 데이터 설계 과정에선 정보공학 방법론 사용
- 선행 투자 비용이 높고, 조립식 시스템에 따르는 책임 및 지적 재산권을 고려해야 한다.
- 단계별 산출물
- 분석 단계: 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표
- 설계 단계: 사용자 인터페이스 설계서, 컴포넌트 설계서, 인터페이스 설계서, 아키텍처 설계서, 총괄시험 계획서, 시스템시험 시나리오, 엔티티 모형 기술서, DB 설계서, 통합시험 시나리오, 단위시험 케이스, 데이터 전환 및 초기 데이터 설계서
- 구현 단계: 프로그램 코드, 단위 시험 결과서, 데이터베이스 테이블
- 시험 단계: 인수시험 시나리오, 운영자 지침서, 사용자 지침서, 시스템 설치 결과서, 인수시험 결과서, 통합시험 결과서
소프트웨어 보안 개발 방법론
보안 개발 방법론
- MS-SDL
- CLASP
- CWE: 보안 취약점을 유발하는 원인
- 입력 데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용
- Seven Touchpoints: 실무적으로 검증된 개발 보안 방법론
- 코드 검토, 아키텍처 위험 분석, 침투 테스트, 위험 기반 보안 테스트, 악용 사례, 보안 요구, 보안 운영
section02 소프트웨어 개발 방법론 테일러링
01 소프트웨어 품질 관리
CMMI
- 어떤 모델이든 업무의 목적에 맞게 수정하여 사용할 필요가 있다.
- 프로세스 관리, 프로젝트 관리, 엔지니어링,지원 영역 등이 있다.
- 조직의 개발 프로세스 역량 성숙도를 평가한다.
SPICE
- 단계별 프로세스 성숙도
- 레벨0(불완전): 프로세스가 구현되지 않거나 프로세스 목적을 달성하지 못함
- 레벨1(수행): 목적은 달성하지만 계획되거나 추적되지 않음
- 레벨2(관리): 프로세스 수행이 계획되고 관리되어 작업 산출물이 규정된 표준과 요구에 부합
- 레벨3(확립): 표준 프로세스를 사용하여 계획되고 관리
- 레벨4(예측 가능): 표준 프로세스 능력에 대하여 정량적인 이해와 성능이 예측
- 레벨5(최적): 정의된 프로세스와 표준 프로세스가 지속적으로 개선
Ch02 요구사항 확인
section01 소프트웨어 개발 환경 분석
현행 시스템
- 소프트웨어 구성 파악: 설치되어 있는 SW 사양,라이선스 방식, 개수 파악
- 시스템 인터페이스 파악: 주고받는 데이터에 대한 속성을 파악(데이터의 종류,형식,프로토콜,전송주기)
- 하드웨어 구성 파악: 물리적 위치,사양,수량,이중화 적용 여부
section02 요구사항 확인
01 요구공학
요구공학 개요
요구사항 개발 프로세스: 도출, 분석, 명세, 검증 순으로 진행
02 요구사항 도출
요구사항 도출
- 소프트웨어 요구사항의 출처를 파악한다.
- 소프트웨어 요구사항을 어떠한 방법으로 수집할 것인지 파악한다.
- 개발자와 고객 사이의 관계가 만들어지고 이해관계자가 식별한다.
유스케이스 다이어그램
유스케이스 기술서 구성요소
- 기본흐름: 어떠한 오류나 예외가 발생하지 않고 모든 것이 완전하게 수행되는 것을 전제로 기술한다.
- 트리거: 기본흐름의 첫번째 단계로 해당 유스케이스를 시작하는 사건을 기술
- 유스케이스명: 시스템과 액터 사이에 목적을 달성하기 위한 기본적인 상호작용 흐름을 기술
- 사후조건: 유스케이스가 실행된 후에 만족해야 하는 조건을 기술(기본흐름 X)
03 요구사항 분석
구조적 분석
특징
- 정형화된 분석 절차에 따라 요구사항을 파악하고 도형 중심으로 표현한 도표이다.
- 시스템 개발의 모든 단계에서 필요한 명세서 작성이 가능하다.
- 시스템 분석 시 사용자 참여 기회를 확대한다.
기본 원리: 추상화 원칙, 정형화 원칙, 분할 정복, 계층화
04 요구사항 명세
고려사항
- 정확성: 모든 요구사항이 소프트웨어에 반영
- 명백성: 애매한 표현 없이 요구사항을 명확히 서술
- 완전성: 기능, 성능, 제약사항, 속성 등 필요한 정보를 모두 서술
- 일관성: 서술된 요구사항 간의 모순, 상충이 없음
- 중요도: 중요도 및 우선순위에 따라 요구사항 나열
- 수정 가능성: 다른 요구사항에 영향을 최소화하며 변경되도록 서술
- 추적성: 요구사항과 관련된 문서, 산출물 참조 가능
section03 UML
01 UML
구성 요소
- 사물: 다이어그램 안에서 관계가 형성될 수 있는 대상
- 종류: 구조, 행동, 그룹, 주해
- 관계
- 종류: 의존, 연관, 포함, 집합, 일반화, 실체화
- 다이어그램
Ch03 화면 설계
section01 UI 요구사항
사용자 인터페이스
- 둘 이상의 대상, 주로 사용자와 컴퓨터 간의 상호작용이 원활하도록 도와주는 HW 및 SW
- 물리적 제어, 기능적 제어, 전체 구성의 제어 등 3가지 분야로 나뉜다.
- UI에 따라 사용자의 SW 이용 방식이 결정된다.
section02 UI 설계
Ch04 애플리케이션 설계
section01 공통 모듈 설계
01 공통 모듈 식별
소프트웨어 설계
설계 추상화
- 자료 추상화: 데이터의 세부적인 속성 및 표현 방법 없이 대표적인 표현으로 대체
- 과정 추상화: 상세 수행 과정이 아닌 전반적인 흐름만 파악하도록 표현
- 제어 추상화: 상세 제어 매커니즘이 아닌 포괄적인 표현으로 대체
모듈의 개념
- 프로그램의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한 것이다.
- 다른 모듈들을 호출하거나 호출을 당할 수 있으며 종속적으로 수행된다.
- SW 통합, 수정 및 테스트가 용이하며 오류의 파급 효과가 적다.
02 모듈의 품질 개선
모듈 응집도
모듈 결합도
- 자료 결합도
- 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해서만 상호작용이 일어나는 경우
- 가장 낮은 결합도를 가지며 모듈의 품질을 향상시킨다.
- 스탬프 결합도
- 제어 결합도
- 외부 결합도
- 공유 결합도
- 내용 결합도
section02 시스템 연동 설계
01 타 시스템 연동 설계
시스템 코드 설계
코드의 분류
- Sequence Code: 자료가 발생하는 순서를 논리적으로 배열하여 차례로 코드를 부여하는 방법
- Block Code
- Decimal Code
소프트웨어 아키텍처
- 모듈,컴포넌트 간의 상호관계를 설계하고 전개하기 위한 지침이다.
- 소프트웨어 품질 요구사항은 소프트웨어 아키텍처를 결정하는 데 중요한 요소로 작용한다.
- 소프트웨어의 골격이 되는 기본 구조이며 소프트웨어 전체에 대한 큰 밑그림이다.
시스템 아키텍처 설계
- 소프트웨어 아키텍처의 설계는 소프트웨어 상세 설계를 제약한다.
- 전체적인 아키텍처 설계, 인터페이스 정의, 사용자 인터페이스 설계 등을 수행한다.
- 시스템 아키텍처 설계, 소프트웨어 아키텍처 설계, 소프트웨어 상세 설계는 일반적인 공통 특성을 가지고 있다.
Ch05 인터페이스 설계
section01 인터페이스 설계
01 인터페이스 시스템 식별
연계 시스템 구성
- 송신 시스템
- 연계 데이터를 생성하거나 원본 데이터를 통해서 추출
- 코드 매핑 및 데이터 변환
- 인터페이스 테이블/파일 생성
- 로그 기록
- 중계 시스템 또는 송신 어댑터 통해 데이터 전송
- 중계 시스템
- 데이터를 변환 및 매핑, 암호화하여 수신 시스템으로 전송
- 수신 시스템
- 중계 시스템 또는 수신 어댑터 통해 데이터 수신
- 인터페이스 테이블/파일 생성
- 코드 매핑 및 데이터 변환
- 로그 기록
- 연계 데이터를 데이터베이스 및 애플리케이션에 반영
02 인터페이스 상세 설계
인터페이스 설계서 구성
- 인터페이스 정의서와 인터페이스 목록으로 구성
Start the conversation