본문 바로가기
728x90
반응형

source-code/software37

소프트웨어 장인 정신 이야기 (2) 2024.05.07 - [source-code/software] - 소프트웨어 장인 정신 이야기 (1)3장. 고급 테스트 주도 개발단계마다 테스트는 더욱더 제한적이고 구체적으로 바뀌는 반면, 제품 코드는 점점 더 일반화된다. 이 과정은 제품 코드가 너무 일반적이어서 실패하는 테스트를 더 이상 생각해 낼 수 없을 때까지 계속된다. 그러면 문제가 모두 풀린 것이다. 복잡한 문제일 수록, 단순한 공리(실패하는 테스트 코드)에서 출발해야 한다.한 번에 한 단계씩, 제품 코드를 구현하고, 리팩터링 하고, 다음 테스트 케이스를 작성해야 한다. 하지만... 모든 경우에 이러한 주기를 적용하는 게 어렵지 않을까?가장 대표적인 예시가 → 요구사항이 너무 복잡해서, 한 번에 모든 구현을 작성하지 않으면 테스트 케이스가 통.. 2024. 5. 9.
소프트웨어 장인 정신 이야기 (1) 1장. 장인 정신...이 연대표를 항공학 연대표와 비교해 보자. 비슷한 점을 찾을 수 있는가? 이론의 단계적인 발전, 마니아들이 성급한 도전과 실패, 역량의 단계적인 발전이 보이는가? 우리가 무엇을 하는지도 몰랐던 수십 년의 기간이 보이는가?...오늘날의 항공기 조종사들만큼이나 자기 기술을 깊이 이해하는 프로그래머를 양성해 왔는가? 분명히 장인이 필요한데 우리에게는 장인이 있는가? 항공학 역사를 소개하며, 장인 정신의 필요성을 강조한 구문이 굉장히 인상 깊었다. 프로그래밍 역시 (항공학과 유사하게) 인류의 삶에 밀접하게 연관되어 있으며빠른 속도로 발전했고명확한 장인 정신이 구축되지 않은 상태로 사용되었으며이로 인해 불필요한 시행착오들이 반복되고 있다 는 것!즉... 오늘날의 항공학이 '안전하게 비행기를 .. 2024. 5. 7.
[jest] jest dom을 통한 DOM 객체 동작 테스트 하기 Backgrounds 현재 개발 중인 서비스에서는 사용자가 생성한 데이터를 통해 웹 페이지에서 특정 요소(HTMLElement)를 조회하는 기능을 제공하고 있습니다. 이때 해당 요소를 찾는 알고리즘이 제법 복잡하고 예외 케이스가 많이 발생해, 코드를 수정할 때마다 고객사 페이지에 직접 접속해 정상 동작 여부를 확인하는 불편함이 존재했습니다. 그리고 이로 인해 1) 개발 소요 시간 증대 2) 적극적인 리팩토링 어려움 (수정이 발생하면, 기존 잘 되던 케이스가 안될 것이라는 두려움) 과 같은 문제들이 발생했습니다. Solutions 최선의 방안은 모든 고객사 페이지를 자동으로 크롤링하면서, 로직이 정상 동작하는지 확인하는 것이겠으나... 하루아침에 이 정도의 자동화 테스트를 도입하기엔 현실적인 무리가 있었습.. 2024. 4. 10.
단위 테스트 - 고전파와 런던파, 그리고 개인적인 견해 Backgrounds사내 package를 개발하며 테스트 코드를 작성하던 도중, 이런 일이 있었습니다. 입력받은 데이터를 서비스 내부 정책에 따라 필터링하는 모듈이 존재했고, 해당 모듈은 내부 정책 관련 로직을 처리하는 다른 모듈을 의존성으로 주입받고 있었습니다.class Module { filterPoliciy: Policy constructor (filterPoliciy: Policy) { this.filterPoliciy = filterPoliciy } filter(data:Data): Data | null { // 해당 메서드 내부적으로 Policy interface 사용 ...this.filterPoliciy.isIdExist() } } 아래와 같은 형태로 테스트 코드를 작성했습니다.descri.. 2024. 3. 28.
추상 팩토리(Abstract Factory) 패턴 추상 팩토리 패턴이란? 추상 팩토리는 객체의 인스턴스 생성에 관여하며, 클래스 정의와 객체 생성 방식을 구조화/캡슐화하는 생성 패턴의 한 종류이다. 서로 연관되거나 의존적인 객체의 집합을 생성하기 위한 인터페이스를 제공해 구체적 클래스에 의존하지 않음으로써, 새로운 객체 생성 로직의 추가나 변경 사항에 쉽게 대응할 수 있다. 사용 예제 다음과 같은 요구 사항이 있었다. 1. DB에 Template이라는 table이 존재한다. (사용자가 입력한 여러 데이터로 구성) 2. 각 Template은 type이라는 속성을 갖는다. 해당 속성을 통해 Template의 종류를 구분한다. ex) modal, tool-tip... 3. 각 Template은 type에 따라 각기 다른 형태의 HTMLElement를 갖는다 .. 2023. 11. 8.
[정보처리기사 실기] 결합도 / 응집도 결합도 서로 다른 모듈 간 상호 의존 하는 정도 또는 두 모듈 사이의 연관된 관계 데이터 결합도 (Data Coupling) 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도 스탬프 결합도 (Stamp Coupling) 모듈 간의 인터페이스로 배열, 레코드 등의 자료 구조가 전달될 때의 결합도 제어 결합도 (Control Coupling) 모듈 간의 인터페이스로 데이터를 어떻게 처리해야 하는지를 결정하는 제어 요소가 전달될 때의 결합도 외부 결합도 (External Coupling) 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 공통 결합도 (Common Coupling) 인터페이스가 아닌, 모듈 밖에 선언된 전역 변수를 참조, 갱신하는 식으로 상호작용할 때의 결합.. 2023. 10. 1.
[정보처리기사 실기] C언어 printf 출력 형식 C언어 → 줄바꿈 없을 경우 기본적으로 한 줄 출력 2020 기출 1회 14번 #include main() { int c=1; switch(3){ case 1:c+=3; case 2:c++; case 3:c=0; case 4:c+=3; case 5:c-=10; default : c--; } printf("%d",c); } 더보기 -8 1회 20번 #include void align(int a[]){ int temp; for(int i=0;i age); } 더보기 Lee 38 구조체 **insa**를 정의하고 **name**과 age 두 개의 멤버를 가지고 있습니다. 구조체 배열 **a**를 초기화하고 이름과 나이를 번갈아가며 초기화합니다. 구조체 포인터 **p**를 선언하고 a 배.. 2023. 9. 27.
[정보처리기사 실기] 인터페이스 구현 미들웨어 솔루션 운영체제와 응용 프로그램, 또는 서버와 클라이언트 사이에서 다양한 서비스를 제공하는 소프트웨어 표준화된 인터페이스를 제공함으로써, 시스템 간의 데이터 교환에 일관성을 보장 DB (Data Base) 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하는 미들웨어 RPC (원격 프로시저 호출) 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 미들웨어 MOM (메시지 지향 미들웨어) 메시지 기반의 비동기형 메시지를 전달하는 미들웨어 주로 이기종 분산 데이터 시스템의 데이터 동기를 위해 사용 TP-Monitor (트랜잭션 처리 모니터) 트랜잭션을 처리 및 감시하는 미들웨어 사용자 수가 증가해도 빠른 응답 속도를 유지해야하는 업무(항공기, .. 2023. 9. 21.
[정보처리기사 실기] 소프트웨어 개발 보안 구축 Secure SDLC 정의 보안상 안전한 소프트웨어 개발을 위해, 기존 소프트웨어 개발 생명주기(SDLC)에 보안 강화를 위한 프로세스를 포함한 것 (SDLC : 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수) 대표적 방법론 SW 개발 보안 요소 기밀성, 무결성, 가용성 → 보안의 3대 요소 암호 알고리즘 양방향 개인키(대칭키) 동일한 키로 데이터 암복호화 암복호화 속도가 빠르지만, 관리해야할 키의 수가 많음 공개키(비대칭키) 암호화 할 때 사용하는 공개키는 사용자에게 공개, 복호화 할 때의 비밀키는 공개X 관리해야할 키의 수가 적지만, 암복호화 속도가 느림 대표적 기법 → RSA, ECC, 디피 헬만, EIGamal 단방향 해시(Hash) 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값.. 2023. 9. 18.
728x90
반응형