맨땅에 코딩
공통 - 프로그래밍 기초(C) 본문
*화이트햇 스쿨 2기에서 이수한 이론교육 내용을 바탕으로 작성되었습니다.
1. 프로그래밍 준비
소프트웨어 산업의 이해
Smart Factory, Smart Building, Smart Healthcare, E-Commerce
2. 소프트웨어 산업의 이해
소프트웨어 산업의 이해
Smart Factory
- ISO/IEC TR 66306-1:2020 (품질 가이드라인)
Smart Healthcare
- ISO/TR 22696:2020 (품질 가이드라인)
각각의 품질의 표준을 지키고 제품을 안전하게 만들어야 함
3. 프로젝트 관리방법론
프로젝트 관리방법론
Software Development Life Cycle
1) Planning
계획하는 단계
2) analysis
분석하는 단계
어떤 기능이 있고, 어떤 페이지가 있고 등을 분석함
3) Design
전체적인 아키텍처, 플로우차트 등으로 시각화 함
4) Implementation
개발하는 단계
5) Testing, Integration
구현한 기능이 초기 계획과 비교해서 얼마나 요구를 만족하는지, 버그가 있는지, 취약점이 있는지 테스트 진행
6) maintenance
유지보수 단계
새로운 니즈가 발생이 되면 다시 Planning 단계로 돌아감
Agile Process
하나의 방향성을 가지고 만드는 건 맞는데 짧게 스프린트를 가지고 가는 것
Waterfall Process
처음부터 깊게 기획을 하고, 기획이 끝나면 개발, 개발이 끝나면 테스트 한단계 한단계 완벽하게
에자일 | 워터풀 | |
요약 | - 스프린트가 짧고 지속적인 요구사항을 반영함 | - 프로젝트 초기에 명확하게 파악 |
특징 | - 각 기획단계별로 팀원들과의 원활한 소통이 중요 | - 각 기획단계의 산출물 작성에 많은 시간이 소요됨 - 새로운 요구사항이나 피드백에 대한 대응이 느림 |
기준 | - 시장의 변화에 빠르게 대응해야 하는 서비스 - 요구사항의 변경이 자주 발생하는 경우 |
- 요구사항이 명확하고 디테일이해야하는 서비스 - 큰 규모의 제품이나 핵심 기능을 개발하는 경우 |
4. 소프트웨어 품질 평가 방법
1) BOEHM Quality Model
2) DROMEY Quality Model
3) FURPS Quality Model
4) ISO/IEC 25010
8가지 메트릭
Maintainability, Recoverability, Efficiency, Security, Reliability, Resource Utilization, Reusability, Usability
5. 오픈소스 소프트웨어
1) 소스코드 공개 의무
2) 동일 라이센스 적용
3) 상업적 이용
6. 소프트웨어 설계
소프트웨어 기획 프로세스
1) Requirement Specification
요구사항 명세서 작성
2) Information Architecture
어떤 페이지에 어떤 데이터를 넣고 요구사항에 대한 기능 결정
구현할 페이지를 구분하거나 데이터를 어디부터 어디까지 흘러가게 할 것인지 작성
3) Service Policy
서비스 측면의 정책, 개발할 서비스의 회원을 정의
회원을 어떻게 관리하고 어떻게 가입하고 탈퇴하는지 등
4) Development Policy
각각의 기능들을 자세하게 쪼개는 것
요구사항을 만족하는지 확인, 필요없는 기능을 찾을 수도 있음
5) Wireframe
시각화 작업(스케치), 스토리보드 작성
불필요한 부분을 찾는다면 다시 돌아가서 수정
6) UI/UX
디자인 시작
WBS(Work Breakdown Structure) 작성
프로젝트의 업무 분류 체계
1) 프로젝트 이해관계자
2) 프로젝트 일정(타임라인)
3) 프로젝트 결과물
*Jira Software 사용
프로젝트 모의기획
7. 프로그래밍 시작
개발환경 구성
소스 코드(C) → 컴파일러
Visual Studio Code, Visual Studio, eclipse, GCC, Turbo C
변수와 상수
값을 저장할 수 있는 공간
값의 변동 가능성 유/무 차이
int, short, long, char 등등
입력과 출력
외부 장치로부터 데이터를 가져옴: 입력 scanf
외부 장치에 데이터를 전달함: 출력 printf
조건문과 반복문
조건에 따라 다른 코드를 실행함: 조건식
- if-else 조건문
- switch-case 조건문
반복적으로 공통된 코드를 실행함: 반복문
- for 반복문
- while 반복문
함수
코드를 재사용할 수 있는 뭉치
input/ouput 형태에 따라 자유롭게 구성
배열
메모리를 연속적으로 할당/사용할 수 있음
주로 변수를 연속적으로 선언하기 위해 사용
포인터
Call-by-Reference
값이 아닌 위치정보(메모리 주소)를 활용
문자열
문자 끝에 NULL 문자가 포함되면 하나의 문자열 (string)
배열 또는 포인터 선언으로 문자열을 사용할 수 있음
동적 메모리 관리
개발자가 직접 메모리를 관리함(Heap)
프로그램 실행 도중에 동적으로 메모리를 확보
구조체
사용자 정의 자료형을 생성할 수 있음
구조체의 변수를 멤버라고 하며, 객체 지향의 시작
8. 소프트웨어 개선
장애가 발생한 시나리오와 대응방안
'화이트햇 스쿨 2기 > 이론교육' 카테고리의 다른 글
공통 - 정보보안 윤리 (5) | 2024.09.18 |
---|---|
공통 - 암호학 기초 (5) | 2024.09.18 |
공통 - 네트워크 기초 (1) | 2024.09.18 |
공통 - 운영체제 기초 (15) | 2024.09.17 |
공통 - 컴퓨터 구조 I (1) | 2024.08.04 |