Preface
객체지향 인터페이스 도구 부분을 공부하던 도중 궁금증이 생겼다.
"구조적 프로그래밍과 객체지향 프로그래밍의 차이점은 무엇일까?"
나는 두 방식 모두 프로그래밍을 쉽고 빠르게 처리하기 위한 것이며, 특히 객체지향 프로그래밍은 객체(object)를 중심으로 설계한다는 것 정도만 알고있을 뿐, 자세한 차이점에 대해선 설명할 수 없었다.
정확한 해답을 얻고자 검색 엔진을 통해 조사한 결과 한 블로그를 통해 구조적 프로그래밍은 데이터와 데이터 처리 방식을 분리한 방식이고, 객체지향 프로그래밍은 데이터와 데이터 처리 방식을 통합한 것이라는 사실을 알게되었다.
그러나 조금만 생각을 해보니 객체를 중심으로 설계한다는 것과 데이터 처리 방식을 통합한다는 것이 사실 같은 맥락이라는 것을 알 수 있었다.
책상에 앉기 전 매번 '책에 쓰인 내용에 국한되지 않고 가지를 뻗어 더욱 다양하게 고민하자'라는 생각을 하지만, 막상 공부를 시작하면 책의 내용만을 이해하기 급급하며 이전의 내용들은 대부분 휘발되는 것 같다.
조급한 마음을 갖고 빠르게 진도를 나가는 것 보단 필요한 내용들을 복습하며 차근차근 단계를 밟아가는 것이 훨씬 중요하다는 것을 잊지 말고 마음에 새기자.
1. 사용자 인터페이스 설계
- 사람과 컴퓨터 사이의 인터페이스(HCI : Human-Computer Interface)
- 그래픽 사용자 인터페이스(GUI : Graphical User Interface)
- 인터페이스 설계 가이드라인
① 사용자를 중심으로 설계해야 함
② 입·출력 방식이 간편하고, 사용자 습성에 맞으며, 기억하기 쉬워야 함
③ 입·출력 언어를 사용자가 쉽게 배울 수 있어야 함
④ 인적 요소를 중요시해야 함
- 인터페이스 개발 과정
① 구체적인 사용자 인터페이스 정의는 보통 기본 설계 과정에서 이루어짐
② 일반적으로 사용자 인터페이스를 설계한 후 프로그램 구조를 설계
③ 사용자 인터페이스에 대한 구체적 설명은 사용자 안내서에 기록
- 인식 모델
↓
- 사용자 인터페이스 방식
1. 명령어 : 키보드로 명령어를 컴퓨터에 입력하여 컴퓨터와 대화하고 교류
→ 작은 기능을 가진 서브시스템과, 기술자 및 전문가에게 적합
2. 메뉴지향 시스템
① 풀 스크린 메뉴 : 메뉴가 스크린 전부를 차지하며, 사용자는 메뉴 항목을 선택해야 다음 기능을 수행할 수 있음
② drop-down 메뉴 : 종목별로 메뉴를 조직
③ pop-up 메뉴 : 많은 메뉴가 필요하고 스크린에 적당한 공간이 없을 때 사용
④ push-button 메뉴 : 자주 쓰는 메뉴를 직접 선택 가능
⑤ radio-button 메뉴 : 베타적 선택의 경우
⑥ chech-box 메뉴 : 비배타적 선택의 경우
3. 서식 기입 : 많은 양의 데이터를 입력하는 경우
→ 다양한 필드(field)를 제공
- 인터페이스 설계 지침
① 일관성 유지
② 의미 있는 피드백 제공
③ 원상복귀 허용
④ 불필요한 입력 제외 etc.
- 사용자 인터페이스 제작 도구 = 사용자 인터페이스 개발 시스템(UIDS)
→ 프로토타입(시제품)을 빨리 만들 수 있는 제작 도구
2. 상세 설계
- 모듈 및 오퍼레이션들에 대해 알고리즘을 설계하는 것이다.
- 알고리즘 설계 = 모듈 및 오퍼레이션의 내부 구조 설계
→ 제어 추상화 사용
- 알고리즘 표기 방법
1. 순서도(flowchart) : 그래픽 요소로 알고리즘의 제어 흐름을 표시하는 그래픽 도구
① 간단하고 표현력이 높음
② 구조적이지 못하고 복잡한 프로그램 구조를 생성할 수도 있음
③ 간단한 시스템에 적합하며, 복잡한 시스템엔 부적합함
2. N-S 도표 = Nassi-Shneiderman 도표 = Chapin 도표
① 프로그램의 기본 제어 구조를 서로 다른 도표로 표시하여 쉬운 이해 가능
② 프로그램의 구조를 구조적으로 작성해야 함
③ 임의로 goto 문을 작성할 수 없고, 도표에서 제공하는 요소들만 사용 가능
④ 순환 제어 구조를 쉽게 표시 가능
3. 프로그램 설계 언어(PDL : Program Design Language) : 가상 코드(pseudocode)의 일종
① 구조적으로 고급 언어와 유사함
② 프로그램 제어, 데이터 타입 정의 등의 '처리'에서 자연 언어를 사용할 수 있음
→ 직접 컴파일 할 수 없고, 설계 명세 언어로만 사용
- 구조적 프로그래밍 : 쉽게 읽을 수 있고 이해도가 높으며, 수정이 용이한 프로그램 작성 방법
참고 문헌 : 윤청, 『소프트웨어 공학 에센셜』(생능출판), 2019, p.388~407.
'CS > 소프트웨어 공학 에센셜' 카테고리의 다른 글
소프트웨어 테스트 (0) | 2021.06.26 |
---|---|
프로그래밍과 코드 검사 (0) | 2021.06.24 |
디자인 패턴 (0) | 2021.06.22 |
자료 흐름 중심 설계와 데이터베이스 설계 (0) | 2021.06.21 |
소프트웨어 설계 기법 (0) | 2021.06.18 |
댓글