2022. 8. 19. 18:49ㆍ강의 내용 정리/소프트웨어 개발 방법 및 도구
본 포스팅은 경희대학교 소프트웨어 융합학과 교수님이신 이성원 교수님의 강의 영상을 토대로 작성합니다. 실제 수업 시간에 진행하시는 강의 영상을 유튜브에 올리셔서 모두가 볼 수 있도록 하셨습니다. 아직 학부생이기에 수강신청을 통해 수업을 들을 수 있지만 들을 수 있는 학점이 제한되어 방학 중에 유튜브로 시청하고, 강의 내용을 본 포스팅을 통해 정리하고자 합니다.
Design Approach 파트는 소프트웨어 공학에서 진행한 강의 내용과 동일하기에 넘어갔습니다.
2022.04.25 - [강의 내용 정리/소프트웨어 공학] - 소프트웨어 공학 (8), Architectural Design
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
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
'강의 내용 정리 > 소프트웨어 개발 방법 및 도구' 카테고리의 다른 글
소프트웨어 개발 방법 및 도구(6), Online Cowork Tools (0) | 2022.11.16 |
---|---|
소프트웨어 개발 방법 및 도구(5), Software Maintenance (0) | 2022.09.16 |
소프트웨어 개발 방법 및 도구(4), Selecting Right Operating System (0) | 2022.08.22 |
소프트웨어 개발 방법 및 도구(2), Selecting Right Language and Development Environments (0) | 2022.08.17 |
소프트웨어 개발 방법 및 도구(1), Problem Definition (0) | 2022.07.28 |