기타 정보/소프트웨어 공학: 19개의 글
1. 배열의 정의 배열(Array) : - 인덱스와 원소값의 쌍()으로 구성된 집합 - 배열의 각 원소들은 자료형과 기억 공간의 크기가 같다. - 메모리의 물리적인 위치를 순서적으로 결정하는 특징이 있다. - 배열의 논리적인 순서(인덱스)는 메모리에 저장되는 원소값의 물리적인 순서(메모리 주소)와 동일하다. - 배열의 첫 번째 원소의 메모리 주소와 인덱스를 통해 특정 원소의 주소값을 계산할 수 있다. - 직접 접근(direct access) : 인덱스를 이용해 접근하므로 - 자료구조의 유형 중 선형 구조에 해당한다. - 각 원소의 이름은 고유한 이름이 없고 원소의 위치에 따라 정해진다. 메모리 영역의 추상화와 구체화(출처: 한국방송통신대학교) 그림의 좌측은 16진수로 표현되는 메모리의 실제 주소, 가운데..
1. 자료와 정보의 관계 자료(data) : 현실 세계에서 관찰이나 측정을 통해 수집된 값(value)이나 사실(fact) 정보(information) : - 어떤 상황에 대해 적절한 의사결정(decision)을 할 수 있게 하는 지식(knowledge)으로서 자료의 유효한 해설(interpretation)이나 자료 상호간의 관계(relationship)을 표현하는 내용 - 자료의 2차 처리 결과물 자료와 정보의 관계는 수식 I = P(D)로 표현할 수 있다. (I : Information, P : Process, D : Data) 2. 추상화의 개념 추상화 : 공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것 자료의 추상화는 다양한 객체를 컴퓨터에서 표현하고 활용하기 위해 필요한 자료의 ..
제어장치와 처리장치의 관계 - 제어장치는 외부 입력신호(컴퓨터 명령)을 받아 이 신호에 해당하는 제어신호(마이크로 연산)을 처리장치로 보낸다. - 처리장치에서 제어신호에 의해 입력 데이터를 받아 처리한 후 결과를 출력 데이터로 내보낸다. - 처리장치에서 연산 결과로 나타나는 상태신호를 제어장치로 보낸다. - 상태신호는 분기, 조건판단 등을 위한 판단기준을 제공한다. 제어장치 구성 제어장치는 기억장치에서 명령을 하나씩 읽어 해독한 후 해당되는 회로가 동작할 지시신호를 보내 모든 장치가 유기적으로 동작할 수 있도록 한다. (1) 명령어 레지스터(IR: Instruction Register) - 기억장치에서 읽어온 명령어를 저장하는 레지스터 - 명령어가 IR에 저장되기 전에 메모리 버퍼 레지스터(MBR: Me..
제어단어와 선택신호 제어단어 - 선택신호(제어변수)의 묶음 - 제어단어는 처리장치로부터 전달받은 상태비트를 참고하여 제어장치가 만들게 됨 선택신호(제어변수) - 처리장치 내에서 수행되는 마이크로 연산을 선택하는 변수 - 처리장치의 버스, ALU, 시프터, 도착 레지스터 등을 제어 처리장치와 제어단어 아래와 같은 구조의 처리장치가 있다고 가정하자. 처리장치 블록도 레지스터 세트는 R1~R7의 7개의 레지스터로 구성되었다. 7개의 레지스터 출력과 외부기억장치로부터의 입력은 두 세트의 멀티플렉서가 선택하여 ALU의 입력으로 연결된다. ALU의 출력은 시프터를 통해 출력버스로 연결되어 도착 레지스터나 외부로 전송된다. 이러한 구조의 처리장치에는 모두 16개의 2진 제어변수가 있고(처리장치 구조에 따라 제어변수의..
BNF 표현법 BNF(Backus-Naur Form)는 Algol의 구문을 정의하기 위해 배커스(Backus)와 나우어(Naur)가 사용한 표현법이다. BNF 기호 메타 기호 BNF는 세 가지 메타 기호를 사용한다. 메타 기호 의미 ::= 정의 | 택일(OR) 비단말 기호 - BNF에서 규칙은 메타 기호 ::=를 이용하여 표현한다. - ::=를 기준으로 왼쪽을 오른쪽으로 정의한다. - ::=의 왼쪽에는 하나의 비단말 기호가, 오른쪽에는 기호들을 활용하여 정의하는 내용이 나와야 한다. 단말/비단말 기호 기호 의미 예 단말 기호 메타 기호 로 묶인 기호 , , , ... 비단말 기호 비단말 기호 및 메타 기호가 아닌 기호 A, B, a, b, 0, 1, if, then, +, -, ... BNF의 예 ::=..
프로그래밍 언어의 요구사항 소프트웨어 개발 및 유지보수 측면에서 프로그래밍 언어는 어떤 요구사항을 만족해야 할까? 먼저 프로그래밍 언어는 프로그래머가 자신의 아이디어를 쉽게 표현할 수 있게 해야한다. 또한 작성된 프로그램은 쉽게 유지보수 할 수 있어야 하며, 컴퓨터에서 빠르게 실행될 수 있어야 한다. (1) 표현 풍부성(expressiveness): 프로그래머의 아이디어를 쉽게 표현할 수 있다. (2) 유지 보수성(maintainability): 작성된 프로그램은 쉽게 유지보수할 수 있다. (3) 실행 가능성(executability): 작성된 프로그램이 빠르게 실행될 수 있다. 프로그래밍 언어의 설계 원칙 그리고 이러한 기능과 요구사항을 만족하기 위해 고려해야하는 설계 원칙 중 공통적으로 거론되는 것은..
프로그래밍 언어의 대표적인 평가 기준으로 다음의 9가지를 꼽을 수 있다. 평가 기준 의미 작성력 프로그램 수식이나 문장, 기능을 쉽게 표현할 수 있는 특성 가독성 작성된 프로그램을 보고 쉽게 이해할 수 있도록 하는 특성 신뢰성 작성된 프로그램이 오류에 빠지는 가능성을 줄이는 특성 직교성 언어 기능이 서로 간섭하지 않고 자유롭게 조합될 수 있는 특성 일관성 유사한 기능을 같은 형태로 나타낼 수 있는 특성 확장성 사용자가 원하는 새로운 기능을 추가할 수 있는 특성 효율성 작성된 프로그램이 효율적으로 수행될 수 있도록 하는 특성 유연성 프로그래머가 표현하고 싶은 내용을 유연하게 수용하는 특성 이식성 프로그램을 다른 실행 환경으로 이전할 수 있는 특성 작성력 프로그램 수식이나 문장, 기능을 쉽게 표현할 수 있는..
리팩토링(Refactoring)은 소프트웨어를 보다 쉽게 이해할 수 있도록 만드는 작업입니다. 이해하기 쉬운 코드가 수정하기도 쉽기 때문에 수정하기 쉬운 코드를 만든다는 또 하나의 목적 역시 자연스럽게 달성됩니다. 리팩토링은 들어가는 리소스를 최소화하기 위해서 외부 동작의 변화 없이 소프트웨어의 구조를 바꾸는 것을 중심으로 진행이 됩니다. 왜 리팩토링을 해야 하는가?리팩토링이 적절하게 진행되면 소프트웨어가 이해하기 쉬워지고 수정도 용의해 집니다. 여기서 얻을 수 있는 다양한 이익이 리팩토링을 해야하는 이유가 됩니다. 이해하기 쉽고 수정하기 쉬워지니 개발자의 개발 속도가 자연스럽게 빨라집니다. 그리고 이해하기 쉽기 때문에 버그가 있다면 훨씬 쉽게 발견할 수 있습니다. 리팩토링을 마친 다음 뿐만 아니라 코드..
1. 소프트웨어 공학의 정의1) 공학의 정의부터 살펴보자면, 인류의 이익을 위해서 과학적 원리, 지식, 도구등을 활용하여 새로운 제품, 도구등을 만드는 것이라고 볼 수 있다. 2) 소프트웨어 공학은 인류의 이익을 위해서 소프트웨어와 관련된 원리, 지식, 도구등을 활용하여 새로운 제품, 도구등을 만드는 것이라고 볼 수 있는데, 더 학문적 개념으로 살펴보자면, 소프트웨어의 개발, 운용, 유지보수등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이라고 볼 수 있다. 2. 소프트웨어 공학의 개발 과정 개요1) 계획, 요구사항 분석, 설계, 구현, 시험 및 유지 보수 과정을 거침. 2) 소프트웨어는 여러 구성요소가 하드웨어 및 다른 요소들과 결합하여 유기적으로 상호작용하는 시스템.3) 시스템 개발..