- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 연결리스트
- android studio
- 자료구조
- 백준
- C언어
- 안드로이드 스튜디오
- 코딩테스트
- 비주얼 베이직
- 안드로이드
- 파이썬
- 프로그래머스
- til
- 공유대학
- oauth
- 배열
- 컴퓨터공학과
- 프로그래밍 입문
- 자바
- 정렬
- firebase google
- Java
- C++
- 동적할당
- 알고리즘
- Firebase
- 구글 로그인
- 로그인
- sql
- python
코딩하는 해달이
[프로그래밍 입문] 2주차 - 컴퓨팅 사고의 개요(1) 본문
컴퓨팅 사고의 개요
컴퓨팅이란?
▶ 정보화 사회에서는 개인 또는 집단이 원하는 형태로 수많은 정보를 재생산함
▶ 컴퓨팅 시스템을 이용하면 기존 정보를 재가공하여 유용하게 활용할 수 있음
컴퓨팅 사고란?
▶ 컴퓨터(또는 사람)가 효과적으로 문제를 해결할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 일체의 사고 과정
▶ 복잡한 문제를 단순한 문제로 분해 후 이를 해결하기 위한 구조(알고리즘)를 만드는 과정
컴퓨팅 사고와 프로그래밍
▶ 전세계적으로 컴퓨팅 사고는 새로운 시대를 준비하는 중요한 방법으로 여겨짐
▶ 많은 나라에서 전 국민을 대상으로 프로그래밍 교육 실시
▶ 프로그래밍 교육은 새로운 시대에 문제를 고민하는 자세와 이를 해결하는 방법, 즉 컴퓨팅 사고를 키울 수 있도록 해줌
소프트웨어와 프로그래밍 언어
소프트웨어의 역할
▶ 프로그램 로딩 : 소프트웨어가 하드웨어를 작동시키기 위해서 메모리에 탑재되는 것
▶ 프로그램이 메모리에 탑재되고 나면 실행단계를 거치고, 이 단계에서 프로그램은 기계어로 변환되어 각종 하드웨어를 작동 시
프로그래밍 언어
▶ 프로그램을 만들때 사용하는 언어
▶ 인간이 컴퓨터와 대화할 수 있도록 만든 언어
종류
- 저급언어
- 컴퓨터가 쉽게 이해할 수 있는 언어로 실행속도가 빠르고 성능이 뛰어남
- 배우기 어렵고 유지보수가 힘듦
- 기계어, 어셈블리어 등
- 고급 언어
- 인간이 사용하는 언어와 유사하게 만들어진 언어
- 배우기 쉽고, 코드 판독이 쉬워 유지보수가 용이함
- C, C++, C#, 자바, 자바스크립트, 파이썬 등
소스코드와 목적코드
- 소스코드
- C, 자바, 파이썬 같은 프로그래밍 언어로 작성한 프로그램 코드
- 사람이 판독할 수 있는 고급언어로 작성되어 텍스트 형태의 파일로 저장됨
- 하나의 소프트웨어는 하나 또는 그 이상의 소스코드 파일로 구성됨
- 목적코드
- 고급언어로 작성된 소스코드를 실행하면 코드는 이진수로 이루어진 목적코드로 변환됨
- 소스코드를 목적코드로 변환하는 장치를 컴파일러(Compiler) 또는 인터프리터(Interpreter)라고 함
소프트웨어 개발 과정
소프트웨어 개발 과정
▶ 만들려는 소프트웨어의 규모가 클수록 혼자 개발하기 어려우므로 다수의 인원이 투입되는 경우가 많음
▶ '소프트웨어 개발 과정'은 이럴 때 사용하는 프로세스로, 적절한 프로세스와 그에 따른 인력을 투입하여 소프트웨어를 성공적으로 개발할 수 있도록 도와줌
▶ 단계
- 문제분석 : 문제를 파악하고 어떤 프로그램을 만들 것인지 판단한다.
- 설계 : 프로그램을 어떻게 만들지 생각한다.
- 프로그래밍 : 프로그래밍 언어를 사용하여 코드를 작성한다.
- 테스트 : 프로그램이 예상대로 작동하는지 시험한다.
- 사용 : 실제 사용자가 사용한다.
- 유지보수 : 프로그램에 오류 또는 개선점을 수집하여 수정, 보완한다.
▶ 1단계 : 문제분석
- 소프트웨어를 필요로 하는 사람 또는 단체의 요구사항을 분석하는 것
- 요구자가 제시하는 문제점을 분석하거나 시스템의 개선점을 찾아 최정적으로 문제 분석을 통해서 무엇이 개발되어야 할지에 대한 명세서를 산출물로 도출
- 충분한 미팅과 유사 사례를 통하여 요구사항이 제대로 반영된 소프트웨어가 개발 될 수 있도록 해야 함
- 소프트웨어 개발에 일부 요구사항이 반영되지 않거나 요구사항에 대한 잘못된 분석은 잘못된 소프트웨어 개발로 이루어 질 수 있음.
▶ 2단계 : 설계
- 서버와 데이터베이스 등의 시스템을 구성, 다양한 기능 구현에 대한 알고리즘 구체화 그리고 사용자 인터페이스를 어떻게 정의할지 등을 문서로 만듬
- 문제 분석 단계에서 파악한 요구사항을 어떻게 해결할지 설계하는 단계
- 문제 해결 방법을 알고리즘으로 구체화함
- 문제 분석 단계에서 정의된 요구사항에 가장 적합한 설계를 하되 실현 가능한 시스템 구성 및 기능을 정의하도록 주의 해야함
▶ 3단계 : 프로그래밍
- 설계가 끝난 후 개발자가 설계에 따라서 프로그래밍을 하는 단계
- 적절한 언어를 사용해서 프로그래밍 함
▶ 4단계 : 테스트
- 소프트웨어의 모든 기능이 정상적으로 동작하는지 확인하는 단계
- 테스트는 개발자가 아닌 다른 사람이, 최대한 다양한 환경에서 진행
- 여기서 다양한 환경이란 프로그램 사용자의 다양한 사용환경을 뜻하는 것으로 다양한 브라우저, 다른 프로그램 실행과 연관 관계, 사용자 PC사양 등을 의미
▶ 5단계 : 사용
- 테스트 단계를 통과한 소프트웨어가 사용자에게 실제 사용되는 단계
- 개발자는 메뉴얼을 제공, 사용교육을 실시
- 개발자는 사용자가 소프트웨어를 사용하면서 느낀 불편한 점 또는 미처 테스트 단계에서 발견하지 못한 오류 등에 관심을 가져야 함
▶ 6단계 : 유지보수
- 소프트웨어의 문제점 및 개선점을 찾아 업그레이드 하는 단계
- 유지보수 또한 소프트웨어 개발 때와 마찬가지로 문제분석, 설계, 프로그래밍, 테스트 단계를 거침
- 긴급한 유지보수가 필요할 경우 임시로 문제점이 있는 해당 기능의 서비스를 중단하기도 함
- 시간이 흐르면 소프트웨어 사용 기간이 오래되어 낙후되거나 사용자 요구사항이 변경되어 더 이상 유지보수를 하기 힘들어질 수 있는데, 이런 경우에는 충분한 검토를 거쳐 소프트웨어를 새롭게 만듬
컴퓨팅 사고의 4 단계
컴퓨팅 사고의 4 단계
- 문제 분해
- 복잡한 문제를 작은 문제로 구분하기
- 패턴 인식
- 문제들 사이에 일정한 패턴 찾기
- 일반화
- 다양한 문제의 공통된 해결 방법을 모델링하기
- 알고리즘
- 문제를 해결하기 위한 구체적인 순서와 방법을 개발하기
▶ 1단계 : 문제 분해
- 큰 문제를 작은 문제로 나누는 것
- 문제를 나누기 위해서는 먼저 문제를 분석해야
- 문제를 분석하다 보면 큰 문제는 자연스럽게 작은 문제로 나누어지고, 작은 문제의 해답을 찾는 과정에서 큰 문제가 해결됨
- 쪼개진 작은 문제는 순차적 또는 병렬적으로 해결
▶ 2단계 : 패턴 인식
- 분해된 문제들 사이에서 공통된 부분을 찾는 단계
- 공통된 부분의 공식을 만들어 낼 수 있어 문제를 쉽게 해결 가능
▶ 3단계 : 일반화
- 패턴인식을 통하여 얻은 문제 해결 방법을 일반적인 모델로 만드는 단계'
- 일반화된 모델은 1차로 유사한 상황에 공통적으로 적용된 후, 2차로 상황별로 구체화되어 최종적으로 문제를 해결하게 됨
- 일반화와 구체화의 예
- 일반화 : 우편물을 발송하기 위해서는 우체국에 방문하여 업무를 처리한다.
- 구체화 : 우체국에 방문해서 등기는 등기 전용 창구에 접수하고 택배는 택배 전용 창구에 접수한다.
▶ 4단계 : 알고리즘
- 특정 업무를 수행하기 위한 절차 또는 명령어의 집합
- 이러한 절차는 단독으로 수행되기도 하지만 서로 연관되어 진행되기도 함
'USG 공유대학' 카테고리의 다른 글
[응용소프트웨어공학] 1- 1소프트웨어란? (0) | 2023.09.04 |
---|---|
[프로그래밍 입문] 2주차 - 알고리즘 및 파이썬(2) (0) | 2023.03.12 |
[자료구조 및 알고리즘] 2주차 - 재귀와 귀납적 사고(1) (0) | 2023.03.12 |
[프로그래밍 입문] 1주차 - 화상강의 (2) | 2023.03.06 |
[자료구조&알고리즘] 1주차 - 2 (0) | 2023.03.04 |