모르겠는건 여기 참고
https://1d1cblog.tistory.com/87
https://velog.io/@yuhyeonp
데이터 입출력 구현
연습문제
34-7. 연결 리스트 (Linked List)
- 노드의 삽입이나 삭제가 쉽다.
- 노드들이 포인터로 연결되어 있어 포인터를 찾아가는 시간이 필요하므로 선형 리스트에 비해 접근 속도가 느리다.
- 연결을 해주는 포인터를 위한 추가공간이 필요하다.
- 연결리스트 중에서 중간 노드 연결이 끊어지면 그 다음 노드를 찾기가 어렵다.
34-8. 포인터를 사용하여 리스트를 나타냈을 때
- 새로운 노드의 삽입이 쉽다.
- 기억 공간이 많이 소요된다.
- 한 리스트를 여러 개의 리스트로 분리하기 쉽다.
- 리스트에서 특정 노드를 삭제할 때는 그 노드와 연결된 링크(포인터)를 끊으면(지우면) 간단하게 삭제된다.
37-1. 절차형 SQL
- 절차형 SQL의 종류에는 프로시저, 트리거, 사용자 정의 함수가 있다.
- 프로시저는 특정 기능을 수행하는 트랜잭션 언어로, 처리 결과를 반환하지 않거나 한 개 이상의 값을 반환한다.
- 트리거는 데이터베이스에 이벤트가 발생할 때 수행되는 작업이다.
- 사용자 정의 함수는 프로시저와 유사하며, 예약어 RETURN을 사용하는 것이 특징이다.
예상문제
4. 큐(Queue)
- 입력은 리스트의 한끝에서, 출력은 그 상대편 끝에서 일어난다.
- 운영체제의 작업 스케줄링에 사용된다.
- 오버플로와 언더플로 모두 발생할 수 있다.
- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 FIFO 방식으로 처리된다.
14. 소프트웨어 개발에서 데이터 입출력에 대한 설명
- 소프트웨어의 기능 구현을 위해 데이터베이스로부터 데이터를 입출력하는 것
- 데이터베이스의 데이터를 입출력하는데 사용되는 언어는 SQL이다
- SQL을 통해 데이터베이스에서 처리되는 하나의 논리적 작업 단위를 트랜잭션이라고 한다.
- 소프트웨어가 데이터베이스에 있는 데이터를 조작하기위해서는 SQL 매핑 또는 ORM 기술을 사용해야 한다.
통합 구현
연습문제
38-2. 단위 모듈에 대한 설명
- 처리문, 명령문, 데이터 구조등이 포함되어 있다
- 사용자나 다른 모듈로부터 값을 제공받아 시작되는 작은 프로그램
- 하나의 기능을 구현하므로, 두개의 모듈을 통합하는 경우 두 개의 기능을 구현할 수 있다.
- 독립적인 컴파일이 가능하고, 다른모듈에 호출되거나 삽입될 수 있다.
38-4. 단위 모듈의 구현과정 중 입출력기능구현에 관한 설명
- 각 장치와의 입출력은 오픈 소스 API를 통해 간편히 구현할 수 있다.
- 단위 모듈 간의 연동 또는 외부와의 통신을 위한 입출력 데이터를 구현하는 단계
- 사용자 인터페이스가 CLI? GUI? 고려
38-5. 단위 모듈의 구현과정에서 각 모듈과 모듈에 대한 설명
- 디바이스 드라이버 모듈: 하드웨어 주변 장치의 동작을 구현
- 파일 모듈: 파일을 사용하는 방법을 구현
- 메모리 모듈: 메모리를 사용하는 방법을 구현
- 프로세스 모듈: 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현
- 네트워크 모듈: 네트워크 장비 미 데이터 통신을 위한 기능을 구현
39-1. 단위 모듈 테스트
- 블랙박스 테스트 기법 이나 화이트 박스 테스트
- 모듈 통합 이후에는 찾기 어려운 에러들을 간단히 찾을 수 있도록 해줌
- 단위 모듈에 대한 코드이므로 시스템 수준의 오류들을 찾아내기는 어렵다
- 테스트 케이스를 활용하여 수행할 수 있다.
39-4. ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스의 구성요소
- Test Item
- Input Specification
- Output Specification (예상결과값)
예상문제
2. 모듈 간 통합 방식의 구현을 위한 인터페이스 집합인 IPC에 속한 메소드
- Shared Memory: 공유 가능한 메모리를 구성하여 다수의 프로세스 간 통신을 지원
- Semaphores: 자원에 대한 접근 제어(access control)를 통해 프로세스 간 통신을 지원
- Socket: 네트워크 소켓을 이용한 프로세스 간 통신 지원
- Message Queueing: 메시지 전달 방식을 사용하여 프로세스 간 통신을 지원
7. 테스트 관련
- Test Case: 테스트에 필요한 입력 데이터, 테스크 조건, 예상 결가 등을 기입한 문서. 테스트 수행에 필요환경이나 테스트 케이스간의 의존성을 기입.
- Test Procedure: 테스트 스크립트라고도 불리며, 테스트 케이스의 실행 순서
- Test Scenario: 여러개의 테스트 케이스를 묶은것. 테스트 케이스 수행에 대한 절차를 명세한 문서
8. 테스트 프로세스 5단계
- 계획 및 제어: 목표 달성위한 계획 수립 및 진행되도록 잘 제어
- 분석 및 설계: 목표를 구체화 테스트 시나리오,케이스 작성
- 구현 및 실현: 케이스를 조합해 테스트 프로시저에 명세
4, 평가: 잘됐나 평가하고 기록
- 완료
제품 소프트웨어 패키징
연습문제
41-1 패키징 작업 순서
- 기능 식별
- 모듈화
- 빌드 진행
- 사용자 환경 분석
- 패키징 및 적용 시험
- 패키징 변경 개선
46-2 형상관리의 관리 항목
- 정의 단계의 문서
- 개발 단계의 문서와 프로그램
- 유지보수 단계의 변경사항
47-2. 버전관리도구 Subversion
- 클라이언트/서버 구조, 서버에는 최신 버전과 버전의 변화를 저장
- 클라이언트에서는 서버의 자료를 복사해와 작업한 후 변경된 내용을 서버에 반영(commit)
- 모든 개발 작업은 trunk 디렉터리에서 수행되며, 부가적인 추가작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업을 완료한 후 trunk 디렉터리의 작업과 병합한다
- 커밋완료시 번호를 달리하여 표시한다. (Git 영,숫자 혼합 40자리)
47-4. 버전관리도구 Subversion 명령어
- add: commit을 수행할 버전 관리 대상 등록
- update: 최신 commit 이력을 소스 파일에 적용
- import: 아무것도 없는 서버의 저장소에 맨 처음 소스파일을 저장
- export: 서버에서 버전 관리를 위한 내용을 제외한 순수한 소스파일만 받아옴
- checkout: 서버에서 클라이언트로 버전관리를 위한 내용과 소스파일을 받아옴
47-5. 버전관리도구 Git 명령어
- branch: 새로운 브랜치를 생성하거나 삭제
- push: 로컬 저장소의 변경 내역을 원격 저장소에 반영
- clone: 원격 저장소의 전체 내용을 지역 저장소로 복제
- merge: 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영한다.
- fork: 지정한 원격저장소의 내용을 자신의 원격 저장소로 복제한다.
47-6. Jenkins와 Gradle
- 빌드, 테스트, 배포 과정을 자동화하는 도구
- Jenkins는 GUI, Gradle: CLI
- Gradle: Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용
- Gradle: 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행
- Jenkins: 태스크의 재사용이나 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능이 지원됨
예상문제
2. 패키징 과정에서 수행하는 작업
- 모듈화: 확인된 기능 단위로 코드를 분류하는 것
- 빌드: 모듈 단위별로 실행파일을 만듬
- 기능 식별: 작성된 코드의 기능을 확인
- 적용 시험: 정의된 환경과 동일한 환경에서 패키징 결과를 테스팅
- 배포: 배포 수행시 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청
4. 릴리즈 노트 작성 과정
- 모듈 식별
- 릴리즈 정보 확인
- 릴리즈 노트 개요 작성
- 영향도 체크
- 정식 릴리즈 노트 작성
- 추가 개선 항목 식별
8. 소프트웨어 사용자 매뉴얼 작성 과정에서 수행하는 작업
- 기능 식별: 소프트웨어의 개발 목적과 사용자 활용 기능을 흐름 순으로 정리하여 기록
- 사용자 환경 파일 확인: 폴더 위치, 사용자 로그 파일, 백업 파일 등의 개별적인 기능을 확인하여 기록
- 이상 Case 확인인: 소프트웨어 사용 과정에서 발생할 수 있는 다양한 이상 Case 를 만들어 확인하고 해당 Case 에 대한 대처법을 자세하게 기록
- 초기화 절차 확인 과정: 프로그램에 사용하기 위한 초기화 절차를 확인하고 그 단계를 순서대로 기록
- 최종 매뉴얼 적용: faq, 고객 지원
10. 소프트웨어의 일반적인 버전 등록 과정
- 가져오기 Import
- 인출 Check-Out
- 예치 Commit
- 동기화 Update
- 차이 Diff