◇ 일 자 : 2026년 4월 16(목)
◇ 주 제
1. 함수 예제 문제 풀이 및 실습
2. 개발계획서 작성을 위한 현장 방문, 팀 토의
3. 기타 참고할 만한 자료들 소개
◇ 내 용
1. 함수에 대한 이해
함수는 프로그램을 어떻게 쉽게 만들 것인가?
함수 안에 모든 기능을 포함시키고, 함수 바깥의 함수를 사용한다는 것은 존재하지 않는다.
그러나 파이썬만은 함수 외 코드를 사용할 수 있다.
>>>def (define 앞글자를 딴 것) : 파이썬에서 함수를 정의할 때는 def 문을 사용한다. '정의하다'
[설명]
- 함수를 호출한다 - 매개변수, 리턴값, 함수에 매개변수 만들기
- 먼저 b함수 시행, 그다음 c 함수 시행, 함수가 쌓여서 호출하면 특정 함수가 존재하고 a 계속 함수가 쌓여서
최종 함수 실행이 끝이 나면 return값이 실행되어진 코드위치로 가서 값을 남기게 된다.
값이 없는 return을 사용할 수도 있다.
- None값은 없다 라는 의미로 return에서 none이 표기될 수 있다, 함수는 키워드를 조합해서 만들어서 사용하도록 습관화 함
- 기본적으로 함수는 {범위의미} 범위로 제한되어 있다.
1.1. 함수를 조합, 만들어서 사용해야 하는 이유
1.1.1. 함수를 호출해서 매개변수에 값을 넣으면 실행되고, 리턴값이 있으면 반복 실행
보통 Java나 C++, C# 같은 언어들은 "모든 코드는 반드시 클래스나 함수(메서드) 안에 있어야 한다"는 엄격한 규칙이 있는데, 파이썬은 그런 제약 없이 파일에 곧바로 코드를 적어도 실행이 된다.
함수가 만들어 지고 나서 함수 내부와 외부 값은 코드가 실행되는 범위가 달라야 정상인데, 파이썬은 이게 실행이 된다. 그런데 나중에 오류나 문제가 될 확률이 높아진다. 그러므로 좀더 귀찮게 코드를 작성하는 습관을 들인다
즉 "파이썬"은 스크립트 언어의 특성을 가지고 있어서, 굳이 함수를 정의하지 않고 파일의 첫 줄부터 명령어를 써 내려가도 위에서부터 아래로 차례대로 실행한다.
Python 예)
print("Hello") # 함수 밖인데도 그냥 실행됨!
def my_function():
print("I am in a function")
my_function()
---> 설명
Java나 C#은 거대한 프로그램을 만들 때 실수를 줄이기 위해 모든 것을 구조화(캡슐화)하도록 강제한다.
파이썬은 초보자가 배우기 쉽고, 간단한 계산이나 자동화 스크립트를 빠르게 짤 수 있도록 "형식"보다는 "실용성"에 초점
2. 개발계획서 작성 단계
계획 - 요구사항 분석 - 설계 -구현 - 테스트 - 유지보수
※ 이 과정들은 한 번에 끝나는 게 아니라, 마치 원처럼 계속 반복(Feedback 피드백).
2.1. 계획 (Planning)
- 무엇을, 왜, 언제까지 만들 것인가? 결정하는 단계,
- 프로젝트의 목적을 세우고, 필요한 인원, 예산, 기간 산출
※ 이 프로젝트가 실제로 구현 가능한지(실현 가능성)를 따져보는 것이 중요
2.2. 요구사항 분석 (Requirements Analysis)
- 사용자가 진짜로 원하는 기능은 무엇인가? 파악하는 단계.
- 개발자가 만들고 싶은 것이 아니라, 사용자가 필요로 하는 기능을 구현
* 로그인, 파일 업로드, 보안설정, 기타 등 구체적인 사용자 요구사항 (구체적인 요구를 모아 '요구사항 정의서' 작성)
※ 사용자와 개발자 간의 오해를 줄이는 가장 중요한 소통 단계
2.3. 설계 (Design)
- 어떤 구조로 만들 것인가?라는 설계도를 그리는 단계
- 분석된 요구사항을 바탕으로 시스템의 구조를 설계
- 화면 디자인(UI/UX)부터 데이터가 저장되는 방식(DB 설계)
- 프로그램의 전체적인 흐름도를 작성 ("Use Case")
※ 실제 구현(코딩)을 효율적으로 할 수 있도록 길잡이
2.4. 구현 (Implementation/Development)
- "실제로 코드를 작성하는" 단계
- 설계도를 보고 프로그래밍 언어를 사용하여 실제 소프트웨어를 만드는 과정("코딩")
※ 설계도를 잘 따르면 코딩 효율이 올라가고 오류가 줄어든다
2.5. 테스트 (Testing)
- 설계한 프로그램이 제대로 작동하는가? 확인하는 단계
- 작성한 코드에 버그(오류)가 없는지, 처음에 계획했던 요구사항대로 잘 작동하는지 꼼꼼히 확인
※ 사용자에게 개발한 S/W 전달하기 이전에 품질을 보장하는 마지막 확인 단계
2.6. 유지보수 (Maintenance)
- 사용 중에 발생하는 문제 해결 및 기능 개선 단계
- 프로그램 배포 후 사용자들이 발견한 버그를 수정하거나, 새로운 기능을 추가, 운영 체제 업데이트에 맞춰 시스템 수정
※ 소프트웨어는 완성형이 아니라, 잘 구동될 수 있도록 계속 관리해 줘야 오래 사용
<<참고할 만한 자료들 소개 >> ------ 찾아보기
개발자들을 위한 교육자료들이 많이 없고 구형 발간 서적들은 절판 상태가 많다.
1. WPF (Windows Presentation Foundation)
- 마이크로소프트가 개발한 데스크톱 클라이언트 애플리케이션용 UI 프레임워크로 XAML을 이용해 UI와 비즈니스 로직을 분리
(MVVM 패턴)하여 개발자와 디자이너의 협업이 용이 하다
- WPF와 MVVM 패턴이 왜 협업에 유리한지는 "서로의 영역을 건드리지 않고 자기 일에만 집중할 수 있는 구조"이기 때문
과거에는 디자인 코드와 동작 코드가 한곳에 뒤섞여 있었다. 하지만 WPF에서는 나뉜다.
① 디자이너 (XAML): "버튼은 파란색이고, 왼쪽 모서리에 있어" (겉모습 결정)
② 개발자 (C#): "버튼을 누르면 데이터베이스에 저장해" (기능 결정)
2. PyQt
"강력한 C++ 엔진(Qt)을 파이썬의 간결함으로 다룰 수 있게 해주는 도구"
- C++의 강력한 GUI 프레임워크인 Qt를 파이썬에서 사용할 수 있게 해주는 라이브러리. 1,000개 이상의 클래스를 통해 윈도우,리눅스, macOS에서 작동하는 크로스 플랫폼 GUI 앱을 만들며, Qt 디자이너를 통해 시각적 디자인이 가능하다.
- Qt for Python : 공식 Python 바인딩을 제공하여 Python을 사용하여 Qt 애플리케이션을 작성할 수 있다.
- 전문적이고 복잡한 기능을 가진 상용 수준의 데스크톱 프로그램을 파이썬으로 빠르게 만들고 싶을 때 선택하는 가장 강력한 선택지, 단순 취미나 가벼운 도구라면 PyQt를, 소스코드 공개 없이 상업용 앱을 만들 계획이라면 PySide(Qt for Python)를 주로 선택
3. 멀티모달 AI 이해
3.1.멀티모달 AI의 시작과 목적
- 시작: 인간이 세상을 이해하는 방식(보고, 듣고, 느끼는 것)을 AI에게 학습시키려는 시도에서 출발했다. 텍스트 데이터만으로는 정보의 한계가 있었기 때문이다.
- 목적: 인간처럼 다양한 감각(모드)을 동시에 활용하여 상황을 입체적으로 이해하고, 가장 적절한 결과물을 내놓는 '인간에 더 가까운 AI'를 만드는 것이 목적이다.
3.2. 싱글모달 AI vs 현재의 변화
- 싱글모달(Single-modal) AI : 초기에는 입력(Input)과 출력(Output)의 통로가 하나였다. (예: 텍스트 입력 → 텍스트 답변)
- 현재의 진화: 현재 우리가 쓰는 서비스들(ChatGPT, 제미나이 등)은 이미 싱글모달을 넘어 멀티모달화 되어 있다.
- 예를 들어 산책 중 모르는 꽃을 발견해 사진(이미지)을 찍으면, AI가 이를 분석해 이름과 효능(텍스트)을 설명해 준다. '보는 눈'과 '말하는 입'이 결합된 형태로 변화되었다.
3.3. 멀티모달 AI 서비스 방향
단순히 화면 속 글자만 보여주는 서비스는 사용자의 몰입을 끌어내기 어렵다. 진정한 멀티모달 서비스는 인간의 오감을 자극하는 다양한 인터페이스를 활용해야 한다.
- 다양한 입력(Input): 키보드(텍스트 입력), 마이크(음성 명령 및 감정 분석), 카메라/마우스(시각 정보 및 동작 인식)
- 다양한 출력(Output): 단순 텍스트를 넘어 스피커(음성), 이미지 생성, 비디오 출력 등 예측된 결과값을 효과적인 형태로 제공
- 핵심: 사용자가 "안 본다(지루해한다)"는 점을 간과해서는 안된다. 키보드와 마우스에 갇히지 않고 ""소리, 영상, 촉감 등으로 소통하며 유저의 경험을 확장하는 것이 ""멀티모달 서비스 개발의 핵심""
---> 요약 : 멀티모달 AI는 "인간이 소통하는 모든 방식(글, 사진, 목소리, 몸짓)을 다 알아듣고, 그에 맞는 최적의 형태로 답해주는 지능형 서비스"로 진화하고 있다.
4. 참고자료
4.1. CBD (Component Based Development) SW 검색
CBD(컴포넌트 기반 개발)는 소프트웨어를 처음부터 끝까지 새로 만드는 것이 아니라, 레고 블록처럼 만들어진 부품(컴포넌트)을 조립하여 시스템을 구축하는 개발 방법론
"새로 코딩하는 대신, 잘 만들어진 부품(컴포넌트)을 골라 조립하여 완성도 높은 소프트웨어를 빠르게 만드는 효율적인 방법"
4.1.2. 컴포넌트(Component)란?
- 독립적인 부품: 특정한 기능을 수행하며 그 자체로 독립적으로 실행될 수 있는 소프트웨어 단위
- 교체 가능성: 규격만 맞으면 다른 컴포넌트로 쉽게 갈아 끼울 수 있다. (예: 결제 시스템 컴포넌트를 A사에서 B사 것으로 교체)
4.1.3. CBD의 핵심 프로세스
- CD (Component Development): 시장의 요구를 분석하여 재사용 가능한 고품질의 컴포넌트를 직접 만드는 과정.
- CBSD (Component Based Software Development): 만들어진 컴포넌트들을 찾아내고 조립하여 최종 앱 완성 과정.
4.1.4. CBD 개발의 장점 (그럼 왜 하는가?)
- 생산성 향상: 이미 검증된 부품을 가져다 쓰기 때문에 개발 속도가 압도적으로 빠르다.
- 품질 보장: 여러 곳에서 이미 사용되어 안정성이 검증된 컴포넌트를 사용하므로 오류가 적다.
- 유지보수 용이: 특정 기능에 문제가 생기면 해당 컴포넌트만 수정하거나 교체하면 된다.
- 비용 절감: 한 번 만든 컴포넌트는 다른 프로젝트에서도 재사용(Reuse)할 수 있어 장기적으로 비용이 줄어든다.
4.1.5. SW 검색 및 선택의 중요성
CBD 방식에서 가장 중요한 기술 중 하나가 바로 'SW 검색'.
내가 필요한 기능을 가진 컴포넌트가 어디에 있는지, 성능은 어떤지 찾아내는 과정이 필수적이다.
- 저장소(Repository): 잘 만들어진 컴포넌트들을 모아놓은 창고
- 명세서(Specification): 이 부품이 어떤 입력을 받고 어떤 결과를 내놓는지 적힌 설명서. 개발자는 이 명세서를 보고 자신의 시스템과 호환되는지 판단한다
[사용자 요구사항 정의서]
- 문서가 만들어져 있으면 참고할수 있다 문서를 볼수 있는 시야를 갖도록 한다
- s/w코드를 알려면 요구사항 정의서를 보면 분석하는데 도움이 된다
- 요구사항 설명에 코드를 따라가면 어떤 프로그램인지 인지할수 있다
*** 프로그램의 본질과 "분석 설계" 단계
UI LOGIC(O) DATA(O)
◇ 결 론
함수를 조합해서 만들어서 사용하는데에는 다소 많은 생각과 고민을 해야 한다. 초보자들의 용어에 대한 생소함과 낯설음은 반복 숙달 입력하고 오류를 찾아내서 고치고 하는 활동들이 도움이 된다.
하루가 다르게 변화하는 개발환경과 프로그램, 인공지능 까지 배워야 할 것들이 너무나 많지만 하나의 앱이나 s/w가 고객의 요구사항을 충족하려면 개발자들은 꾸준한 고민이 필요할 것이다.
'학습 로그 > Python3' 카테고리의 다른 글
| D+11 [Python] 리스트 실습 (0) | 2026.04.16 |
|---|---|
| D+12 [Python] 함수를 활용한 간단한 프로그램 만들기 (0) | 2026.04.16 |
| D+11 [Python] 간단한 프로그램(로직&순서도) 작성 실습 (0) | 2026.04.15 |
| D+10 [Python] 반복문 실습 (0) | 2026.04.14 |
| D+9 [Python] 예제문제 풀이 및 실습 (0) | 2026.04.13 |