프로그램의 설계시에 어떤 것을 고려해야 할까?


 

설계 과정에서 작성하는 문서는 요구사항 정의서, 스토리보드 등이 있다. 이 문서에서 다루는 내용들은 주로 무엇(데이터)을 어떻게(알고리즘, 기능), 누구(사용자)에게 보여줄 것인가에 대한 내용이다. 즉, 우리가 고려할 사항은 데이터를 제공하는 서비스를 사용하는 사람과 데이터, 알고리즘과 같은 기능들이다.

 

설계시에 알고리즘이 중요한 이유는 무엇일까

알고리즘은 일련의 명령어이다. 쉽게 말해 어떠한 요청에 따른 응답을 나타내기 위한 방법이라고 생각할 수 있다. 스포티파이라는 음악 추천어플을 생각해보자. 스포티파이는 어떤 음악이 이용 고객에게 추천 음악을 알려주고 고객의 음악 취향을 분석한다. 이런 서비스를 제공하는 과정을 가능하게 하는 것이 바로 알고리즘이다.

 

어떤 알고리즘을 쓰느냐는 서비스의 질과 속도를 결정한다. 적합한 알고리즘을 사용하는 것은 모든 데이터를 분석하지 않고도 요청값을 보여주게 하기 때문이다. 즉, 알고리즘에 따라 사용자 수와 타겟층이 달라질 수 있다. 그리고 이는 기업의 이윤으로 직결된다. 아직도 구글을 검색 알고리즘 최적화와 개선을 위해 노력하는 이유이다. 

 

알고리즘을 계속 발전시키는 이유

프로그램에서 알고리즘의 중요성은 살펴보았다. 설계 이후에도 여러가지 테스트를 통해 향상된 알고리즘을 사용하기 위해 기업들을 노력하고 있다. 그 이유는 사용된 알고리즘이 설계 시점의 최적화 기능을 나타내지 못할 수도 있기 때문이고, 더 나은 알고리즘이 있을 수도 있기 때문이다.

 

구글의 검색 알고리즘을 예로 들어보자. 구글의 검색 알고리즘의 핵심은 검색어와 연관된 정확성 있는 웹페이지들을 빠르게 보여주는데에 있다. 정확도 측정을 그 웹페이지를 링크로 연결하는 웹페이지가 많을수록 정확한 페이지라고 생각하고 알고리즘을 만든다고 가정하자. 그 때의 정확도는 무의미하게 여러 링크들을 나열한 페이지들이 많아지면 낮아질 것이다. 그렇다면, 이런 페이지를 거를 수 있는 알고리즘으로 개선해야 한다.

'CS' 카테고리의 다른 글

쿠키 Cookie와 세션 Session  (0) 2022.03.03
TDD와 단위테스트  (0) 2021.11.24
블록체인과 장단점  (0) 2021.11.04
기타 상식  (0) 2021.10.25
백엔드 로드맵으로 정리해보는 CS기초 [1-1] Internet  (0) 2021.10.23
댓글