본문 바로가기

정보처리기사/4. 소프트웨어공학

1. 소프트웨어 공학개념

이 게시물은 공부용으로 짧게 요약형식으로 작성된 것을 알려드립니다. 인쇄용이 아니고, 모바일 전용으로 볼려고 만든 것입니다.

01 소프트웨어 공학의 정의

1) 프로그램(Program) 의 정의

산술적, 논리적인 연산을 신속하게 처리하기 위한 명령어들과 관련된 데이터 집합을 프로그램이라고 한다.

·프로그램 언어 : 프로그램을 작성하는 명령어 형식으로 어셈블러, FORTRAN, COBOL, C언어, 비주얼베이직 등이 있다.

·프로그램 번역기 : 프로그램 언어로 작성된 프로그램 파일을 기계어로 번역하는 프로그램으로 어셈블러, 컴파일러, 인터프리터 등이 있다.

02 프로그램(Program)

1) 프로그램 언어(Program Language)

프로그램의 산술적, 논리적인 계산을 신속하게 처리하기 위한 명령어를 기술하는 프로그램 언어라고 하며, 프로그램 언어는 프로그램의 특성과 기술 발전 추세에 따라 여러 형태가 개발되어 사용되었다.

2) 프로그램 번역기(Program Translator)

프로그램 언어로 작성된 프로그램은 번역기에 의해 번역되어 수행된다. 번역 프로그램(번역기)은 프로그래머가 작성된 원시 코드를 입력받아 컴퓨터에서 수행될 수 있도록 기계어로 변환한다. 기계어에 대해 주목할 필요가 있는데... 컴퓨터는 0과 1로 이루어진 2진 바이너리를 번역해서 프로그램에서 사용할 수 있게 끔 하는 프로그래밍 언어들이 있다. 대표적으로 C언어가 있는데 임베디드 모바일 시스템에서는 요즘은 C언어를 이용한다고 한다. 물론 글을 쓴 시점(2013년)이 명확하지 않아서 요즘 C언어로 개발하는지는 모르겠다.

번역 과정에서 오류가 있을 경우 오류 메시지를 출력하면 프로그래머가 이 오류 메시지를 참고하여 올바르게 번역될 수 있도록 한다.

☒ 컴파일러 (Compiler)

컴파일러는 고급언어로 작성된 프로그램을 기계(컴퓨터)에 적합한 프로그램으로 번역해주는 프로그램이다.

컴파일러용 언어(C언어)를 원시프로그램에 입력하면 기계가 이해할 수 있는 목적프로그램을 출력한다.

목적 프로그램을 반드시 머리속에 기억해두자.

☒ 인터프리터 (Interpreter)

원시프로그램과 기계어의 중간 코드로 생성하여 그 중간 코드를 해석 실행(Interpret)하는 번역 프로그램이다. 인터프리터 과정에서는 최적화 단계를 거쳐 목적 프로그램을 출력하지 않는 것이 컴파일러와 크게 구분되는 점이며 인터프리터용 언어에는 BASIC, APL 등이 있다.

☒ 어셈블러 (Assembler)

저급언어로 작성된 프로그램을 기계(컴퓨터)에 적합한 프로그램으로 번역해주는 프로그램. MASM이 가장 대표적


03 소프트웨어

소프트웨어는 컴퓨터 기반 시스템에서 실행 시 요구되는 기능과 최적의 성능을 제공해 주는 컴퓨터 명령어들의 모임인 프로그램과 프로그램에서 사용하는 자료를 적절히 조작할 수 있게 해주는 자료구조로 정의할 수 있다. 또한 프로그램을 사용하거나 프로그램 운영에 관련된 문서를 총칭하는 것으로 정의할 수 있다.

* 프로그램(Program) : 산술적, 논리적인 계산을 신속하게 처리하기 위한 명령어들(CMD명령어 또는 리눅스의 SUDO,ls)과 관련된 데이터 집합

* 자료 구조(Data Structure) : 자료의 형성 과정으로 컴퓨터 기억 장치 안의 자료 표현이나 처리 방법 등을 분석, 연구하는 것의 총칭으로 데이터들 간의 논리적 관계, 데이터 처리 알고리즘을 의미한다.

* 문서(Paper) : 메뉴얼, 명세서, 프로젝트 계획서, 평가서, 요구분석서, 검사계획서 등을 의미한다.


04 소프트웨어 공학(SE : Software Engineering)

Engineering 의 사전적 의미가 1) 공학  2) 기술  3) 엔지니어링  등이 있으며, 소프트웨어를 연구하는 학문이라 보면 된다.

2) 소프트웨어 공학의 대표적 정의

* 소프트웨어 공학이란 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법이다.

* 소프트웨어 공학은 신뢰성 있는 소프트웨어를 경제적인 비용으로 획득하기 위해 공학적 원리를 정립하고 이를 이용하는 학문이다.

* 소프트웨어 제품을 체계적으로 생산(개발)하고 유지보수(중요)와 관련된 기술과 경영에 관한 학문이다.

* 과학적인 지식을 컴퓨터 프로그래 설계와 제작에 실제 응용하는 것이며, 이를 개발하고 운용, 유지보수하는데 필요한 문서화 작성 과정이다.

* 소프트웨어의 제작부터 운영까지 생산성을 높이기 위해 기술적, 인간적인 요소에 대한 방법론을 제공하는 학문이다.

* 경제적으로 가장 신뢰도 높은 소프트웨어를 만들기 위해 방법. 도구와 절차들의 체계이다.


개발이 끝나고 나서 유지보수를 하는 경우가 많다. 남이 쓰다가 남은 코드를 재수정하고 고치고 하는 작업이다.


3) 소프트웨어 공학의 목표

* 소프트웨어 공학은 소프트웨어 제품의 품질을 향상시키고 소프트웨어 생산성과 작업 만족도를 증대시키는 것이 목적이다.

* 소프트웨어 공학의 궁극적 목표는 최소의 비용으로 계획된 일정보다 가능한 빠른 시일 내에 소프트웨어를 개발하는 것이다.


4) 소프트웨어 공학의 기본 원칙

* 소프트웨어 구축을 위한 기술적인 방법, 도구들을 제공한다.

* 소프트웨어 구축 방법들에 대한 자동, 반자동의 자원을 제공한다.

* 방법들과 도구들을 이용하여 소프트웨어를 합리적으로 개발하고 접속시킨다.

* 현대적인 구축 기술을 계속적으로 적용시킨다.

* 개발된 소프트웨어가 최상의 품질이 유지되도록 지속적인 검증을 시행한다.

* 소프트웨어의 관련 사항을 문서화하여 명확성을 유지한다.

* 소프트웨어 개발 비용을 최소화 시킨다.

* 컴퓨터의 이용 효율이나 워크스테이션에 관한 정보들을 체계적으로 데이터베이스한다.

* 프로그래밍 언어와 알고리즘의 최근 동향을 주기적으로 파악한다.

* 바이러스에 대한 예방에 만전을 기하여 시스템의 안전을 확보한다.


05 시스템 기본 요소

[소프트웨어는 독립적으로 존재할 수 없다.]

자바를 보면 lib(라이브러리)를 필요할 때 가져와서 쓴다.

티스토리에서 보면 플러그인도 마찬가지고

네이버 블로그 배경음악도 일조의 라이브러리이자 플러그인인 셈이다.

이것을 다시 공부하면서 나는 티스토리와 다음의 연동이 완벽하지 않다는 것을 알게 되었다. 다음에 있는 음악을 티스토리에서 가져와 쓸 수 없었다. 라이브러리 연동이 안되는 경우이다.

[하드웨어를 포함하여 개발된 소프트웨어에서 사용될 수 있는 기초적인 입력 자료와 소프트웨어로 처리된 결과들이 있어야 한다. 이러한한 관련 요소들을 시스템의 기본 요소라고 한다.]

* 입력 (Input) : 처리를 위한 조건, 방법과 자료(Data)를 말한다.

* 출력 (Output) : 처리되어서 가공된 자료, 처리 결과를 말한다.

* 처리(Processing) : 입력된 자료를 조건에 따라 변형한다.

* 피드백(Feedback) : 출력 결과가 원하는 목표를 다를 때 수정하기 위해 다시 입력한다.

* 제어(Control) : 처리 과정이 올바르게 될 수 있도록 감시, 감독, 조절한다.

'정보처리기사 > 4. 소프트웨어공학' 카테고리의 다른 글

3. 소프트웨어 생명주기  (0) 2014.03.26
2. 소프트웨어의 기본 이론  (0) 2014.03.24