목차
💡 주요 키워드 ? 단위 기능 명세서, IPC, 테스트 케이스, 단위 모듈 테스트, 테스트 프로세스, IDE, 빌드 도구, 단위 모듈, Ant, Maven
📌 단위 모듈은 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것이다.
📌 단위 기능 명세서는 설계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서들을 의미한다.
📌 입/출력 기능 구현 단계에서는 단위 기능 명세서에서 정의한 데이터 형식에 따라 입/출력 기능을 위한 알고리즘 및 데이터를 구현한다.
💡 CLI(Command Line Interface) : CLI는 Telnet이나 DOS와 같이 키보드를 통해 명령어를 입력 받는 사용자 인터페이스이다.
💡 GUI(Graphical User Interface) : GUI는 윈도우나 MacOS와 같이 키보드뿐만 아니라 마우스 등의 도구를 통해 화면의 아이콘, 메뉴 등의 다양한 그래픽적 요소로 명령을 입력 받는 사용자 인터페이스(UI)이다.
💡 Open Source : Open Source는 일정한 조건을 준수하면 누구나 무료로 사용, 수정, 재배포가 허가되는 소스 코드이다.
📌 IPC는 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합으로, 복수의 프로세스를 수행하며 이뤄지는 프로세스 간 통신까지 구현이 가능하다.
Shared Memory | 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행한다. |
Socket | 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스들간 통신을 수행한다. |
Semaphores | 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행한다. |
Pipes & baned Pipes | - 'Pipe'라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행한다. - 하나의 프로세스가 Pipe를 이용 중이라면 다른 프로세스는 접근할 수 없다. |
Message Queueing | 메시지가 발생하면 이를 전달하는 형태로 프로세스 간 통신을 수행한다. |
📌 알고리즘 구현 단계에서는 입/출력 데이터를 바탕으로 단위 기능별 요구 사항들을 구현 가능한 언어를 이용하여 모듈로 구현한다.
디바이스 드라이버 모듈 | 하드웨어 주변 장치의 동작을 구현한 모듈 |
네트워크 모듈 | 네트워크 장비 및 데이터 통신을 위한 기능을 구현한 모듈 |
파일 모듈 | 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈 |
메모리 모듈 | 파일을 프로세스의 가상 메모리에 매핑/해제하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈 |
프로세스 모듈 | 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈 |
📌 단위 모듈 테스트는 프로그램의 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것이다.
💡 화이트박스 테스트 : 모듈의 소스 코드를 오픈 시킨 상태에서 소스코드의 모든 논리적인 경로를 테스트하는 방법이다.
💡 블랙박스 테스트 : 소프트웨어가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트이다.
📌 테스트 케이스는 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서로 명세 기반 테스트의 설계 산출물에 해당된다.
식별자(Identifier) | 항목 식별자, 일련 번호 |
테스트 항목(Test Item) | 테스트 대상(모듈 또는 기능) |
입력 명세(Input Specification) | 입력 데이터 또는 테스트 조건 |
출력 명세(Output Specification) | 테스트 케이스 수행 시 예상되는 출력 결과 |
환경 설정(Environmental Needs) | 필요한 하드웨어나 소프트웨어의 환경 |
특수절차 요구 | 테스트 케이스 수행 시 특별히 요구되는 절차 |
의존성 기술 | 테스트 케이스 간의 의존성 |
💡 명세 기반 테스트 : 명세 기반 테스트는 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 것으로, 테스트의 수행 증거로도 활용된다.
📌 테스트 프로세스는 테스트를 위해 수행하는 모든 작업들이 테스트의 목적과 조건을 달성할 수 있도록 도와주는 과정이다.
💡 테스트 시나리오 : 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합으로 테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서를 의미한다.
💡 테스트 프로시저 : 테스트 케이스의 순서를 의미하며, 테스트 스크립트(Test Script)라고도 불린다.
📌 통합 개발 환경은 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램에서 처리할 수 있도록 제공하는 소프트웨어적인 개발 환경을 말한다.
프로그램 | 개발사 | 플랫폼 | 운영체제 | 지원 언어 |
이클립스 | Eclipse Foundation, IBM | 크로스 플랫폼 | Window, Linux, MacOS 등 | Java, C, C++, PHP, JSP 등 |
비주얼 스튜디오 (Visual Studio) |
Microsoft | Win32, Win64 | Winows | Basic, C, C++, C#, .NET 등 |
엑스 코드(Xcode) | Apple | Mac, iPhone | MacOS, iOS | C, C++, C#, Java, AppleScript 등 |
안드로이드 스튜디오 (Android Studio) |
Android | Wndows, Linux, MacOS | Java, C, C++ | |
IDEA | JetBrains (이전 IntelliJ) |
크로스 플랫폼 | Windows, Linux, MacOS | Java, JSP, XML, Go, Kotlin, PHP 등 |
💡 크로스 플랫폼은 여러 종류의 시스템에서 공통으로 사용될 수 있는 소프트웨어로, 멀티 플랫폼이라고도 한다.
코딩(Coding) | C, JAVA 등의 프로그래밍 언어로 프로그램을 작성하는 기능이다. |
컴파일(Complie) | 개발자가 작성한 고급 언어로 된 프로그램을 컴퓨터가 이해할 수 있는 목적 프로그램으로 번역하여 컴퓨터에서 실행 가능한 형태로 변환하느 기능이다. |
디버깅(Debugging) | 소프트웨어나 하드웨어의 오류나 잘못된 동작, 즉 버그(Bug)를 찾아 수정하는 기능이다. |
배포(Deployment) | 소프트웨어를 사용자에게 전달하는 기능이다. |
📌 빌드는 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물을 말한다.
Ant(Another Neat Tool) | - 아파치 소프트웨어 재단(Apahe Software Foundation)에서 개발한 소프트웨어로, 자바 프로젝트의 공식적인 빌드 도구로 사용되고 있다. - XML 기반의 빌드 스크립트를 사용하며, 자유도와 유연성이 높아 복잡한 빌드 환경에도 대처가 가능하다. - 정해진 규칙이나 표준이 없어 개발자가 모든 것을 정의하며, 스크립트의 재사용이 어렵다. |
Maven | - Ant와 동일한 아파치 소프트웨어 재단에서 개발된 것으로 Ant의 대안으로 개발되었다. - 규칙이나 표준이 존재하여 예외 사항만 기록하면 되며, 컴파일과 빌드를 동시에 수행할 수 있다. - 의존성(Dependency)을 설정하여 라이브러리를 관리한다. |
Gradle | - 기존의 Ant와 Maven을 보완하여 개발된 빌드 도구이다. - 한스 도커(Hans Dockter)외 6인의 개발자가 모여 공동 개발하였다. - 안드로이드 스튜디오의 공식 빌드 도구로 채택된 소프트웨어이다. - Maven과 동일하게 의존성을 활용하여, 그루비(Groovy)기반의 빌드 스크립트를 사용한다. |
💡 전처리 ? 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정을 말한다.
💡 XML ? W3C(World Wide Web Consortium)가 채택한 인터넷 표준 언어로, 인터넷 환경에 적합하도록 구성된 메타 언어이다.
※ 메타 언어 : 프로그램 언어의 규칙을 기술하는데 사용하는 언어
💡 의존성 (Dependency) ? Maven이나 Gradle에서 라이브러리를 관리할 때 사용하는 명령어로, 빌드 스크립트 안에 사용하고자 하는 라이브러리를 <dependency> 예약어로 등록하면, 빌드 수행 시 인터넷 상의 라이브러리 저장소에서 해당 라이브러리를 찾아 코드에 추가해 준다.
💡 그루비(Groovy) : 그루비는 자바를 기반으로 여러 프로그래밍 언어들의 장점을 모아 만들어진 동적 객체지향 프로그래밍 언어이다.
📌 협업 도구는 개발에 참여하는 사람들이 서로 다른 작업 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구(Tool)로, 협업 소프트웨어, 그룹웨어(Groupware) 등으로도 불린다.
프로젝트 및 일정 관리 | - 전체 프로젝트와 개별 업무들의 진행 상태, 일정 등을 공유하는 기능을 제공한다. - 종류 : 구글 캘린더(Google Calendar), 분더리스트(Wunderlist), 트렐로(Trello), 지라(Jira), 플로우(Flow) 등 |
정보 공유 및 커뮤니케이션 | - 주제별로 구성원들을 지목하여 방을 개설한 후 정보를 공유하고 대화하는 것이 가능하다. - 파일 관리가 간편하고, 의사소통이 자유로운 것이 특징이다. - 종류 : 슬랙(Slack), 잔디(Jandi), 테스트월드(Taskworld) 등 |
디자인 | - 디자이너가 설계한 UI나 이미지의 정보들을 코드화하여 개발자에게 전달하는 기능을 제공한다. - 종류 : 스케치(Sketch), 제플린(Zeplin) 등 |
기타 | - 아이디어 공유에 사용되는 에버노트(Evernote) - API를 문서화하여 개발자들 간 협업을 도와주는 스웨거(Swagger) - 깃(Git)의 웹 호스팅 서비스인 깃허브(GitHub) |
📌 제품 소프트웨어 패키징 - 디지털 저작권 관리(DRM)/설치 매뉴얼 작성 (0) | 2024.02.05 |
---|---|
📌 제품 소프트웨어 패키징 - 릴리즈 노트 작성 (0) | 2024.02.05 |
📌 데이터 입, 출력 구현 - 데이터 입, 출력/절차형 SQL (0) | 2024.02.05 |
📌 데이터 입, 출력 구현 - 데이터베이스 개요 (0) | 2024.02.05 |
📌 데이터 입, 출력 구현 - 검색 : 이분 검색/해싱 (4) | 2024.02.05 |