코딩하는 해달이

[프로그래밍 입문] 2주차 - 컴퓨팅 사고의 개요(1) 본문

USG 공유대학

[프로그래밍 입문] 2주차 - 컴퓨팅 사고의 개요(1)

코딩하는 해달 2023. 3. 12. 15:34

컴퓨팅 사고의 개요

컴퓨팅이란?

▶ 정보화 사회에서는 개인 또는 집단이 원하는 형태로 수많은 정보를 재생산함

▶ 컴퓨팅 시스템을 이용하면 기존 정보를 재가공하여 유용하게 활용할 수 있음

 

 컴퓨팅 사고란?

▶ 컴퓨터(또는 사람)가 효과적으로 문제를 해결할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 일체의 사고 과정

▶ 복잡한 문제를 단순한 문제로 분해 후 이를 해결하기 위한 구조(알고리즘)를 만드는 과정

 

컴퓨팅 사고와 프로그래밍

▶ 전세계적으로 컴퓨팅 사고는 새로운 시대를 준비하는 중요한 방법으로 여겨짐

▶ 많은 나라에서 전 국민을 대상으로 프로그래밍 교육 실시

▶ 프로그래밍 교육은 새로운 시대에 문제를 고민하는 자세와 이를 해결하는 방법, 즉 컴퓨팅 사고를 키울 수 있도록 해줌


소프트웨어와 프로그래밍 언어

소프트웨어의 역할

▶ 프로그램 로딩 : 소프트웨어가 하드웨어를 작동시키기 위해서 메모리에 탑재되는 것

▶ 프로그램이 메모리에 탑재되고 나면 실행단계를 거치고, 이 단계에서 프로그램은 기계어로 변환되어 각종 하드웨어를 작동 시

 

프로그래밍 언어

▶ 프로그램을 만들때 사용하는 언어

▶ 인간이 컴퓨터와 대화할 수 있도록 만든 언어

 

종류

  • 저급언어
    • 컴퓨터가 쉽게 이해할 수 있는 언어로 실행속도가 빠르고 성능이 뛰어남
    • 배우기 어렵고 유지보수가 힘듦
    • 기계어, 어셈블리어 등
  • 고급 언어
    • 인간이 사용하는 언어와 유사하게 만들어진 언어
    • 배우기 쉽고, 코드 판독이 쉬워 유지보수가 용이함
    • C, C++, C#, 자바, 자바스크립트, 파이썬 등

소스코드와 목적코드

  • 소스코드
    • C, 자바, 파이썬 같은 프로그래밍 언어로 작성한 프로그램 코드
    • 사람이 판독할 수 있는 고급언어로 작성되어 텍스트 형태의 파일로 저장됨
    • 하나의 소프트웨어는 하나 또는 그 이상의 소스코드 파일로 구성됨
  • 목적코드
    • 고급언어로 작성된 소스코드를 실행하면 코드는 이진수로 이루어진 목적코드로 변환됨
    • 소스코드를 목적코드로 변환하는 장치를 컴파일러(Compiler) 또는 인터프리터(Interpreter)라고 함

소프트웨어 개발 과정

소프트웨어 개발 과정

▶ 만들려는 소프트웨어의 규모가 클수록 혼자 개발하기 어려우므로 다수의 인원이 투입되는 경우가 많음

▶ '소프트웨어 개발 과정'은 이럴 때 사용하는 프로세스로, 적절한 프로세스와 그에 따른 인력을 투입하여 소프트웨어를 성공적으로 개발할 수 있도록 도와줌

▶ 단계

  1. 문제분석 : 문제를 파악하고 어떤 프로그램을 만들 것인지 판단한다.
  2. 설계 : 프로그램을 어떻게 만들지 생각한다.
  3. 프로그래밍 : 프로그래밍 언어를 사용하여 코드를 작성한다.
  4. 테스트 : 프로그램이 예상대로 작동하는지 시험한다.
  5. 사용 : 실제 사용자가 사용한다.
  6. 유지보수 : 프로그램에 오류 또는 개선점을 수집하여 수정, 보완한다.

▶ 1단계 : 문제분석

  • 소프트웨어를 필요로 하는 사람 또는 단체의 요구사항을 분석하는 것
  • 요구자가 제시하는 문제점을 분석하거나 시스템의 개선점을 찾아 최정적으로 문제 분석을 통해서 무엇이 개발되어야 할지에 대한 명세서를 산출물로 도출
  • 충분한 미팅과 유사 사례를 통하여 요구사항이 제대로 반영된 소프트웨어가 개발 될 수 있도록 해야 함
  • 소프트웨어 개발에 일부 요구사항이 반영되지 않거나 요구사항에 대한 잘못된 분석은 잘못된 소프트웨어 개발로 이루어 질 수 있음.

▶ 2단계 : 설계

  • 서버와 데이터베이스 등의 시스템을 구성, 다양한 기능 구현에 대한 알고리즘 구체화 그리고 사용자 인터페이스를 어떻게 정의할지 등을 문서로 만듬
  • 문제 분석 단계에서 파악한 요구사항을 어떻게 해결할지 설계하는 단계
  • 문제 해결 방법을 알고리즘으로 구체화함
  • 문제 분석 단계에서 정의된 요구사항에 가장 적합한 설계를 하되 실현 가능한 시스템 구성 및 기능을 정의하도록 주의 해야함

▶ 3단계 : 프로그래밍

  • 설계가 끝난 후 개발자가 설계에 따라서 프로그래밍을 하는 단계
  • 적절한 언어를 사용해서 프로그래밍 함

▶ 4단계 : 테스트

  • 소프트웨어의 모든 기능이 정상적으로 동작하는지 확인하는 단계
  • 테스트는 개발자가 아닌 다른 사람이, 최대한 다양한 환경에서 진행
  • 여기서 다양한 환경이란 프로그램 사용자의 다양한 사용환경을 뜻하는 것으로 다양한 브라우저, 다른 프로그램 실행과 연관 관계, 사용자 PC사양 등을 의미

▶ 5단계 : 사용

  • 테스트 단계를 통과한 소프트웨어가 사용자에게 실제 사용되는 단계
  • 개발자는 메뉴얼을 제공, 사용교육을 실시
  • 개발자는 사용자가 소프트웨어를 사용하면서 느낀 불편한 점 또는 미처 테스트 단계에서 발견하지 못한 오류 등에 관심을 가져야 함

▶ 6단계 : 유지보수

  • 소프트웨어의 문제점 및 개선점을 찾아 업그레이드 하는 단계
  • 유지보수 또한 소프트웨어 개발 때와 마찬가지로 문제분석, 설계, 프로그래밍, 테스트 단계를 거침
  • 긴급한 유지보수가 필요할 경우 임시로 문제점이 있는 해당 기능의 서비스를 중단하기도 함
  • 시간이 흐르면 소프트웨어 사용 기간이 오래되어 낙후되거나 사용자 요구사항이 변경되어 더 이상 유지보수를 하기 힘들어질 수 있는데, 이런 경우에는 충분한 검토를 거쳐 소프트웨어를 새롭게 만듬

컴퓨팅 사고의 4 단계

컴퓨팅 사고의 4 단계

  1. 문제 분해
    • 복잡한 문제를 작은 문제로 구분하기
  2. 패턴 인식
    • 문제들 사이에 일정한 패턴 찾기
  3. 일반화
    • 다양한 문제의 공통된 해결 방법을 모델링하기
  4. 알고리즘
    • 문제를 해결하기 위한 구체적인 순서와 방법을 개발하기

▶ 1단계 : 문제 분해

  • 큰 문제를 작은 문제로 나누는 것
  • 문제를 나누기 위해서는 먼저 문제를 분석해야 
  • 문제를 분석하다 보면 큰 문제는 자연스럽게 작은 문제로 나누어지고, 작은 문제의 해답을 찾는 과정에서 큰 문제가 해결됨
  • 쪼개진 작은 문제는 순차적 또는 병렬적으로 해결

▶ 2단계 : 패턴 인식

  • 분해된 문제들 사이에서 공통된 부분을 찾는 단계
  • 공통된 부분의 공식을 만들어 낼 수 있어 문제를 쉽게 해결 가능

▶ 3단계 : 일반화

  • 패턴인식을 통하여 얻은 문제 해결 방법을 일반적인 모델로 만드는 단계'
  • 일반화된 모델은 1차로 유사한 상황에 공통적으로 적용된 후, 2차로 상황별로 구체화되어 최종적으로 문제를 해결하게 됨
  • 일반화와 구체화의 예
    • 일반화 : 우편물을 발송하기 위해서는 우체국에 방문하여 업무를 처리한다.
    • 구체화 : 우체국에 방문해서 등기는 등기 전용 창구에 접수하고 택배는 택배 전용 창구에 접수한다.

▶ 4단계 : 알고리즘

  • 특정 업무를 수행하기 위한 절차 또는 명령어의 집합
  • 이러한 절차는 단독으로 수행되기도 하지만 서로 연관되어 진행되기도 함

 

반응형
Comments