CS 스터디 28 챕터

냐로·2022년 8월 5일
0

cs 스터디

목록 보기
3/3

프로젝트

프로그래밍은 대규모로 이루어지는 경향이 있다.

사진 출처 : https://blog.naver.com/seonsin25/222219681964

  1. 무엇을 해야 할지 파악
  2. 넓은 명세부터 시작해서 작은 부분으로 적절히 나눔
  3. 각 부분을 작업하면서 전체적으로 일관되어 있는지 확인

프로그래밍 작업 하나의 크기 : 보통 한 사람이 프로그래밍 언어로 정확한 처리 단계를 작성할 수 있는 정도.

회사 측에서는 프로그램의 규모를 밝히는 데 대체로 조심스럽지만, 믿을 만한 정보를 가끔 밝히는 편.

구글 : 2015년 1월 기준으로 파일 수는 10억 개, 소스 파일은 900만 개, 코드는 20억 줄 등으로 이뤄져 있으며 용량은 86TB라는 것이다. 1일 커밋 횟수는 4만 5,000회이며 누적 커밋 수는 2000년부터 시작해 2012년 1,000만 회를 넘어섰고 계속 늘어나 2015년 1월 시점 기준으로는 3,500만 회까지 늘어났다.
http://www.techholic.co.kr/news/articleView.html?idxno=40674#rs

프로젝트를 진행하는 도중 다른 프로그래머들이 작성한 부분들이 함께 잘 작동하는지 확인하는 일은 어려운데, 이걸 바로잡지 못하면 에러가 발생할 소지가 큼. 위와 같은 규모의 소프트웨어를 개발하려면 프로그래머, 테스트 담당자, 문서 작성자로 이루어진 팀이 여럿 필요함.

라이브러리, 인터페이스, 개발 키트

어떤 중요한 프로그램도 완전히 처음부터 새로 만들어지지 않음.
다른 사람들이 만들어 놓은 여러 가지 구성 요소를 구매해서 사용할 수 있음.

윈도우나 맥OS용 프로그램을 작성하려고 한다면 사전에 제작된 메뉴 버튼, 그래픽 연산, 네트워크 연결, 데이터 베이스 접근 등에 필요한 코드를 구함.

프로그래밍 작업의 대부분은 이미 있는 구성 요소를 이해하고 자신만의 방식으로 이어 붙이는 것.

라이브러리
2021년 React 최고의 라이브러리 Top 17

함수 : 가장 단순한 프로그래밍 언어. 메커니즘을 제공.
함수 메커니즘 : 프로그래머가 그 내부 작동 방식을 모르더라도 프로그램에서 사용할 수 있는 형태. 코드를 패키지화 할 수 있게 해줌.

라이브러리 : 함수를 이용하면 따로 만들어진 구성 요소를 필요에 따라 적절하게 조합하여 프로그램을 만들 수 있다. 연관된 함수들의 모음을 뜻함. 함수 라이브러리가 제공하는 서비스는 API가 제공된다.

API (애플리케이션 프로그래밍 인터페이스) : API는 포함하는 함수와 더불어 함수의 용도가 무엇인지 / 함수를 어떻게 사용해야 하는지 / 어떤 입력 데이터를 요구하는지 / 어떤 값을 만들어 내는지 나열한다.
또한 API는 시스템 내부에서 주고받는 데이터의 구조를 의미하는 자료 구조와 기타 세부 사항도 기술할 수 있음. API는 구문과 관련된 기본 명세뿐만 아니라 시스템을 효과적으로 사용하도록 돕는 지원 문서도 포함한다.

SDK(소프트웨어 개발 키트) : 요즘 대규모 시스템은 프로그래머들이 복잡한 소프트웨어 라이브러리를 잘 다룰 수 있도록 SDK를 제공.

  • 애플 : 아이폰과 아이패드 코드를 작성하는 개발자를 위해 개발 환경과 지원 도구를 제공.
  • 마이크로 소프트 : 윈도우 코드를 여러가지 장치에 대해 다양한 언어로 작성할 수 있는 폭 넓은 개발 환경을 제공

버그

버그 : 프로그램에는 크든 작든 결함이 있다. 컴퓨터는 명령하지 않은 일을 하거나, 잘못된 답을 내놓기도 하는 걸 뜻함.

뜻의 유래 : 그레이스 호퍼가 만듦. / 작업 중인 컴퓨터 하버드 마크 2에서 말 그대로 벌레 시체가 발견 됐고, 동료들은 이를 보고 디버깅하고 있다고 이야기 한 사례가 있음. (유력한 설)

버그는 다양한 방식으로 발생함.

  • 발생할 수 있는 경우를 깜빡하고 처리를 하지 못함.
  • 어떤 조건을 평가하기 위한 논리 테스트나 산술 테스트를 잘못 작성함.
  • 잘못된 공식을 사용함.
  • 특정 종류의 데이터에 잘못된 연산을 적용함.
  • 사용자 입력이 적합한지 검사를 하지 못함.

테스트 : 소프트웨어가 출시 되기 전, 가능한 많은 버그를 발견하기 위해 테스트 코드, 테스터를 둠. 버그를 완전히 없애는 건 어렵겠지만 적어도 드물게 발생하도록 만들 수 있음.

버그는 시스템을 공격에 취약하게 만들기도 하는데,업데이트가 잦다는 것은 그만큼 취약점이 널리 퍼져 있다는 것을 뜻함.
웹 브라우저처럼 많은 해커들의 이목이 집중되어 있는 중요한 프로그램이 주로 그렇다.

기술의 변화에 뒤쳐지지 않고 따라가는 것은 소프트웨어 유지 보수에서 매우 중요함. 그렇지 않으면 '비트 부식'을 겪게 되어 추후 재컴파일이 불가능해지거나 몇몇 라이브러리가 너무 많이 바뀌어 더 이상 작동하지 않거나
업데이트할 수 없는 상태가 되어 버림.

정반대로 프로그램의 문제를 해결하려는 시도나 새 기능을 추가하려는 시도가 의도치 않게 새 버그를 만들어낼 수도 있음.

0개의 댓글