일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL튜닝
- SQL 튜닝
- 인텔리제이 Web 애플리케이션
- 반복문
- 산술 연산자
- 함수
- 자바의정석
- 이클립스 설치
- 오버로딩
- 오버라이딩
- 객체
- StringBuffer
- java
- 연산자
- 객체지향
- 스프링시큐리티 로그아웃
- 친절한 SQL
- 배열
- join
- 친절한 SQL 튜닝
- SpringSecurity 로그인
- SpringSecurity 로그아웃
- spring 게시판 삭제
- 상속
- 식별자
- 예약어
- SQL
- 논리 연산자
- @PreAuthorize("isAuthenticated()")
- 비교 연산자
- Today
- Total
gi_dor
소프트웨어 설계 본문
🔹 요구사항 개발 프로세스
도출 → 분석 → 명세 →확인
'도분명확'
도출
- 인터뷰
- 브레인스토밍 : 말 꺼내기 쉬운 분위기로 만들어 참석자들이 내놓은 아이디어를 비판없이 수용 할수있도록 하는 회의
- 델파이 : 전문가의 경험적 지식을 통해 해결및 미래예측
- 롤플레잉 : 각자 맡은 역을 연기해 요구사항 분석
- 워크숍 : 단기간의 집중적인 노력 , 핵심 인물 참여 필요 , 협력 , 사전준비 요구
- 설문조사
분석
- 자료 흐름지향 분석 : 데이터흐름도 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)상호작용 다이어그램
- 타이밍 다이어그램
🔹 응집도
우연적 , 논리적 , 시각적 , 절차적 , 통신적 , 순차적 , 기능적
우논시절 통순기
🔹 결합도
내용 > 공통 > 외부 > 제어 > 스탬프 > 자료
🔹 객체 지향 구성요소
- 클래스
- 객체
- 메서드 - 클래스로부터 생성된 객체를 사용하는 방법
- 메시지 - 객제 간 상호작용 수단 , 어떤 행위를 지시
- 인스턴스 - 클래스에 속한 각각의 객체
- 속성 - 한 클래스 내에 속한 객체들이 가지고있는 데이터 값들을 정의
🔹 사용자 인터페이스 구분
- 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 | 웹서비스 프로토콜을 이용해 연계 |
'자격증 > 정보처리' 카테고리의 다른 글
모의고사 1과목 오답노트 - 기록 (1) | 2024.02.18 |
---|---|
정보 시스템 구축관리 (1) | 2024.02.17 |
데이터베이스 구축 (1) | 2024.02.12 |
소프트웨어 개발 - 2 자료구조 (1) | 2024.02.06 |
소프트웨어 개발 - 1 (0) | 2024.01.27 |