소프트웨어 설계
❤️애자일(Agile) 소프트웨어 개발
- 민첩한, 기민한 이라는 의미로 고객의 요구사항 변화에 유연하게 대응 할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행한다.
- 공정과 도구보다 개인과의 상호작용을 더 가치 있게 여긴다.
- 계약 협상보다는 고객과의 협력을 가치 있게 여긴다.
- 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다.
- 방대한 문서보다는 실행되는 SW(소프트웨어)에 더 가치를 둔다.
🧡XP(eXtreme Programing)의 5가지 가치
- 의사소통(Communication)
- 단순성(Simplicity)
- 용기(Courage)
- 존중(Respect)
- 피드백(Feedback)
- XP는 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
- 짧고 반복적인 개발 주기
- 단순한 설계
- 고객의 적극적인 참여
- 비교적 소규모 인원의 개발 프로젝트에 효과적
💛자료흐름도(DFD)
- 자료 흐름(Data Flow) : 화살표
자료의 이동(흐름)이나 연관관계를 나타냄
- 처리(Proess) : 원
자료를 변환시키는 시스템의 한 부분을 나타내며 처리, 기능, 변환, 버블이라고도 함
- 자료 저장소(Data Store) : 직선(평행선)
시스템에서의 자료 저장소(파일, 데이터베이스)를 나타냄
- 단말 (Terminator) : 사각형
시스템과 교신하는 외부 개체로, 입력 데이터가 만들어지고 출력 데이터를 받음(정보의 생산자와 소비자)
- HIPO 차트 종류에는 가시적 도표, 총체적 도표, 세부적 도표가 있다.
- 가시적 도표(Visual Table of Contents)
-시스템의 전체 기능과 흐름을 보여주는 Tree(계층) 구조
- 총체적 도표(Overview Diagram)
-프로그램을 구성하는 기능을 기술한 것
-입력, 처리, 출력에 대한 전박적인 정보 제공
- 세부적 도표(Detail Diagram)
-총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표
-총체적 도표와 같은 모양이지만 내용만 좀 더 복잡하게 들어간 형태
- 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
- 보기 쉽고 이해하기 쉽다.
- 하향식 소프트웨어 개발을 위한 문서화 도구
-시스템의 분석 및 설계나 문서화할 때 사용된는 기법으로 시스템 실행 과정인 입력, 처리, 출력의 기능을 나타낸다.
-체계적인 문서 관리가 가능
💙상태 다이어 그램(State Diagram) 객체 전이의 요인
- 상태 다이어그램은 객체들 사이에 발생하는 이벤트(event)에 의한 객체들의 상태 변화를 그림으로 표현한 것
- 럼바우 객체지향 분석 기법에서 동적 모델링에 활용
💜UML 확장 모델 스테레오 타입 객체 표현하는 기호
스테레오 타입 객체 : 겹화살괄호 << >>
🤎유스케이스 다이어그램(UseCase Diagram)
- 시스템과 상호작용하는 모든 외부 요소를 액터라고 한다.
- 유스케이스는 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.
- 시스템 액터는 다른 프로젝트에서 이미 개발되어 사용되고 있으며, 본 시스템과 데이터를 주고받는 등 서로 연동되는 시스템을 말한다.
- 액터가 인식할 수 없는 시스템 내부의 기능을 하나의 유스케이스로 파악해서는 안된다.
🖤NUI(Natural User Interface)
UI의 종류로 멀티 터치(Multi-touch), 동작 인식(Gesture Recognition) 등 사용자의 자연스로운 움직임을 인식하여 서로 주고받는 정보를 제공하는 사용자 인터페이스
사용자 인터페이스의 종류
- CLI(Command-Line Interface) : 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
- GUI(Graphical User Interface) : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
- NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
- VUI(Voice User Interface) : 사람의 음성으로 기기를 조작하는 인터페이스
- OUI(Organic User Interface) : 모든 사물과 사용자 간의 상호작용을 위한 인터페이스
🤍Module
모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용
❤️아키텍처 패턴
- 레이어 패턴(Layers pattern) : 시스템을 계층(Layer)으로 구분하여 구성하는 고전적인 방법 중의 하나로 각각의 서브시스템들이 계층 구조를 이루며, 하위 계층은 상위계층에 대한 서비스 제공자가 되고, 상위 계층의 클라이언트가 됨
- 클라이언트-서버 패턴(Client-Server Pattern) : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴으로, 클라이언트가 서버에 요청하고 응답을 받아 사용자에게 제공하는 방식
- 파이프-필터 패턴(Pipe-Filter Pattern) : 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴, 서브시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브시스템으로 넘겨주는 과정을 반복한다.
- 모델-뷰-컨트롤러(Model-View-Controller Pattern) : 서브시스템을 모델, 뷰, 컨트롤러의 세 부분으로 구조화하는 패턴
🧡객체(Object)
객체지향의 주요 구성 요소 중 데이터와 데이터를 처리하는 메소드(함수)를 묶어 놓은 하나의 소프트웨어 모듈
Class : 공통된 속성과 연산(행위)을 갖는 객체의 집합으로, 객체의 일반적인 타입
💛럼바우(Rumbaugh) 객체지향 분석 절차
- 객체 모델링 -> 동적 모델링 -> 기능모델링
럼바우의 분석 기법
- 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법으로, 객체 모델링 기법(OMT)이라고도 한다.
💚결합도(Coupling) : 두 모듈간의 상호작용, 또는 의존도 정도를 나타내는 것
- 자료 결합도(Data Coupling) : 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도이다.
- 내용 결합도(Content Coupling) : 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.
- 공통 결합도(Common Coupling) : 두 모듈이 동일한 전역 데이터를 접근한다면 공통 결합되어 있다고 한다.
- 스탬프(검인) 결합도(Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
- 제어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어요소(Function Code, Switch, Tag)를 전달하는 결합도
- 외부 결합도(External Coupling) : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
💙순차 코드(Sequence Code)
자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법으로, 순서 코드 또는 일련번호 코드라고 함
ex) 1, 2, 3, 4 ....
코드(Code)
- 순차 코드(Sequence Code)
- 블록 코드(Block Code)
코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법으로, 구분 코드라고도 함
ex) 1001~1100 총부부, 1101~1200 영업부
- 10진 코드(Decimal Code)
코드화 대상 항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 방법으로, 도서 분류식 코드라고도 함
ex) 1000 공학, 1100 소프트웨어 공학, 1110 소프트웨어 설계
- 그룹 분류 코드(Group Classification Code)
코드화 대상 항목을 일정 기준에 따라 대분류, 중분류, 소분류 등으로 구분하고, 각 그룹 안에서 일련번호를 부여하는 방법
ex) 1-01-001 본사-총무부-인사계, 2-01-001 지사-총무부-인사계
- 연상 코드(Mnemonic Code)
코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법
ex)TV-40 40인치 TV, L-15-220 15W 220V의 램프
- 표의 숫자 코드(Significant Digit Code)
코드화 대상 항목의 성질, 즉 길이, 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용 시키는 방법으로, 유효 숫자 코드라고도 함
ex) 120-720-1500 두께x폭x길이가 120x720x1500인 강판
- 합성 코드(Combined Code)
필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개 이상의 코드를 조합하여 만드는 방법
ex) KE-711 대한항공 711기, AC-253 에어캐나다 253기
💜Factory Method 패턴
- 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정하도록 하는 것
- Virtual-Constructor 패턴이라고도 함
디자인 패턴
방문자 패턴 (Visitor) : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
옵서버 패턴 (Observer) 행위패턴 : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
브리지 패턴 (Bridge) : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
🤎디자인 패턴의 종류
- 생성 패턴(Creational Pattern)
-추상팩토리(Abstract Factory)
-빌더(Builder)
-팩토리 메소드(Factory Method)
-프로토타입(Prototype)
-싱글톤(Singleton)
- 구조 패턴(Structural Pattern)
-어댑터(Adapter)
-브리지(Bridge)
-컴포지트(Composite)
-데코레이터(Decorator)
-퍼싸드(Facade)
-플라이웨이트(Flyweight)
-프록시(Proxy)
- 행위 패턴(Behavioral Pateern)
-옵서버(Observer)
-커맨드(Command)
-책임 연쇄(Chain of Responsi-Bility)
-인터프리터(Interpreter)
-반복자(Iterator)
-중재자(Mediator)
-메멘토(Menento)
-상태(State)
-전략(Strategy)
-템플릿 메소드(Template Method)
-방문자(Visitor)
🖤미들웨어(MiddleWare)
- DB는 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어이다.
- WAS(Web Application Server)는 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어이다.
- MOM(Message Oriented Middleware)은 메세지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어이다.
- RPC(Remote Procedure Call)는 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어이다.
🤍CASE(Computer Aided Software Engineering) 장점
- 자동화된 기법을 통해 소프트웨어 품질이 향상된다.
- 소프트웨어의 유지보수를 간편하게 수행할 수 있다.
- 소프트웨어의 생산성이 향상된다.
- 소프트웨어 모듈의 재사용성이 향상된다.
CASE
소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
-객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화 도구(CASE Tool)이다.
-소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합하여 소프트웨어를 개발하는 환경을 조성한다.
-소프트웨어 생명주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해 주는 기술이다.
-소프트웨어 개발 도구와 방법론이 결합된 것으로, 정형화된 구조 및 방법(메커니즘)을 소프트웨어 개발에 적용하여 생산성 향상을 구현하는 공학 기법
-소프트웨어 개발의 모든 단계에 걸쳐 일관된 방법론을 제공하는 자동화 도구들을 지원하고, 개발자들은 이 도구를 사용하여 소프트웨어 개발의 표준화를 지향하며, 자동화의 이점을 얻을 수 있게 해준다.
CASE의 주요기능
-소프트웨어 생명주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원 등
❤️자료 사전(Data Dictionary)
- 메타 데이터(Meta Data)
- 모든 데이터 개체들에 대한 정보를 유지, 관리하는 시스템
- 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있다.
- 자료 사전에 대한 갱신은 데이터베이스의 무결성 유지를 위해 DBMS가 스스로 생성하고 유지한다. 이용자는 갱신 불가
