gi_dor

소프트웨어 설계 본문

자격증/정보처리

소프트웨어 설계

기돌 2024. 1. 22. 20:22
728x90

🔹 요구사항 개발 프로세스

도출 → 분석 → 명세 →확인
'도분명확'

도출 

  • 인터뷰 
  • 브레인스토밍 :  말 꺼내기 쉬운 분위기로 만들어 참석자들이 내놓은 아이디어를 비판없이 수용 할수있도록 하는 회의
  • 델파이 : 전문가의 경험적 지식을 통해 해결및 미래예측
  • 롤플레잉 : 각자 맡은 역을 연기해 요구사항 분석
  • 워크숍 : 단기간의 집중적인 노력 , 핵심 인물 참여 필요 , 협력 , 사전준비 요구
  • 설문조사

분석

  • 자료 흐름지향 분석 : 데이터흐름도 DFD , 자료사전
  • 객체지향 분석 : 시스템의 기능과 데이터를 함께 분석 , UML 로 표준화

명세서

  • 비정형 명세기법 : 자연어 기법 , 이해 쉬움 , 검증에 문제 발생있음 // ER 
  • 정형 명세기법 : 수학적인 원리로 표기 , 이해가 어려움 , 간결 , 명확석 // Z-스키마

확인

  • 동료 검토 : 2 ~ 3명이 동시에 , 결함을 발견하는 형태로 진행하는 검토 방법
  • 워크스루 : 오류를 조기에 검출하는데 목적 , 회의전 배포 , 사전 검토후 짧은 시간회의 , 비공식적 검토
  • 인스펙션 : 다른전문가 , 다른팀이 검사하여 오류를 찾아내는 공식적 검토방법

 

🔹 자료사전 

  • { }  반복
  • ( ) 생략
  • ** 주석
  •  +  구성 , 연결
  • [ ]  선택

 

🔹요구사항 분석 CASE

소프트 엔지니어링을 도와주는 자동화 도구

  • 구조적 기법 : 복잡한 시스템을 여러 개의 작은 부분으로 분할하여 문제를 해결하는 방법으로, 설계 및 개발 과정을 구조화
  • 프로토 타이핑 : 초기 단계에서 사용자와 시스템 간의 상호 작용을 모방한 모형을 생성하여 시스템 요구사항을 더 잘 이해하는 데 도움이된다
  • 정보 저장소 : 시스템의 모든 정보를 중앙에 모아 시스템의 모든 관련 정보를 쉽게 액세스하고 업데이트할 수 있도록 하는 방법
  • 자동 프로그래밍 
  • 분산처리

 

소프트웨어 개발에 컴퓨터 기술을 활용하여 효율성과 품질을 향상시키는 방법론

 

🔹 요구사항 분석  HIPO

  • 시스템 분석 , 설계나 문서화 할때 사용한다
  • 입력 처리 출력 기능을 나타냄
  • 가시적 : 시스템 전체 기능과 흐름을 보여주는 구조
  • 총체적 : 프로그램의 입력 처리 출력에 대한 정보
  • 세부적  : 총체적에 표시된 기능을 구성하는 요소의 상세히 기술
  • 기호 , 도표 사용하므로 보기쉽고 이해하기 쉬워 유지보수가 쉽다
  • 변경과 유지보수 용이하다

 

🔹 하향식 설계

  • 메인컴포넌트를 분해해서 아래로 늘어트리면서 개발
  • 한번에 하나씩 실제 모듈로 교체 , 메인모듈에서 시작해 단계적으로 구체화 
  • 모듈이 통합 될때마다 테스트 실시 , 단계적으로 구체화 시킨다
  • 통합 검사시 인터페이스가 이미 정의되어있어 통합이 간단하다
  • 레벨이 낮은 데이터 구조의 세부사항은 설계 초기 단계에서 필요하다
  • 스텁으로 대체
  • 시스템 명세가 정확한경우  , 새로 모든것을 개발할 경우 하향식이 적합

 

🔹  상향식 설계

  • 스텁은 필요치 않다
  • 최하위 수준에서 모듈들을 상세하게 설계 -  밑에서 위를 향해 설계
  • 기본적인 인터페이스가 먼저 설계  기능 추가가 쉽다
  • 최하위 부터 모듈을 설계 , 모듈이 완성되면 결합 하여 검사
  • 기존 컴포넌트들을 조합해 시스템을 개발할 경우 상향식이 적합

하위설계 :  모듈 설계 , 인터페이스 작성
상위 설계 : 아키텍처 설계 , 데이터 설계, 시스템분할 , 인터페이스 정의 , 사용자 인터페이스 설계

 

🔹  자료흐름도 4가지 구성요소

  • 처리 Process : - 자료의 처리 변환과정 표현
  • 자료 흐름 Data Flow :  화살표 - 자료의 흐름
  • 자료 저장소 : Data Store :  평행선 - 파일  데이터베이스 저장소의 위치 표현
  • 단말 Terminator : 사각형 - 자료의 출처와 도착지 표현

삼각형은 없다

🔹 폭포수 모형

  • 가장오래되고 가장 폭넓게 사용된 생명주기 모형
  • 고전적 생명주기 모형 
  • 선형 순차적 모델
  • 개발과정의 각 단계가 순차적으로 진행되는 모형
  • 한 단계가 끝나야 다음으로 넘어간다

🔹 나선형 모형

  • 여러번의 소프트웨어 개발과정의 반복적인 작업을 수행하는  생명주기 모형
  • 유지보수 과정이 필요없음
  • 개발중 발생하는 위험을 관리하고 최소화하는 것이 목적
  • 나선 모양으로 개발순서를 반복하여 수행 누락된 요구사항 추가할수 있다

 

🔹  V모델

  • 폭포수 모형에 시스템 검증과 테스트 작업을 강조하는 모델

 

🔹  애자일 개발방법론  핵심

  • 날렵한 , 재빠른 
  • 특정 방법론이 아닌 소프트웨어를 빠르고 낭비없이 제작하기 위해 고객과의 협업에 초점을 둔다
  • 설계변경에 신속히 대응해 요구사항 수용 가능
  • 개인과 고객과의 소통을 중요시 한다

익스트림 프로그래밍 - XP

  • 용기 : 용기를 가지고 자신감 있게 개발
  • 단순성 : 필요한 것만 하여 단순화한다.
  • 의사소통: 주체간의 원활한 의사소통이 가능하다.
  • 피드백: 신속한 피드백을 할 수 있다.
  • 존중: 팀원 간의 상호 존중이 필요하다.

📌 짝 프로그래밍 , 공동 코드 소유 , 테스트 주도 개발 , 전체 팀 , 계속적인 통합 , 디자인 개선 리팩토링 , 소큐모 릴리즈

 

스크럼 - Scrum

    • 팀이 중심이되어 개발의 효율성을 높인다
    • 프로젝트 관리를 위해 상호, 점진적인 개발 방법론
    • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 개발 방법론이다.

스프린트 - Sprint

  • 실제 개발 작업을 진행하는 과정 2 ~ 4 주 정도 기간 내에서 진행
  • 속도를 측정한 후 개발담당자에게 할당

린  - LEAN

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발에 적용한 것, 낭비 요소를 제거하여 품질을 향상한다

DSDM

FDD

크리스탈

🔹 웹 애플리케이션 서버 WAS

사용자의 요구에 따라 변하는 동적인 컨텐츠를 처리하기 위해 사용되는 미들웨어

🔹 요구사항 정의

기능적 

  • 시스템이 실제로 어떻게 동작하는지

비 기능적

  • 시스템 구축에 대한 성능 , 보안 , 품지 ㄹ, 안정드엥 대한것

 

🔹 개발하는 시스템을 이해하기 위해 쉬운 형태 , 표준화된 모델링 언어

 UML   Unified Modeling Language

  • Thing
  • Diagram
  • Relationship
  • 띵다리

🔹 다이어 그램 

  • 사물과 관계를 도형으로 표현한것

🔹 UML -구조적 다이어그램

  • 클래스 다이어그램 : 클래스와 클래스가 가지는 속성 , 클래스 사이의 관계 / 클래스 , 제약조건 , 관계로 구성
  • 객체 다이어그램 : 클래스에 속한 사물(객체) , 객체와 객체사이의 관계
  • 컴포넌트 다이어그램 : 구현단계에서 사용됨 , 컴포넌트 간의 인터페이스를 표현
  • (Deployment)배치 다이어 그램 
  • 복합체 구조 다이어그램
  • 패키지 다이어그램

🔹UML -행위 다이어 그램

  • 유스케이스 다이어그램 : 사용자의 요구 분석하는것으로 기능 모델링 작업에 사용 , 사용자와 사용사례로 구성된다
  • (Sequence)순차 다이어그램 : 시스템, 객체들이 주고받는 메세지를 주고 받으며 시간의 흐름에 따라 상호 작용을 그림으로 표현
  • 커뮤니케이션 다이어그램
  • 상태 다이어그램
  • (Activity)활동 다이어그램 
  • (Interaction)상호작용 다이어그램 
  • 타이밍 다이어그램

🔹 응집도 

우연적 , 논리적 , 시각적 , 절차적 , 통신적 , 순차적 , 기능적

우논시절 통순기

🔹 결합도 

내용 > 공통 > 외부 > 제어 > 스탬프 > 자료

 

🔹 객체 지향 구성요소

  1. 클래스
  2. 객체
  3. 메서드 - 클래스로부터 생성된 객체를 사용하는 방법
  4. 메시지 - 객제 간 상호작용 수단 , 어떤 행위를 지시
  5. 인스턴스 - 클래스에 속한 각각의 객체 
  6. 속성 - 한 클래스 내에 속한 객체들이 가지고있는 데이터 값들을 정의

 

🔹 사용자 인터페이스 구분

  • CLI : 명령과 출력
  • GUI :  아이콘이나 메뉴를 마우스로 선택해 수행
  • NU :  사용자의 말이나 행동으로 기기조작
  • VUI :  사람의 음성으로 기기조작
  • OUI :  모든 사물과 사용자 간의 상호작용을 위한 인터페이스

 

 

🔹 사용자 인터페이스 기본원칙

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

🔹  UI설계도구

  • 스토리보드 : 최종적 상세하게 만들었다 개발자가 참고하는 작업 지침서
  • 프로토 타입 :  실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형을 만든다
  • 유스케이스 : 사용자 입장에서 요구 사항으로 , 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술함
  • 목업 : 정적인 형태의 모형 
  • 와이어 프레임 : 페이지에 대한 레이아웃 , UI요소 뼈대설계  

🔹 효과적인 프로젝트 관리 3요소

  • 사람 - 인적자원
  • 문제 - 문제인식
  • 프로세스 - 작업계획

 

🔹 럼바우러 분석 기법

  • 가장 일반적임
  • 모든 소프트웨어 구성요소를 그래픽 표기법으로 모델링하는 기법
  • 객체모델링 - 동적모델링 - 기능모델링

🔹 부치 Booch

  • 미시적 개발 프로세스와 거시적 개발 프로세스 모두 사용
  • 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의

🔹 Jacobson 

  • Use Case 강조해 사용하는 분석 
  • Use Case 
    사용자의 관점에서 표현한것 
    시스템 범위 파악 가능
    외부요소와 시스템간의 상호작용을 확인가능
    시스템이 액터에게 제공해야하는 기능 
    시스템의 요구사항이자 , 기능을 의미
    액터는 시스템외부에서 시스템과 상호작용 또는 사괌혹은 시스템을 말함

🔹 Coad 와 Yourdon

  • ER 다이어 그램을 사용해 객체의 행위를 모델링 
  • 객체식별 , 구조 식별 , 주제 정의 , 속성과 인스턴스 연결정의 등의 과정으로 구성하는 기법

🔹 Wirfts-Brock

  • 분석과 설계의 구분이 없다
  • 고객명세서를 평가해 설계 작업까지 연속적으로 수행

 

 

🔹 객체지향 설계원칙 SOLID

SRP 객체는 단하나의 동작만 책임을 가진다
OCP 기존 코드를 변경하지 않고 기능을 추가 할수 있게 설계 // 확장에 열려있고 변경에 닫혀있다
LSP 자식 클래스는 부모클래스에게 받은 기능은 수행 할수 있어야한다
ISP 자신이 사용하지 않는 인터페이스와 의존관계 맺거나 영향받지 않아야한다
DIP 객체들 간의 의존관계가 성립될 때 추상성이 낮은클래스보다 높은 클래스의 의존관계를 맺어야 한다

 

🔹 오픈소스 라이센스 종류

📌 GNP GPLv1 - 소스코드 공개 하지 않으면서 바이너리만 배포하는 것을 금지한다
📌 BSD - 아무나 개작 가능 , 수정한 것을 제한없이 배포 할수 있다 , 상용소프트웨어에도 사용 가능

 

🔹 파이프 필터 구조

서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복되는 아키텍처 스타일
필터간 데이터이동에서 데이버 변환 오버헤드가 발생
단방향 패턴

 

🔹 디자인 패턴

  • 모듈간의 역할이나 인터페이스와 같은 코드를 작성하는 세부적인 구현을 설계할 때 참조하는 해결방식
  • 문제 배경 실제사례 재사용이 가능한 샘플 코드로 구성
  • 구조 파악이 용이하다
  • 생산성을 높이는데 적합하다
  • 재사용을 통해 개발시간과 비용이 절약된다
  • 초기 투자 비용이 부담스럽다
  • 애플리케이션 개발에는 적합하지 않다

🔹 GoF 디자인 패턴

  • 생성패턴
  • 구조패턴
  • 행위패턴

 

🔹 생성패턴

  • 객체의 생성과 참조과정을 캡슐화 한다
  • 프로그램에 유연성을 더해준다
  • 추상팩토리 : 구체적인 의존하지 않는다 , 서로 연관 의존하는 객체들의 그룹으로 생성해서 추상적으로 표현한다
  • 빌더 
  • 팩토리메서드 : 가상 생성자 패턴이라고 한다
  • 프로토타입 : 원본 객체를 복제하는 방법으로 객체를 생성한다 // 비용이 큰경우 주로 사용한다
  • 싱글톤 : 하나의 객체를 생성시 어디서든 참조 하지만 동시에 참조할수 없다

🔹 구조 패턴

  • 클래스나 객체들을 조합해 더 큰 구조로 만들수 있다
  • 어댑터 패턴(Adopter)
  • 브릿지 패턴(Bridge)
  • 컴포지트 패턴(Composite)
  • 데코레이터 패턴(Decorator)
  • 퍼사드 패턴(Pacade)
  • 플라이웨잇 패턴(Flyweight)
  • 프록시 패턴(Proxy)

🔹 행위 패턴

  • 역할 사슬 패턴(책임 연쇄 / Cain Of Responsibility)
  • 커맨드 패턴(Command)
  • 인터프리터(Interpreter)
  • 이터레이터(Iterator)
  • 중재자(Mediator)
  • 메멘토(Memento)
  • 옵저버(Observer)
  • 상태(State)
  • 전략(Strategy)
  • 템플릿 메서드(Template Method)
  • 방문자(Visitor)

 

🔹 요구사항 검증방법

  • 동료검토 : 동료들이 들으면서 결함을 발견
  • 워크스루 : 미리배포하여 사전 검토한 후에 짧은 검토회의
  • 인스펙션 : 다른 검토 전문가들이 요구사항명세서를 확인해 결함을 발견

프로토타입 , 테스트 설계 , CASE 도구 활용

 

🔹 EAI

  • 기업내의 컴퓨터 애플리케이션들을 현대화
  • 통합하고 조정하는것을 목표로 세운 계획 , 방법 및 도구

 

🔹 시스템 연계기술

DB Link DB 에서 제공하는 DB Link   객체 이용
API / Open API 송신 시스템의 DB에서 데이터를 읽어와 제공하는 애플리케이션 프로그래밍 인터페이스
연계 솔루션 EAI 서버와 송 수신 시스템에 설치되는 클라이언트를 이용
Socket 서버는 통신을위해 Socket 생성 , 포트 할당 , 클라이언트의 통신요청시 연결
Web Service 웹서비스 프로토콜을 이용해 연계
728x90

'자격증 > 정보처리' 카테고리의 다른 글

모의고사 1과목 오답노트 - 기록  (1) 2024.02.18
정보 시스템 구축관리  (1) 2024.02.17
데이터베이스 구축  (1) 2024.02.12
소프트웨어 개발 - 2 자료구조  (1) 2024.02.06
소프트웨어 개발 - 1  (0) 2024.01.27