1. TDD에 관한 조사 A. 테스트 주도 개발이란? 테스트 주도 개발(test-driven development, TDD)은 소프트웨어 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 다시 말해 먼저 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식을 말한다.[1] TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최소한으로 코드를 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링 하는 과정을 거친다.[2]TDD를 잘 사용하면, 전체 코드를 완성하기 전에 기능 단..
IPFS란? IPFS는 파일, 웹 사이트, 응용 프로그램 및 데이터를 저장하고 액세스하기 위한 분산 시스템이다. 먼저, 땅돼지 연구를 하고 있다고 가정보자. 우선, 땅돼지의 위키백과 페이지를 방문하는 것으로 시작한다. https://en.wikipedia.org/wiki/Aardvark Aardvark - Wikipedia Medium-sized, burrowing, nocturnal mammal native to Africa The aardvark ( ARD-vark; Orycteropus afer) is a medium-sized, burrowing, nocturnal mammal native to Africa.[2][3] It is the only living species of the order ..
brew unistall mysql을 통해서 Mysql을 지우고 다시 깔았지만, 비밀번호는 그대로 남아있어서 사용이 불가능했었다. 우선 실행중인 상태의 Mysql 서버를 종료시켜준다. mysql.server stop 다음 비밀번호 없이 mysql에 접속하기 위하여, 아래 명령어를 입력해준다. mysqld_safe --skip-grant-tables 다음 root유저로 Mysql에 접속하여 준다. mysql -u root 다음 mysql db를 사용하도록 설정한다. use mysql; 다음 비밀번호를 null로 초기화 시켜준다. UPDATE user SET authentication_string=null WHERE User='root'; 다음 권한을 업데이트해준다. FLUSH PRIVILEGES; 다음 e..
RDB를 너무 오랫만에 사용하다보니 비밀번호와 세팅을 모두 까먹어버렸다. 찾는거 보다 지우고 다시 까는 것이 빠를 것 같아서, mysql을 재설치 해보려고 한다. M1 mac에 설치할 예정이다. 당연히 맥북을 사용하면, brew를 통해서 mysql을 설치해준다. brew instll mysql 정말 간단하게 설치 되는 것을 확인 할 수 있다. 다음으로 설치가 잘 되었는지를 확인하기 위해서, mysql을 실행시켜보자. mysql.server start 성공적으로 잘 실행되는 것을 확인할 수 있다.
MDE를 활용한 사례 중, Lockheed Martin의 항공 소프트웨어 사례를 분석해보면, F-16을 개발하기 위해서 OMG의 MDA를 활용하여, 여러 플랫폼에 사용이 가능하고 생산성과 품질을 높이는 소프트웨어 개발을 하였다. 이때, 사용한 툴은 Kennedy Carter’s iCCG, UML, MDA(OMG)를 사용했다. F-16은 다음과 같은 소프트 웨어 아키텍처를 가지고 있었다.[1] 이때, Application Software가 전체 소프트웨어의 80~90%를 차지하고 있었고, 아래 Hardware, Software Execution Platform, Application Software Interface는 자주 변경되는 부분이였다. 따라서, 하위의 Application Software Inte..
위의 그림은 소프트웨어 품질 생명주기를 나타낸 그림이다. 소프트웨어 제품 품질을 달성하기 위해 소프트웨어 제품을 평가하는 것은 소프트웨어 개발 생명주기의 한 과정이다. 소프트웨어 제품 품질은 내부 속성을 측정함으로써, 혹은 외부 속성에 의해 평가될 수 있으며, 그 목적은 특정한 사용용도에서 요구한 효과를 내도록 하는 것이다. 프로세스 품질 개선은 제품 품질의 개선을 가져오고, 제품 품질은 사용 품질의 개선을 가져온다. 그러므로, 프로세스를 평가하고 개선하는 것이 중요하다. 따라서, 적절한 품질 평가 프로세스는 개발 동안에 품질측정하는데 필요하다. ISO/IEC 9126의 이 부분은 품질과 관련된 문제점에 대한 점검표를 제시한다. ISO/IEC 9126은 총 4개의 부분으로 나누어져 있으며 ISO/IEC ..
i. 테스트를 위한 함수 작성하기 ii. 스위트 선언 iii. 테스트 레지스터리를 초기화 iv. 테스트 레지스터리에 스위트를 추가 v. 스위트에 테스트 추가 vi. 적절한 인터페이스 선택후 실행 테스트 vii. 테스트 레지스터 정리 테스트 진행할 코드 두 값을 더하는 add함수의 테스트를 진행해보자. int add(int a,int b){ return a+b } 1. 테스트를 위한 함수 작성하기-간단하게 더하기 함수를 작성하였다 CU_ASSERT_EQUAL([함수(,)], [예측값])를 이용하여 함수와 예측값을 넣어준다. void testAdd(void){ CU_ASSERT_EQUAL(add(1,1),2); } 2. 스위트 선언하기 CU_Psuite를 통해서 스위트를 선언해준다. CU_pSuite sui..
"가장 기본적인 실행 단위"는 C언어에서 함수(Function)에 해당한다.Unit Test Automation은 두가지로 구분된다. Blackbox Testing과Whitebox Testing으로 나뉜다. Black box testing 블랙박스 검사는 소프트웨어 검사 방법 중 하나로 어떤 소프트웨어를 내부 구조나 작동 원리를 모르는 상태에서 소프트웨어의 동작을 검사하는 방법을 이르는 말이다. 주로 올바른 입력과 올바르지 않은 입력을 일일이 다 동원하여 올바른 출력을 판별하는 방식으로 검사가 이루 어지기 때문에 검사의 진행에 있어 대상이 되는 소프트웨어의 코드나 내부 구조 및 개발 노하우에 대한 정보는 기본적으로 필요로 하지 않는다. 필요한 것은 특징, 요구 사항, 검사를 위해 공개된 설계도 등 대외적..
CMMI는 소프트웨어와 시스템 공학의 역량 성숙도를 평가하는 모델이다. CMMi와 유사한 국내의 평가모델로는 SP인증이 있다. 소프트웨어 프로세스 품질인증(SP인증)은 소프트웨어산업진흥법 제23조에 근거하여 국내 소프트웨어 기업의 소프트웨어 사업 수행능력을 강화하고 소프트웨어 사업의 부실방지를 목적으로 기업의 소프트웨어 개발단계별 작업절차 및 산출물 관리 역량 등을 분석하여 소프트웨어 개발 프로세스 역량 수준을 평가 및 인증하는 제도이다. SP인증은 대기업에 비해 상대적으로 열악한 환경에 처해있는 중소기업의 소프트웨어 품질개선 활동을 지원하고자 만들어진 제도로 CMMI를 참조하여 개발되었으나, 중소기업에서 보다 수월하게 활용할 수 있도록 내용을 축약하였다.[1] 과학기술정보통신부에서 정책을 지원, 관리,..
Requirements의 구분 -FR(Functional Requirement) : Statements of services the system should provide -NFR(Non Functional Requirement)(Quality) : 전체 시스템이 나왔을 때 판별이 가능하다. Quality가 대표적이며, 이외에는 Safetym Security, Reliablility등이 있다. NFR이 FR보다 중요한 경우가 존재한다. NFR은 전체 시스템의 아키텍처 디자인에 영향을 끼치며, NFR을 정의하는 과정에서 많은 FR들이 생겨난다. -User Requirements(User로 부터 도출되고 User-Level에서 정해진다, High-Level) : 다양한 Stackholder가 관여한다. 대체..
윈도우에서 개발 도중 특정 포트가 종료되지 않았을 때 다시 프로그램을 실행하면 에러가 발생한다. 다음 명령어를 통해서 연결된 포트 확인이 가능하다. netstat -ano -a : 모든 포트를 표시 -n : "IP주소:포트" ex) 192.168.0.100:8080 -o : PID 표시 taskkill /f /pid [PID] 위의 명령어로 PID에 해당하는 프로세스를 죽일 수 있다. 이때 netstat -o 명령어를 통해 확인한 pid를 입력하여 죽일 수 있다. taskkill /f /im explorer.exe 이 명령어를 통해서는 프로그램 이름으로 프로세서를 죽일 수 있다. 이를 응용하여 3000번 포트를 사용하는 프로세스를 죽이는 bat파일을 만든다면 다음과 같이 사용할 수 있다. netstat ..
CUnit은 C로 작성된 소스에 대해서 Unit Test를 지원해주는 라이브러리이다. . C unit은 어떤 함수의 리턴값이 예상한 값과 맞는지 블랙박스 테스트를 하기 용이하다.CUnit의 테스트 구조는 Registry 있고 Registry 안에 Suite가 있고 그 내부에 Test들이 존재하는 구조를 가진다. Cunit에서 사용되는 헤더 파일 #include 테스트 케이스에 사용하기 위한 ASSERT 매크로 #include xml 출력이 있는 자동화된 인터페이스. #include 함수 및 데이터 유형 오류 처리 #include stdout에 대한 비대화형 출력이 있는 기본 인터페이스. #include 테스트 레지스트리, 제품군 및 테스트..
Google 테스트(gtest라고도 함)는 xUnit 아키텍처를 기반으로 하는 C 프로그래밍 언어용 단위 테스트 라이브러리이다. 가이드는 이곳을 참고하면 된다. https://google.github.io/googletest/ 설치의 같은 경우 아래 링크를 참고해서 설치하였다. https://github.com/google/googletest/tree/main/googletest git clone https://github.com/google/googletest.git -b release-1.11.0 cd googletest # Main directory of the cloned repository. mkdir build # Create a directory to hold the build output...
모바일로 학교 홈페이지 들어가면 공지사항 맨날 잘린다. 들어가서 일일이 확인하기도 귀찮고, 눈에도 잘 안들어와서 아이폰 단축어로 학교 공지사항을 가져올 수 있도록 만들었다. 단축어 공유 링크를 연결하여 해당 공지사항을 상세히 볼 수 있도록 하였다. 건국대학교 공지사항 단축어 https://www.icloud.com/shortcuts/16998bd521a1492dbcb0c02ba0ab212a 학교 웹사이트 Html을 가져와서 정규표현식으로 파싱해서 만들었다. 단축어 만들기 1. 학교 공지사항 URL 가져오기 학교 공지중에서 크게 의미 있는 공지는 학사공지, 장학공지, 취/창업 공지, 학생공지, 국제공지 정도 였기에 우선적으로 각각 개별 목록으로 만들고 크롬을 통해서 각각의 공지마다 URL을 찾았다. ifr..
MySQL If문 SELECT IF (1 > 2, '1는 2보다 크다.', '1은 2보다 작다.'); MySQL IFNULL문 IFNULL(A,B)은 A가 NULL일 시 B를 출력한다. SELECT IFNULL('A', 'B'), IFNULL(NULL, 'B'); MySQL CASE문 SELECT CASE WHEN -1 > 0 THEN '-1은 양수다.' WHEN -1 = 0 THEN '-1은 0이다.' ELSE '-1은 음수다.' END; MySQL 조건에 따라 집계된 값 받아오기 GROUP BY는 조건에 따라 집계된 값을 가져온다. SELECT Country, City, CONCAT_WS(', ', City, Country) FROM Customers GROUP BY Country, City; GRO..