휼륭한 프로그래머는 대형 컴퓨터 프로그램들을 매우 복잡하게 상호 작용하는 부품들로 구성된 시스템으로 생각한다.
이러한 거대한 컴퓨터 시스템(프로그램)을 설계하고 구현하기 위해서는 아래 3가지가 필수적으로 필요하다.
1. 자료 추상화 - 여러 자료형을 하나로 묶어 단순화(추상화) 하는 것
2. 알고리즘 명세
3. 성능 분석과 측정
그리고 위와 같은 프로그램들은 시스템 생명 주기(system life cycle)라고 하는 개발 단계를 거친다.
(1) 요구사항 (requirement)
프로그래머에게 주어진 자료 입려과 프로그래머가 생성해내야 하는 결과(출력)에 관한 정보를 기술한다. 종종 이 초기 명세가 모호하게 정의되는데, 모든 경우에 대한 입력과 출력의 기술은 정밀하게 작성되어야 한다.
(2) 분석 (analysis)
문제들을 실제 다룰 수 있을 정도의 작은 단위들로 나눈다. 여기서는 상향식과 하향식 접근 방법으로 나눌 수 있다.
- 상향식 : 코딩에 주안점을 둔 비구조적 방법. 프로그래머는 프로젝트에 대한 기본 계획을 갖고 있지 못하기 때문에, 결과 프로그램이 연관성이 떨어지거나 오류를 가지는 경우가 많았다.
- 하향식 : 최종 결과 프로그램을 우리가 다룰 수 있을 정도의 프로그램 단위로 분리한다는 의도로부터 시작되었다.
(3) 설계 (design)
설계자는 프로그램이 필요로 하는 자료 객체들과 이들 위에서 수행될 연산들의 관점에서 시스템에 접근한다. 이 때 추상 데이터 타입, 알고리즘 명세와 그 알고리즘 설계 기법의 고려가 요구된다. 개개 자료 객체가 요구하는 정보를 명세해야 하는 것은 당연하지만 코딩의 세부 사항들을 무시하기로 한다. 즉 구현에 관한 사항을 가능한 뒤로 미루는 것이다. 여기서 구현에는 배열, 연결 리스트 또는 트리등 여러 가지 방법이 있을 수 있다. 즉 이러한 구현을 최대한 뒤로 미룸으로써 여러 가지 언어로 시스템을 구현할 수 있게 할 수 있을 뿐만 아니라, 선택한 언어의 범주 내에서 가장 효과적인 구현을 선택할 수 있게 된다.
(4) 정제(refinement)와 코딩(coding)
자료 객체에 대한 표현을 선택하고 그들 위에 수행되는 연산에 대한 알고리즘을 작성한다. 앞에 말한 자료 객체 표현을 선택하고 알고리즘을 작성하는 순서가 매우 중요한데, 그 이유는 자료 객체의 표현 방법이 그와 연관된 알고리즘의 효율성을 결정하기 때문이다.
(5) 검증 (verification)
프로그램의 정확성 증명, 다양한 입력 데이터를 이용한 프로그램의 테스트 그리고 오류 제거로 구성된다.
'방구석 컴퓨터 > 방구석 잡지식' 카테고리의 다른 글
Base64와 Base64URL 차이 (0) | 2023.12.07 |
---|---|
SSMS(SQL Server Management Studio) "Invaild object name" 에러 해결 (0) | 2023.08.12 |
시간복잡도(Big-O notation) (0) | 2021.01.14 |
데이터 추상화 (0) | 2021.01.14 |