Software Design (소프트웨어 설계) keywords 1

MisCaminos·2021년 4월 16일
0

Basic-IT-Knowledge

목록 보기
1/2
post-thumbnail

Topic: Software Design

Techniques

socket 기술: 통신을 위한 프로그램을 생성하여 port를 할당하고 client의 통신 요청시, client와 연결하는 내/외부 송/수신 연계 기술

DB link기술: internet web script 언어와 database를 연결하는 기술 (e.g., ODBC, JDBC)

scrum technique(스크럼 기술): method for managing projects for rapid development and testing esp wthin a small team. Agile 방법론 중의 하나로 project 관리를 위한 상호 점진적 개발 방법론임. (매일 정해진 시간, 정해진 장소에서 단기간에 개발하는 개발팀을 위한 프로젝트 관리 중심의 방법론)

prototype 기술: prototyping을 통해 사용성을 검증받아가며 개발하는 기법 (시스템 개발 초기에 사용자(고객)의 요구 기능을 시제품으로 만들어서 사용자로부터 사용성을 검증받아가면서 시스템을 개발하는 기법)

open hubware(오픈허브웨어): 많은 사용자들이 판매, 구매, 유통 등의 서비스를 지원받을 수 있도록 지원하는 개방형 고프트웨어이다. 온라인 쇼핑, 택배회사 등에서 사용하는 소프트웨어.

Grayware(그레이웨어): 악성 프로그램과는 다르게 사용자의 동의를 얻어 설치되며, 컴퓨터에 직접적인 위협은 가하지 않는다. 사용자 입장에서는 불편을 야기하는 악성 프로그램일 수 있지만 유용한 소프트웨어일 수 있다.

Agile software 개발 기법의 가치:
-프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
-계약 협상보다는 고객과의 협업에 더 가치를 둔다
-계획을 따르기보다는 변화에 대응하는 것에 더 가치를 둔다.

Agile 방법론 선언문: 유동적임 & 빠름 & 고객과의 협력 중심
-개인과 상호 작용을 프로세스와 도구보다 중시한다.
-동작하는 소프트웨어를 포괄적인 문서보다 중시한다.
-고객과의 협력을 계약의 협상보다 중시한다.
-변화의 대응을 계획의 수행보다 중시한다.

UML

UML(Unified Modeling Language):
-기능적 모델은 사용자 측면에서 본 시스템 기능이며, UML에서는 Use Case Diagram을 사용한다

Class Diagram이란?:
-UML diagram중 시스템 내 클래스의 정적 구조를 표현하고 클래스와 크래스의 속성 사이의 관계를 나타내는 것
-정적 모델은 객체, 속성, 연관 관계, 오퍼레이션의 시스템 구조를 나타내며, UML에서는 Class Diagram을 사용한다.

Activity Diagram이란?:
-객체의 동적 행위를 활동으로 표현한다.
-동적 모델은 시스템의 내부 동작을 말하며, UML에서는 Sequence Diagram, State Diagram, Activity Diagram을 사용한다.

State Diagram: 하나의 객체가 가진 상태와 그 상태의 변화에 의한 동작순서를 나타낸다.

-Sequence Diagram은 객체들 사이의 메시지 교환을 나타내며, State Diagram은 하나의 객체가 가진 상태와 그 상태의 변화에 의한 동작 순서를 나타낸다.

Use Case:
-Association(연관): use case와 actor의 관계 표현
-Include(포함): 하나의 use case를 수행하기 위해서 다른 use case가 선행되어야 하는 관계 표현
-Extend(확장): 기본 use case 수행 시 특별한 조건을 만족할때 수행하는 use case
-Generalization(일반화): 한 use case가 다른 use case를 상속한 관계 표현
-Grouping(그룹화): 여러 개의 use case를 조직화하는 관계 표시

OOP (Object-Oriented Programming)

Message(메시지): 객체와 객체들 사이의 인터페이스 형식

Encapsulation(캡슐화): 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정

Polymorphism(다형성): 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질

Inheritance(상속): 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용 or 확장하는 특성

객체지향 분석 방법론 중,
Coad-Yourdon 방법: E-R Diagram을 사용하여 객체릐 행위를 데이터 모델링하는 데 초점을 둔 방법

Rumbaugh Method(럼바우): 객체, 동적, 기능 모델로 나누어 수행하는 방법
-Object(객체) modeling: 시스템에서 요구되는 객체를 찾아내어서 객체의 속성과 연산 식별 및 객체들 간의 관계를 규정하여 diagram으로 표시한다. (럼바우 분석 기법에서 정보 모델링이라고도 함)
-Dynamic(동적) modeling: 객체 모형들의 행위, 상태, 조건을 파악
-Functional(기능) modeling: 입출력 결정, 자료 흐름도(DFD) 작성

Booch Method: 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법

Jacobson Method: Use Case를 강조하여 사용하는 방법

객체지향 분석: software를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법

구조적 분석: DFD, DD, Mini-Spec 사용

기능적 분석: 서비스 기능 위주 분석

실시간 분석: 통신의 송수신 데이터 분석

Design Patterns

Design pattern: 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해놓은것. software개발에서 효율성 & 재사용성 향상시킬수있다.

Design pattern을 이용한 software 재사용은 개발자들 간의 의사소통 더 원활하게 만들어서 sortware 코드의 품질과 생산성 향상이 가능하다.

Design pattern을 이용한 software 재사용은 개발 프로세스의 신뢰성을 향상시킬수있다.

GoF(Gang of Four) design pattern:
-creational pattern(생성패턴): 5가지 - Abstract Factory, Factory Method, Builder, Prototype, Singleton
-structual pattern(구조패턴): 7가지 - Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
-behavior pattern(행위패턴): 11가지 - Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor

바람직한 software 설계 지침:
1. 모듈의 기능을 예측할 수 있도록 정의
2. 이식성을 고려하기
3. 적당한 모듈의 크기를 유지하기
4. 모듈의 결합도는 최소화, 응집도는 최대화

하향식 설계: software 설계시, 제일 상위에 있는 Main User Function에서 시작하여 기능을 하위 기능들로 분할해 가면서 설계하는 방식

상향식 설계: 하위 기능들을 묶어서 제일 상위에 있는 Main User Function으로 설계하는 방식

객체지향 설계: 시스템을 구성하는 클래스와 속성, 연산을 인식하여 클래스를 객체로, 속성을 자료 구조로, 연산을 알고리즘으로 표현하는 것.

데이터 흐름 설계: 기능을 설계할 때 입력 데이터와 출력 데이터의 흐름을 파악하여 설계하는 방식이다.

design pattern을 이용한 software 재사용으로 얻어지는 장점:
-software 코드의 품질 향상
-개발자들 사이의 의사소통 원활하게
-software의 품질 & 생산성 향상

Middlewares

미들웨어(Middleware): 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신환경 등을 연결하여 응용 프로그램과 운영환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어

WAS(Web Application Server): client/server 환경보다는 웹 환경을 구현하기 위한 미들웨어

MOM(Message Oriented Middleware): 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어로 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용됨.

ORB(Object Request Broker): 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어

RPC(Remote Procedure Call): 응용 프로그램의 procedure를 사용하여 원격 procedure를 로컬 procedure처럼 호출하는 방식의 미들웨어

Program Structure

모듈A의 fan-in 수: 해당 모듈의 상위 모듈의 수
모듈A의 fan-out 수: 해당 모듈의 하위 모듈의 수

System Analysis(시스템 분석)

현행 시스템 분석에서 고려해야하는 항목:
1. DBMS 분석
2. network 분석
3. 운영체제 분석

인적 자원 분석 및 개발팀 구성은 현행 시스템 분석에서 하지않으며, 소프트웨어 개발 계획 단계에서 한다.

Linux/Unix

Linux(sort-of-descendent if Unix)
-designed to behave similarly to a Unix system. most of the old shells and other text-based programs run on it

Linux 명령어:(case sensitive)
-cd: change directory
-ls: list contents in the directory
-mv: move files
-cat: 파일의의 내용을 화면에 출력 (also can be used to concatenate filenames)
-pwd: print working directory 현재의 디렉토리를 출력
-uname: unix/linux 버젼 확인
-root: superuser(관리자) or the "/" directory(root directory)
-cd ..: 상위 디렉토리로 변경 (can be used multiple times to move up multple levels of parent directories)
-mkdir: make directory

CASE

CASE(Computer Aided Software Engineering): software 개발을 지원하는 도구로 software개발자들을 지원한다. (software사용자들을 위해 사용하는 도구가 아님)
-software module의 재사용성 향상
-자동화된 기법을 통해 software 품질 향상
-software 유지보수를 간편하게 수행할 수 있다

Modeling

Agile(애자일) 방법: 사용자의 요구사항이 빈번하게 변경되는 문제점을 극복하기 위한 방법이다.
UML 모델링: 요구분석, 설계, 구현 등의 software개발 과정에서, 개발자 간의 의사 소통을 원활하게 이루어지게 하기위하여 표준화한 모델링 언어이다. 그래서 UML diagram 모두가 요구사항 모델링에 활용되는 도구이다. (단계 다이어그램(phase diagram)은 UML diagram에 존재하지 않는다)

profile
Learning to code and analyze data

0개의 댓글