소프트웨어 개발 방법 및 도구(3), Design by Figures

2022. 8. 19. 18:49강의 내용 정리/소프트웨어 개발 방법 및 도구

728x90
반응형

본 포스팅은 경희대학교 소프트웨어 융합학과 교수님이신 이성원 교수님의 강의 영상을 토대로 작성합니다. 실제 수업 시간에 진행하시는 강의 영상을 유튜브에 올리셔서 모두가 볼 수 있도록 하셨습니다. 아직 학부생이기에 수강신청을 통해 수업을 들을 수 있지만 들을 수 있는 학점이 제한되어 방학 중에 유튜브로 시청하고, 강의 내용을 본 포스팅을 통해 정리하고자 합니다.

 

Design Approach 파트는 소프트웨어 공학에서 진행한 강의 내용과 동일하기에 넘어갔습니다.

 

2022.04.25 - [강의 내용 정리/소프트웨어 공학] - 소프트웨어 공학 (8), Architectural Design

 

소프트웨어 공학 (8), Architectural Design

Architectural Design 1. Architectural Design 앞서 정의한 시스템을 큰 틀에서 디자인 하는 것 0) 개요 - 성취하고자 하는 기능과 성능을 비롯해 보안, 신뢰성, 유지보수 가능성 등의 비기술적인 부분에 대

konghana01.tistory.com


Design by Figures

소프트웨어를 설계할 때 글보단 그림으로 표현하는 것이 효과적일 때가 있다.

 


 

1. Figures

1) 자료구조 (Structure of Data)

- 그림을 통해 자료구조를 나타내기에 묵시적으로 그림을 보고도 알 수 있다.

- 현실 세계에 있는 정보를 컴퓨터에 집어넣을 때 입출력/처리에 대한 처리 및 조직화를 그림으로 표현할 수 있다.

- 어떤 데이터를 어떻게 표현하는 것이 좋은지에 대해 알려준다.

- 정형화된 형태의 모양과 동작을 정의할 수 있다.

- ADT를 통해 추상적이지만 일반화가 가능한 것들에 대해 표현이 가능하다. -> 특정 분야에 한정된 것이 아닌 여러 분야에서 두루두루 사용할 수 있기에 추상화/일반화라고 얘기할 수 있다.


2) Multiple-Byte is not an Easy Work

(1) Big-endian

(2) Littel-endian

- CPU가 데이터를 저장하는 방식이 다를 경우 혼선이 일어날 수 있다. 따라서 꼼꼼하게 내용을 찾아야 저장 방식에 대해 혼선을 방지할 수 있다.


3) Algorithm

- 입력데이터를 가공해서 어떻게 출력 데이터로 처리할 것인지

- 데이터를 처리하는 모든 분야를 통틀어서 얘기한다.

- 이를 표현하기 위해 flow-chart, Pseudo-code로 표현하곤 한다.

- 설계 단계에선 언어를 특정하지 않을 수도 있다. 이때 설계 시에 구현에 대해 특정하지 않을수도 있다. 이떄 그림을 그려 사용하는 것이 유리하다.

- 최근에 나온 언어들은 자료구조나 알고리즘이 빌트인되어있는 경우가 많다.

 

(1) Flow Chart

- 특허나 지적 자산권관련 문서를 작성할 때 Flow chart를 작성하는 경우가 많다.

 

(2) Pseudo-code

- 간결한 영어 문장을 작성해서 코드처럼 보이도록 작성해 아웃풋을 끌어내기 위해 어떤 과정을 작성해야하는지 나타낸다.

- 입출력 프로세스를 반복문/조건문, 영어단어/수학기호 등으로 표현한다. 

- 프로그래밍 언어를 사용하진 않다. 

- 주석으로 슈도 코드를 작성하고, 실제 구현을 하면 실수가 줄어들기에 추천한다.

 


4) Database

(1) Relational model

- 표로 묘사하여 데이터를 저장하고 그들간의 관계를 묘사하는 것을 의미한다.

- 표 형태로 정형화되어있다.

- 테이블, 쿼리, 리포트, 뷰 등등이 예시이다.

- sql도 자주 사용한다.

 

 

(2) Entity-relationship model

- 테이블보단 엔터티를 기준으로 데이터베이스 모델이 등장한다.

- 객체지향 프로그래밍에서 강조하는 is relationship, has relationship과 비슷하다.

- 사람은 여러개의 계좌를 가질 수 있고, 각 엔터티가 존재하고 그들간의 관계가 있다.

- 사람은 지역을 contain할 수 있다.

 

 

(3) Object oriented model

- 객체지향 프로그래밍과 비슷한 컨셉이지만 특별히 인기를 끌지는 않았다.

 


5) NoSQL DB

- 실제 세상의 데이터는 테이블 형태이기보단 구조화되어있지 않은 비정형 데이터인 경우가 많다. 이를 NoSQL로 만드는 경우가 많다.

- 은행/회사는 RDB를 많이 쓰지만 사람이 사용하는 데이터를 처리할 때는 NoSQL을 많이 사용한다.

 

- SQL과 NoSQL의 차이점을 확연하게 알 수 있다.

- SQL은 무료/유료 어플리케이션이 많고, NoSQL은 점차 확산중이다.


6) Computer Network Diagram

- 다양한 기기들이 유무선 통신을 하기에 그림을 통해 장치를 표현한다.


7) Blcok Diagram

- 다양한 것들은 블럭 단위로 표현할 수 있다.

ex) 운영체제에는 어떤 것들이 있는지, 그 내부에는 어떤 것들이 있는지 등등을 그려서 이해하고 사용할 수 있다.


8) Message sequence chart

- 블럭들끼리, 통신장치들끼리 서로 통신하는 것을 그림으로 그려 표현할 수 있다.

 

6~8은 컴퓨터 네트워크 포스팅 자료를 보면 확인할 수 있다.

2022.04.14 - [강의 내용 정리/컴퓨터 네트워크] - 컴퓨터 네트워크(2-2), MAC Layer

 

컴퓨터 네트워크(2-2), MAC Layer

MAC Layer 줄이 연결되었을 때 스테이션과 통신을 하기 위해서 어떻게 접근하는가를 중점적으로 파악 방식 1. Random Access Protocols 알아서 독립적으로 분산해 스테이션에 접근하는 프로토콜 - 규칙에

konghana01.tistory.com


9) 상태 천이도

- 소프트웨어는 여러 상태를 가지고 있어 이벤트에 따라 어떤 상태와 결과가 나오는지 표현한 그림이다.

 

이 또한 다양한 강의 포스팅을 통해 확인할 수 있다. ex) 논리회로, 이산구조, 컴퓨터 구조 등등


2. 그림을 그리는 이유

1) 타인과의 커뮤니케이션을 위해

 

2) 특허를 내기 위해

 

- flow chart가 매우 중요하다.

3) 디자인 문서를 그림으로 남기기 위해


3. 그림을 그릴 수 있도록 도와주는 도구

1) Microsoft visio (Windows)

 

2) LibreOffice Draw (Linux/MaxOS/Windows)

 

3) Dia Diagram Editor (Windows)

 

4) Draw.io (Web based)

 

 


출처

 

https://www.youtube.com/watch?v=wDVMjiy6Cu0&list=PLz7S5PHCu4OniCxtW6jOOQEJEXX7PAUlA&index=5 

 

728x90
반응형