본문 바로가기

정처기

소프트웨어 설계

반응형

★ 폭포수 모형

- 가장 오래되고 폭넓게 사용된 고전적 생명 주기 모형

- 한 단계가 끝나야만 다음 단계로 넘어가는 선형 순차적 모형

- 단계별 정의 및 산출물이 명확

- 개발 중간에 요구사항의 변경이 용이하지 않음

- 타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

(분설구테유)

 

★ 프로토타입 모형

- 견본품으로 최종 결과물 예측 모형

- 개발 중간에 요구사항 변경 용이

 

★ 나선형(Spiral) 모형

- 폭포수와 프로토타입 모형 장점에 위험 분석 기능을 추가한 모형

- 점진적 개발 과정 반복으로 요구사항 추가 가능

- 정밀하고 유지보수 과정 필요없음

- 계획 및 정의 -> 위험 분석 -> 공학적 개발 -> 고객 평가

(계위개고)

 

★ 애자일 모형

- 민첩함. 기민함 의미

- 변화에 유연하게 대응

- 일정한 주기를 반복하며 개발과정 진행

- 고객과의 소통에 초점을 맞춤

- 기능중심 개발

ex) XP, 스크럼, 칸반, 크리스탈,

린: 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화,

ASD(Adaptive Software Development), FDD(Feature Driven), DSDM(동적 소프트웨어 개발 방법), DAD(Disciplined Agile Delivery)

-> 엑스칸크린

 

★ 스크럼 기법

- 개발 작업에 관한 모든 것 스스로 해결

- 스프린트는 2-4주 정도의 기간

1) 제품 책임자(PO, Product Owner)

 - 요구사항이 담긴 백로그를 작성하는 주체

 - 백로그에 대한 우선순위 지정, 이해관계자들의 의견 종합

2) 스크럼 마스터

 - 스크럼 회의 주관

 - 팀원 통제 목표 아님

3) 개발팀

 - 제품 책임자와 스크럼 마스터를 제외한 모든 팀원(최대 7-8명)

4) 스크럼 개발 프로세스

 - 스프린트 계획 회의 -> 스프린트 -> 일일 스크럼 -> 스크럼 검토 -> 스프린트 회고(계스일검회)

 

XP(eXtreme Programming)

1) 핵심 가치

-> 용기, 단순성, 의사소통, 피드백, 존중(용단의피존)

2)기본 원리

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

(전소테 계공짝디)

 

★ 개발 기술 환경 파악

1) 운영체제

 - 하드웨어가 아닌 소프트웨어

 - 가용성, 성능, 기술 지원, 구축 비용, 주변 기기(가성기구주)

2) 미들웨어

 - 운영체제와 응용 프로그램 사이에서 추가적인 서비스를 제공하는 소프트웨어

3) 데이터베이스 관리 시스템

 - 사용자와 데이터베이스 사이에서 정보를 생성하고 DB를 관리하는 소프트웨어

 - DB의 구성, 접근 방법, 유지관리에 대한 모든 책임을 짐

 - JDBC(Java Database Connectivity), ODBC(Open Database Connectivity)

 - Oracle, MySQL, SQLite, MongoDB, Redis 등

 - 가용성, 성능, 기술 지원, 구축 비용, 상호호환성 -> 가성 기구후

4) 웹 어플리케이션 서버(WAS) 

 - 정적인 콘텐츠를 처리하는 웹서버와 반대됨

 - 동적인 콘텐츠를 관리하기 위해 사용하는 미들웨어

 - 데이터 접근, 세션 관리 ,트랜잭션 관리 등을 위한 라이브러리 제공

 - Tomcat, JEUS, WebLogic, JBoss, Jetty, Resin 등등

 - 가용성, 성능, 기술 지원, 구축 비용(가성기구)

 5) 오픈소스

 - 무료로 사용할 수 있게 공개한 것

 - 라이선스 종류, 사용자 수, 지속 가능성(라사지)

 

★ 요구사항 정의

1) 기능 요구사항

 - 기능, 입력, 출력, 저장, 수행 등

2) 비기능 요구사항

 - 성능, 품질, 제약사항, 호환성, 보안 등

3) 요구사항 개발 프로세스

 - 도출/추출 -> 분석 -> 명세 -> 확인/검증

(도분명확, 추분명검)

4) 요구사항 분석 기법

- 분류, 개념 모델링(UML), 요구사항 할당/협상, 정형 분석

(분개할협정)

5) 요구사항 확인 기법

- 검토, 프로토타이핑, 모델 검증, 인수 테스트(검프모인)

 

★ UML

1) 구성요소★: 사물, 관계, 다이어그램(사관다)

2) 사물: 구조, 행동, 그룹, 주해(사물) (구행그주)

3) 관계: 연관(ㅡ), 집합(), 포함(🔹), 일반화(ㅡ), 의존(-->), 실체화(--)

(연집포 일의실)

4)구조적, 정적 다이어그램

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

 + 컴포넌트, 배치 다이어그램은 구현 단계에서 사용되는 다이어그램

5) 행위, 동적 다이어그램

 - 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 상호작용 개요, 타이밍(유시커 상활호타)

 

★ UI

1)UI 구분

 - CLI(Command), GUI(Graphical), NUI(Natural), VUI(voice), OUI(Organic)

2) 기본 원칙

 - 직관성(쉽게 이해 사용), 유효성(목적 정확 완벽), 학습성(쉽게), 유연성(요구사항 최대한 수용)(직유학연)

3) 웹의 3요소

 - 웹 표준, 접근성, 호환성(표접호)

4) 설계 도구

 - 와이어프레임: 레이아웃 협의, 공유

 - 스토리보드: 작업 지침서, 작업 산출물

 - 프로토타입: 테스트 가능한 동적 모형

 - 목업: 실제 화면과 유사한 정적 모형

 - 유스케이스: 사용자 측면 요구사항을 다이어그램 형식으로 묘사

(와스프목유)

5) UI 프로토타입

 - 장점: 설득하고 이해 쉬움, 개발 시간 줄일 수 있음. 사전 오류 발견 가능

 - 단점: 반복적인 개선, 보완 작업으로 작업 시간 증가 및 자원 소모, 부분적인 프로토타이핑으로 인한 중요한 작업 생략 가능성

6) 시나리오 문서 요건

 - 이해성, 완전성, 일관성, 가독성, 수정 용이성, 추적 용이성(이완일 가수추)

7) 기타

 - HCI: 사람과 컴퓨터의 상호작용을 연구

 - UX: 사용자가 시스템이나 서비스를 이용하면서 느끼고 생각하는 경험(주관성, 정황성, 총체성)

 - 감성공학: 1류, 인간 감성, 2류, 심리적 기능 , 3류; 공학적 및 수학적 모델 객관적

 

★품질 요구사항

1) 국제 제품 품질 표준

 - ISO/IEC 9126, 12119, 14598, 25000(SQuaRE로 불리며 품질 관리,모델,측정,오구,평가(관모측요평))

2) ISO/IEC 9126

 - 기능성, 신뢰성, 사용성, 효율성, 유지 보수성, 이식성(기신사 효유이)

3) ISO/IEC 14598

 - 반복성, 재현성, 공정성, 객관성(반재공객)

4) 국제 프로세스 품질 표준: 9001, 12207(기조지), 15504(SPICE불수관 확예최), CMMI(성숙도, 능력도 평가)

 

★소프트웨어 아키텍처

1) 모듈화: 모듈 단위로 나눠 성능, 재사용성 향상(크기 크면 개발 비용이 크고, 크기 작으면 통합 비용이 큼)

2) 추상화: 전체적이고 포괄적인 개념 설계 후 차례로 세분화 하여 구체화(과정, 데이터, 제어 추상화)

3) 단계적 분해: 추상화 반복에 의해 세분화

4) 정보 은닉: 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하는 기법, 모듈 변경 시 영향을 받지 않아 수정, 시험, 유지보수 용이

 

★아키텍처 패턴

1) 레이어 패턴(계층으로 구분)

2) 클라이언트-서버 패턴

 - 하나의 서버와 다수 클라이언트 컴포넌트로 구성되는 패턴

 - 컴포넌트: 독립적인 업무 또는 기능을 수행하는 실행코드 기반으로 작성된 모듈

3) 파이프-필터 패턴

 - 데이터 스트림 절차 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴

 - 필터 컴포넌트는 재사용성이 좋고 추가가 쉬워 확장 용이

 - 필터 컴포넌트들을 재배치하여 다양한 파이프라인 구축 가능(UNIX의 쉘)

4) 모델-뷰-컨트롤러 패턴

 - 서브 시스템을 3개의 부분으로 구조화하는 패턴

 - 모델: 서브 시스템의 핵심 기능과 데이터 보관

 - 뷰: 사용자에게 정보 표시

 - 컨틀롤러: 입력 처리, 뷰 제어, UI 담당

 - 서로 영향 받지 않고 개발 작업 수행

 - 한 개의 모델에 대해 여러 개의 뷰를 만들 수 있으므로 대화형 애플리케이션에 적합

5) 마스터-슬레이브 패턴

 - 마스터에서 슬레이브 컴포넌트로 분할 후 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식

 # 장애 허용 시스템, 병렬 컴퓨팅 시스템

6) 브로커 패턴: 컴포넌트와 사용자를 연결해주는 패턴(분산 환경 시스템)

7) 피어-투-피어 패턴

 - 피어를 하나의 컴포넌트로 간주하며 각 피어는 클라이언트 혹은 서버가 될 수 있는 패턴(멀티스레딩 방식 사용)

8) 이벤트-버스 패턴

 - 소스가 이벤트 메시지 발행 시 리스너들이 메시지 받아 이벤트 처리 방식

 - 이벤트 생성하는 소스, 리스너, 통로 채널, 채널 관리 버스(소리채버)

9) 블랙보드 패턴: 해결책이 명확하지 않은 문제 처리하는데 유용(음성인식, 차량식별, 신호해석)

10) 인터프리터 패턴: 프로그램 코드 해석하는 컴포넌트를 설계할 때 사용됨

 

★객체지향

1) 객체

 - 독립적으로 식별 가능한 이름을 가짐

 - 객체가 가질 수 있는 조건 상태는 일반적으로 시간에 따라 변함.

 - 객체와 객체는 상호 연관성에 의한 관계가 형성됨. 메시지 집합은 행위. 객체는 행위의 특징을 나타냄

 - 객체는 일정 기억장소를 가짐

2) 클래스

 - 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것

 - 공통된 속성과 연산을 갖는 객체의 집합

 - 객체지향 프로그램에서 데이터를 추상화하는 단위

 - 객체들이 갖는 속성과 연산을 정의하고 있는 틀

3) 인스턴스

 - 클래스에 속한 각각의 객체

 - 새로운 객체를 생성하는 것을 인스턴스화

4) 메소드

 - 객체를 사용하는 방법, 함수 연산

5) 메시지

 - 행위하도록 지시하기 위한 방법

6) 캡슐화

 - 데이터와 데이터를 처리하는 함수를 하나로 묶는 것

 - 은폐되어 외부 접근 제한.

 - 외부 모듈 변경으로 인한 파급 효과가 적음

 - 재사용 용이, 인터페이스 단순

 - 결합도 다운, 응집도 업

7) 상속

 - 상위 클래스 모든 속성과 연산을 하위 클래스가 물려받는 것

8) 다중 상속

 - 한 클래스가 두개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것

9) 다형성

 - 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

 

★결합도

(내공외제스자 Bad -> Good)

1) 내용 결합도: 직접 참조하거나 수정할 때의 결합도

2) 공통 결합도: 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도

3) 외부 결합도: 외부의 다른 모듈에서 참조할 때의 결합도(순차적)

4) 제어 결합도: 제어 신호를 이용하여 제어 요소를 전달하는 결합도

5) 스탬프 결합도: 자료구조가 전달될 때의 결합도

6) 자료 결합도: 매개변수나 인수로 데이터를 넘겨주고 받은 데이터에 대한 처리 결과를 다시 돌려주는 결합도

 

★응집도

(우논시절통순기 Bad -> Good)

1) 우연적 응집도: 서로 관련 없는 요소로만

2) 논리적 응집도: 특정 형태로 분류

3) 시간적 응집도: 특정 시간에 처리

4) 절차적 응집도: 순차적으로 수행

5) 통신적 응집도: 동일한 입력과 출력 사용

6) 순차적 응집도: 출력데이터를 다음 활동의 입력 데이터로 사용

7) 기능적 응집도: 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

 

★공통모듈

# 정명완일추

정확성, 명확성(기능 일관 이해, 명확), 완전성(필요한 모든 것 서술), 일관성(충돌), 추적성(관계 파악), 재사용(함수와 객체, 컴포넌트, 애플리케이션)

 

★코드

(식분배간 표연암오)

 - 식별, 분류, 배열, 간소화, 표준화, 연상, 암호화, 오류 검출

1) 순차코드★: 일정 기준 따라 차례로 일련번호 부여

2) 블록코드★: 공통성 있는 것끼리 블록으로 구분. 블록 내에서 일련 번호를 부여

3) 10진코드★: 10진 분할하는 방법을 반복

4) 그룹 분류 코드: 대분류, 중분류, 소분류 등으로 구분

5) 연상코드: 관계 있는 숫자, 문자, 기호 이용해 코드 부여

6) 표의 숫자 코드★(유효숫자코드): 물리적 수치를 그대로 코드에 적용

7) 합성 코드: 2개 이상의 코드를 조합하여 만드는 방법

8) 코드 부여 체계: 이름만으로 코드 부여. 유일한 코드 부여

 

★디자인 패턴

- 아키택처 패턴이 디자인 패턴보다 상위 수준 설계에 사용

- 컴포넌트와 그 관계를 설계하기 위한 참조 모델

1) 생성 패턴

 - 추상팩토리(추상적으로 표현)

 - 빌더(객체 생성 과정과 표현 방법 분리)

 - 팩토리 메소드: 서브클래스가 결정하도록 하는 것

 - 프로토타입: 원본 객체를 복제하는 방법

 - 싱글톤: 하나의 객체를 여러 프로세스가 동시에 참조할 수 있음

2) 구조 패턴

 - 어댑터: 호환성이 없는 클래스 인터페이스를 이용할 수 있도록 변환해주는 패턴

 - 브리지: 구현부에서 추상층을 분리하여 독립적 확장 및 다양성을 가지는 패턴

 - 컴포지트: 복합, 단일 객체를 구분 없이 다룰 때 사용하는 패턴

 - 데코레이터: 객체의 기능을 동적으로 확정

 - 퍼싸드: 서브 클래스의 기능을 간편하게 사용할 수 있도록 하는 패턴

 - 플라이웨이트: 공유해서 사용함으로써 메모리를 절약하는 패턴

 - 프록시: 접근이 어려운 객체를 연결해주는 인터페이스 역할을 수행하는 패턴

(어브컴데 퍼플프)

3) 행위패턴

 - 책임 연쇄, 커맨드, 인터프리터, 반복자, 중재자, 메멘토(되돌려), 옵서버, 상태, 전략, 템플릿 메소드, 방문자

-> 생성패턴과 구조 패턴에 해당안하면 행위 패턴

 

★ 인터페이스 요구사항 검증

1) 요구사항 검증

 - 인터페이스 요구사항 검토 계획 수립, 검토 및 오류 수정, 베이스라인 설정

2) 요구사항 검증 방법

 - 동료 검토: 작서앚가 내용 직접 설명 동료들이 들으며 결함 발견

 - 워크 스루: 검토 회의 전 요구사항 명세서를 미리 배포하여 사전 검토. 짧은 검토 회의

 - 인스펙션: 전문가들이 확인

(동워인)

3) 인터페이스 요구사항 검증 주요 항목

 - 기능성, 완전성, 일관성, 명확성, 검증 가능성, 추적 가능성, 변경 용이성(기완일 명검추변)

 

★ 인터페이스

1) 인터페이스 식별: 인터페이스 목록을 작성

2) 인터페이스 시스템 식별: 송신시스템과 수신 시스템으로 구분하여 작성

3) 표준 항목

 - 시스템 공통부: 연동 시 필요한 공통 정보

 - 거래 공통부: 데이터 처리할 때 필요한 정보

 

★ 인터페이스 방법 명세화

1) 시스템 연계 기술

 - 직접 연계 방식(링컨에제하)

  > DB 링크, DB 커넥션(커넥션 풀), API/Open API(인터페이스 프로그램), JDBC

 - 간접 연계 방식(소웹버)

  > 소켓(포트 할당 클라이언트 통신 요청 시 연결),

  > 웹서비스(WSDL_Web Services Description Language, UDDI_XML기반 규격, SOAP_객체 간의 통신 규약),

  > ESB(Enterprise Service Bus): 다양한 애플리케이션 간 연결과 상호작용 지원하는 미들웨어 플랫폼

2) 인터페이스 통신 유형

 - 단방향(거래 요청만 하고 응답은 없음)

 - 양방향

  > 동기: 거래요청 후 대기

  > 비동기: 요청 후 다른 작업 수행하다 응답이 오면 처리하는 방식

3) 인터페이스 처리 유형

 - 실시간 방식(바로 처리), 지연 처리 방식(매건 처리 단위 비용이 많이 발생 시), 배치 방식(대량의 데이터 처리)

4) 인터페이스 발생 주기: 매일, 수시, 주1회 등

 

★ 미들웨어 솔루션 명세

- 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어

1) DB: DB와 연결 위한 미들웨어 # ODBC, IDAPI, Glue

2) RPC(Remote Procedure Call원격 프로시저 호출): 원격 프로시저를 로컬 프로시저처럼 호출하는 방식

3) MOM(Message oriented Middleware): 메시지 기반의 비동기형 메시지를 전달하는 방식 미들웨어

4) TP-Monitor(Transaction Processing Monitor)★: 트랜잭션 업무. 사용자 수가 증가해도 빠른 응답 속도 유지 업무

5) Legacyware: 기존 애플리케이션에 새로운 업데이트된 기능을 덧붙이고자 할 때 사용되는 미들웨어

6) ORB(Object Request Broker객체 요청 브로커)★: 객체 지향 미들웨어로 코바 표준 스펙을 구현한 미들웨어,

          - 코바: 네트워크에서 분산 프로그램 객체를 생성, 배포, 관리하기 위한 규격 의미

7) WAS★(Web Application Server)

 - 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어 

 - 웹 환경을 구현하기 위한 미들웨어

 - 웹 서버 기능 뿐만 아니라 기업 업무까지 컴포넌트 기반으로 구현 가능

 

플랫폼의 유형

- 싱글사이드 플랫폼: 소비자와 공급자 연결

- 투 사이드 플랫폼: 두 그룹 중개해서 모두에게 개방

- 멀티 사이드 플랫폼: 그룹을 연결하여 중개

- 플랫폼 성능 특성 분석 기법

  > 사용자 인터뷰, 성능 테스트, 산출물 점검

 

★OSI 7계층

- 응용 계층: 사용자와 네트워크(HTTP, FTP, TELNET, SMTP/SNTP, DNS)

- 표현 계층: 데이터 형식 설정, 코드 변환, 암/복호화(JPEG, MPEG)

- 세션 계층: 연결 접속 유지, 동기점(SSH, TLS)

- 전송 계층: 종단간 신뢰성 있고 데이터 전송, 데이터 분할(TCP/UDP, RTCP -> 세그먼트)

- 네트워크 계층: 경로 제공, (IP, ECMP, IGMP, RIP, OSPF -> 패킷)

- 데이터 링크 계층: 인접 시스템 간 동기화, 오류제어, 흐름제어, 오류검출 및 재전송 (HDLC, PPP, LLC, Ethernet -> 프레임)

- 물리 계층: 전기적, 기능적, 절차적 기능 정의(Bit)

 

케이스 도구의 분류(CASE)

- 상위 케이스: 다이어그램으로 표현. 계획 수립, 요구분석, 기본설계 단계

- 중위케이스: 화면 출력 작성 지원, 상세 설계 작업

- 하위 케이스: 시스템 명세서, 소스코드 생성 지원

 

소프트웨어 아키텍처

- 유스케이스뷰, 논리뷰, 프로세스뷰, 구현뷰, 배포뷰

 

★럼바우의 객체 지향 분석, 객체 모델링 기법(OMT)

- 객체 모델링: 객체 다이어그램

- 동적 모델링: 상태도

- 기능 모델링: 자료 흐름도

 

★자료흐름도(DFD: Data Flow Diagram)

- 프로세스: 자료를 변환시키는 시스템의 한 부분을 나타내며 처리, 기능, 변환, 버블이라고도 함

- 자료 흐름: 자료의 이동을 나타냄

- 자료 저장소(Data Store): 시스템에서의 자료 저장소를 나타냄

- 단말(Terminator): 시스템과 교신하는 외부 개체로, 입력 데이터가 만들어지고 출력 데이터를 받음

 

★ 자료 사전 기호

= : 자료의 정의

+ : 자료의 연결

() : 자료의 생략

[|] : 자료의 선택

{} : 자료의 반복

* * : 자료의 설명

 

=> 객체 지향 기법에서 클래스들 사이의 부분-전체 또는 부분의 관계로 설명되는 연관성을 나타내는 용어는?

: 집단화 - 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 개체를 만드는 것.

 

=> HIPO: 하향식 소프트웨어 개발을 위한 문서화 도구

 

=> 객체 지향 분석 방법론

- Coad와 Yourdon 방법★: E-R다이어그램을 사용하여 객체 행위를 모델링

- Booch: 미시적, 거시적 개발 프로세스 모두 사용

- Jacobson: 유스케이스(사용사례)를 가종

- Wirfs-Brocks: 분석과 설계 간의 구분 없음

 

UML 시퀀스 다이어그램의 구성 항목: (생실메): 생명선, 실행, 메시지

 

★객체지향 설계 원칙

SRP(단일책임 원칙): 소프트웨어의 설계 부품은 단 하나의 책임만 가져야 함

OCP(개방-폐쇄 원칙): 기존 코드를 변경하지 않고 기능 수정 또는 추가할 수 있도록 설계 필요

LSP(리스코프치환 원칙): 서브타입은 자신 기반 타입으로 교체할 수 있어야 함

ISP(인터페이스 분리 원칙): 자신이 사용하지 않는 인터페이스는 구현하지 않아야 함

DIP(의존 역전 원칙): 의존 관계를 맺을 때 변화하기 어려운 것에 의존해야 한다는 원책

-> SOLID ***면접 질문

 

디자인 패턴 구성요소

- 패턴 이름과 구분, 문제 및 배경, 솔루션, 사례, 결과, 샘플 코드

 

DBC(계약/협약에 의한 설계 Design by Contract): 책임을 문서화 초점, 가져야하는 기능만큼만, 문서화하고 검증

 

CASE 도구: 자동화, 자동화 기능, 커뮤니케이션

 

 

출처: m.blog.naver.com/wook2124/222102990691

반응형

'정처기' 카테고리의 다른 글

정보처리기사 실기 정리  (0) 2021.07.07
정보시스템 구축 관리  (0) 2021.05.14
프로그래밍 언어 활용  (0) 2021.05.09
소프트웨어 개발  (0) 2021.05.08
데이터베이스 구축  (0) 2021.05.07