소프트웨어 기능

섬네일|X 윈도 시스템 단말 에뮬레이터 프로그램 Xterm에서 사용 가능한 기능 목록을 보여주는 메뉴
기능 또는 피처(feature)는 강(Kang) 외의 여러 저자에 따르면 "소프트웨어 시스템의 두드러지거나 특징적인 사용자 가시적 측면, 품질 또는 특성"으로 정의된다. 구현 수준에서, 아펠(Apel) 외 여러 저자에 따르면 "이해관계자의 요구 사항을 충족하고, 설계 결정을 구현 및 캡슐화하며, 구성 옵션을 제공하기 위해 주어진 소프트웨어의 구조를 확장하고 수정하는 구조"로 정의된다.

 맥락 
'기능(feature)'이라는 용어는 모든 종류의 시스템에서와 마찬가지로 소프트웨어에서도 동일한 의미를 갖는다. 예를 들어, 영국 왕립 해군의 HMS 드레드노트 (1906년)는 드레드노트급 이전 전함에는 없었던 고급 기능들 때문에 해군 기술의 중요한 이정표로 여겨졌다.

기능은 컴퓨터 하드웨어에도 적용된다. 컴퓨터의 초기 역사에서, 디지털 이큅먼트 코퍼레이션의 PDP-7 미니컴퓨터(1964년 제작)와 같은 장치들은 많은 기능들을 가지고 있다는 점으로 유명했다. 예를 들어, PDP 미니컴퓨터 시리즈 중 처음으로 와이어 랩을 사용했으며, 같은 해에 발명된 독점적인 DEC 플립칩 모듈을 처음으로 사용했다는 점 등이 있다.

기능은 프로그래밍 언어와 같은 개념에도 적용된다.
파이썬 프로그래밍 언어는 서로 다른 코드 블록을 나타내기 위해 중괄호 대신 공백 문자(공백 및 탭)를 사용하는 기능으로 잘 알려져 있다.

또 다른 유사한 고급 객체 지향 프로그래밍 언어인 루비는 "@"와 "$" 기호를 사용하여 다른 변수 스코프를 강조하는 것으로 유명하며, 개발자들은 이것이 코드 가독성을 향상시킨다고 주장한다. 개발자들은 또한 루비의 중요한 기능 중 하나가 높은 유연성이라고 주장한다.

전기전자공학자협회 (IEEE)는 (폐지된) 소프트웨어 테스트 문서 표준인 IEEE 829에서 기능을 "소프트웨어 항목의 특징적인 특성(예: 성능, 이식성 또는 기능)"으로 정의한다.IEEE Std. 829-1998

기능은 일반적으로 소프트웨어 시스템의 긍정적인 측면에 사용되지만, 소프트웨어 버그 또한 부정적인 가치를 가진 기능이다.

 예시 
Xterm 단말 에뮬레이터는 X 윈도 시스템과의 호환성, ANSI 색상을 사용하여 VT220 및 VT320 터미널을 에뮬레이트하는 능력, 컴퓨터 마우스 또는 기타 유사 장치를 사용하여 이스케이프 시퀀스를 입력하는 능력, 그리고 여러 다른 유닉스 계열 운영 체제(예: 리눅스, AIX, BSD, HP-UX)에서 실행되는 능력 등 많은 주목할 만한 기능들을 가지고 있다.

 피처 리치와 피처 크립 
기능이 풍부하다는 것을 뜻하는 '피처 리치(Feature-rich)'는 것은 소프트웨어 시스템이 많은 옵션과 기능을 가지고 있음을 의미한다.

사용자에게 기능이 풍부한 소프트웨어를 소개하는 한 가지 메커니즘은 단계적 공개 개념이다. 이는 한꺼번에 많은 기능을 표시하여 발생할 수 있는 잠재적 혼란을 줄이기 위해 필요에 따라 기능을 점진적으로 도입하는 기술이다.

때로는 기능이 풍부하다는 것이 부정적인 속성으로 간주되기도 한다. 피처 크리프, 소프트웨어 블롯, 피처리티스(featuritis)라는 용어는 기능이 지나치게 풍부한 소프트웨어를 지칭한다. 이러한 과도한 기능 포함은 경우에 따라 위원회에 의한 디자인의 결과이다.

소프트웨어 개발자들이 불필요한 기능을 추가하는 경향에 대응하기 위해, 1970년대 켄 톰프슨과 데니스 리치와 같은 벨 연구소 직원들이 유닉스 운영 체제 작업을 하면서 유닉스 철학이 개발되었다. 이 철학은 소프트웨어 프로그램은 일반적으로 하나의 주요 작업만 완료해야 하며 "작은 것이 아름답다"는 것으로 요약될 수 있다.

 같이 보기 
 피처 지향 프로그래밍
 제품군 엔지니어링
 소프트웨어 설계
 소프트웨어 테스트
 응용 프로그램 수명 주기 관리
 피처 크리프
 스코프 크리프
 오버엔지니어링

 각주 

 외부 링크 
 전기전자공학자협회 공식 웹사이트