티스토리 뷰
1. 프로그래밍의 정의
1.1. 프로그래밍의 학문적 정의
- 특정 결과를 달성하기 위해 실행 가능한 컴퓨터 프로그램을 설계 및 구축하는 프로세스
- 분석, 알고리즘 생성, 알고리즘의 정확도 및 리소스 소비 프로파일링, 알고리즘 구현
1.2. 프로그래밍의 간단한 정의
- 말 그대로 프로그램을 만드는 행위 자체를 의미
- 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션
- 0과 1 밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업
2. 프로그래밍의 접근 방법
2.1. 컴퓨팅 사고력 (Computational Thinking, CT)
- 복잡한 문제를 단순화하여 이를 논리적이고 효율적으로 해결하는 능력
- 두발로 걷는 로봇의 "걷다" 기능
2.2. 프로그래밍을 배워야 하는 이유
- 논리적인 사고방식과 문제 해결력 상승
- 협동력과 커뮤니케이션 능력 상승
- 프로그래밍 스킬은 더 이상 개발자들만의 기술이 아닌 다양한 분야에서 요구됨
3. 프로그래밍(프로그래머) vs 코딩(코더)
3.1. 코딩(Coding)
- 알고리즘을 선정한 프로그래밍 언어의 명령으로 변환하여 작성하는 것
- 프로그래밍의 초기 단계를 구현하는 데 사용되기 때문에 프로그래밍의 하위 집합
3.2. 사전적 의미에서의 차이
- 프로그래밍: 컴퓨터 프로그램을 작성하는 일, 프로그램 작성 방법의 결정, 코딩, 에러수정 따위의 작업
- 코딩: 정보를 계산 조작에 편리한 부호로 바꾸기
4. 프로그래밍의 순서 및 고려사항
4.1. 프로그래밍 순서
(1) 설계 과정
- 문제 인식 + 프로그램 설계
- 프로그램의 설계도를 만드는 작업
(2) 구현 과정
- 프로그램 구현 + 테스트와 디버깅
- 설계도에 따라 직접 코딩(Coding)을 수행
- 작성한 프로그램의 오류를 찾아 수정
(3) 보완 과정
- 프로그램 유지보수
- 추가해야 되거나 수정해야 할 사항들을 보완
4.2. 프로그래밍 시 고려사항
(1) SW 품질 요구 사항 - ISO/IEC 25010
- 기능 적합성(Functional Suitability) : 요구되는 기능을 만족시키는 능력
- 성능 효율성(Performance efficiency) : 적절한 자원의 사용 및 적정한 반응시간 정도
- 호환성(compatibility) : 다른 시스템과의 상호 연동 능력
- 사용성(Usability) : 사용자가 이해하고 배우기 쉬운 정도
- 신뢰성(Reliability) : 규정된 환경에서 결함 없이 의도된 기능 및 작업을 수행하는 능력
- 유지보수성(Maintainability) : 소프트웨어의 수정 및 변경의 용이성
- 보안성(Security) : 정보 및 데이터를 보호하는 능력
- 이식성(Portability) : 지원하는 다양한 환경에서 운영될 수 있는 능력
(2) 소스 코드의 가독성
- 프로그램 개발자가 목적, 제어 흐름 및 소스 코드 작동을 쉽게 이해할 수 있도록 구성
- 이식성, 사용성 및 유지보수성을 포함하여 위의 품질 측면에 영향
- 가독성 관련 요소 (들여쓰기 도는 공백 스타일, 코멘트(주석), 객체 이름 명명(ex: 변수))
(3) 알고리즘의 복잡성
- 실행 시간, 메모리 소비 등의 리소스 사용에 영향을 미치며, 복잡성이 낮을수록 효율적인 알고리즘
- 점근 표기법을 이용하여 알고리즘의 복잡성을 수치화
- 점근 표기법
최상의 경우: 오메가 표기법(Big Ω Notation)
평균의 경우: 세타 표기법(Big θ Notation)
최악의 경우: 빅오 표기법(Big O Notation)
(4) 프로그래밍 방법론
- 소프트웨어 개발 생명주기 (SDLC : Software Development Life Cycle)
각 단계에서 작업 방법과 문서 작성 형식 등을 규정
요구 명세화 - 분석 - 설계 - 개발 - 시험 - 유지보수
- 개발 방법론 종류 : 구조적 방법론, 객체지향 방법론, CBD 방법론
(5) 사용 언어 선택
- 프로그래밍 시 사용할 언어 선택
특정 응용프로그램을 개발하는 경우 : COBOL, Fortran, C등
여러 응용프로그램 작성 및 호환성에 따라 선택 : C++, JAVA, Python 등
'정보보호 > 프로그래밍 개론' 카테고리의 다른 글
6/29(화) 과제 (0) | 2021.06.30 |
---|---|
프로그래밍 언어 (0) | 2021.06.28 |
- Total
- Today
- Yesterday
- window 객체
- location 객체
- DOM
- 변수
- Document Object Model
- 키워드
- History 객체
- bom
- Browser Object Model
- keyword
- 컴파일
- Navigator 객체
- 리액트 #React #props #state #javascript
- Screen 객체
- int
- Char
- stdio.h
- 자료형
- c언어
- short
- long
- gcc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |