프로그래밍 언어의 요구사항과 설계 원칙
프로그래밍 언어의 요구사항
소프트웨어 개발 및 유지보수 측면에서 프로그래밍 언어는 어떤 요구사항을 만족해야 할까?
먼저 프로그래밍 언어는 프로그래머가 자신의 아이디어를 쉽게 표현할 수 있게 해야한다. 또한 작성된 프로그램은 쉽게 유지보수 할 수 있어야 하며, 컴퓨터에서 빠르게 실행될 수 있어야 한다.
(1) 표현 풍부성(expressiveness): 프로그래머의 아이디어를 쉽게 표현할 수 있다.
(2) 유지 보수성(maintainability): 작성된 프로그램은 쉽게 유지보수할 수 있다.
(3) 실행 가능성(executability): 작성된 프로그램이 빠르게 실행될 수 있다.
프로그래밍 언어의 설계 원칙
그리고 이러한 기능과 요구사항을 만족하기 위해 고려해야하는 설계 원칙 중 공통적으로 거론되는 것은 다음과 같다.
(1) 규칙성(regularity): 언어의 기능이 잘 조합될 수 있다.
(2) 추상화 지원(support of abstraction): 실세계의 대상을 간략히 추상화하여 나타낼 수 있다.
(3) 복잡도 제어(complexity control): 복잡한 대상 및 처리 방법을 제어하기 위해 복잡도를 제어할 수 있다.
규칙성
규칙성이란 언어의 기능이 얼마나 잘 조합될 수 있느냐 하는 문제로서 세부적으로는 프로그래밍 언어 평가기준 중 일반성(generality), 직교성(orhogonality), 일관성(uniformity)에 의해 지원된다.
일반성이란 연관된 기능이 더 일반적인 형태로 확장될 수 있는 특성이다. 예를 들어, C언어의 비교 연산자는 두 정수를 비교하는데는 사용할 수 있지만 구조체를 비교하는데는 사용할 수 없다. 이는 일반성이 결여된 것으로 볼 수 있다.
추상화 지원
프로그래밍 언어는 실세계를 모형화하여 문제를 해결해야 하기 때문에 실세계의 대상을 간략히 추상화하여 나타낼 수 있는 기능을 제공해야 한다. 또한 추상화된 모형을 대상으로 어떤 연산을 수행할 수 있도록 해야 한다. 물론 연산도 추상화된 형태로 수행할 수 있어야 한다.
일반적으로 프로그래밍 언어에서는 데이터 추상화 기능과 제어 추상화 기능, 추상 데이터 타입을 정의할 수 있는 기능을 제공한다.
복잡도 제어
실세계의 문제를 해결하는 방법은 매우 복잡해지는 경우가 많다. 따라서 복잡한 대상 및 처리 방법을 제어하기 위해 복잡도를 제어할 수 있어야 한다. 일반적으로 프로그래밍 언어에서는 복잡도를 제어하기 위해 모듈, 패키지, 이름 공간 등을 통하여 캡슐화 및 모듈화 기능을 제공한다.
마지막으로 이러한 프로그래밍 언어의 설계 원칙과 요구사항간의 관계를 도식으로 표현하면 다음과 같다.
'기타 정보 > 소프트웨어 공학' 카테고리의 다른 글
[자료구조] 배열 - 정리 및 연습문제 (0) | 2021.04.21 |
---|---|
[자료구조] 자료구조란 무엇인가? - 정리 및 연습문제 (0) | 2021.04.20 |
제어장치 - 제어장치의 구성과 명령어 수행 과정 (0) | 2021.04.20 |
처리장치 - 제어단어의 이해와 마이크로 연산의 제어단어 변환 (0) | 2021.04.20 |
프로그래밍 언어의 구문의 표현 - BNF, EBNF, 구분 도표 표현법 (0) | 2021.04.20 |
프로그래밍 언어의 평가 기준 (0) | 2021.04.20 |
리팩토링이란 무엇인가? (0) | 2019.12.27 |
1. 소프트웨어 공학이란? - 소프트웨어 공학의 정의와 개발과정 (0) | 2019.12.27 |