Cohe

20240419 TIL 본문

개발 이모저모/TIL

20240419 TIL

코헤0121 2024. 4. 19. 20:19
728x90

Fact

- 학원 다녀옴

- 신촌 카공 완료

 

Feeling

진짜 구라 안치고 너무너무너무 피곤하다. 어떻게 사람이 매일 같이 밖에 나가는거지??

Findings 

1.요구 사항 확인
- 소프트웨어 생명 주기 모델 : 요분설구테유
- 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복적 모델
- 개발 방법론 : 구조적, 정보공학, 객체 지향, 컴포넌트 기반, 애자일, 제품 계역 방법론
- 애자일 : xp(짝 프로그래밍, 메타포어), 스크럼, 린(칸반)
- 객체지향 : solid
- 소프트웨어 아키텍처 4+1뷰 : 유스케이스 뷰, 논리뷰, 프로세스 뷰, 규현 뷰, 배포 뷰
- 소프트웨어 아키텍처 패턴 : 계층화, 클라이언트 서버, 파이프 - 필터, 브로커, MVC
- 비용 평가 비용 평가 모델 : SAAM, ATAM, CBAM, ADR, ARID
- 디자인 패턴 : 생성 구조 행위
- 요구공학 : 기능적 요구사항, 비기능적 요구사항
- 개발 단계 : 도출 (인터뷰, 브레인 스토밍, 델파이, 롤플레잉, 워크숍, tjfanswhtk)-> 분석 -> 명세(비정형 명세, 정형 명세 기법) -> 확인 및 검증(인스펙션, 워크스루)

2. 화면 설계
- UI 설계 원칙 : 직관성, 유효성, 학습성 유연성
- 품직 요구사항 : 기능성(적절성, 정밀성, 상호 운용성, 보안성, 호환성), 신뢰성(성숙성, 고장 허용성, 회복성). 사용성(이해성, 학습성, 운용성), 효율성(시간 효율성, 자원 효율성), 유지보수성(분석성, 변경성, 안정성, 시험성) 이식성(적용성, 설치성, 대체성)
- 스토리 보드 : 와이어프레임, 스토리보드, 프로토타입
- UML : 사물 관계 다이어그램

3. 데이터 입출력 구현

4. 통합 구현

- 연계 메커니즘이란? 그 결과의 값을 계속 이어감 -> 연결과는 다름
- 연계 방식 : 직접 연계, 간접연계

- 중요 연계 기술
- 직접 연계:
- DB 링크 : Db 링크를 직접 참조하는 방식 : 테이블명@DBLink명
- DB 연결 : 커넥션 풀을 생성, 송신 시스템의 Data Source = DB Connection, 계속 유지하고 사용함
-> session은 연결을 유지관리하는 계층이라고 이야기 함
- API/Open API
- JDBC : JDBC 드라이버를 이용하여 송신 시스템과 DB 연결
- 하이퍼 링크 : 다른 페이지로 이동,
- 간접 연계:

- 연계 솔루션 EAI : 기업 솔루션, 어댑터 이용
구성 요소 : EAI 플랫폼, 어댑터, 브로커(전송시 데이터 변환), 메시지 큐(비동기 메시지 시 송수신 도맡음), 비즈니스 워크블로우
구축 유형 : 포인트 투 포인트(기초적임, 1:1), 허브 앤 스포크(단일 접점 허브 사용), 메시지 버스(버스를 이용, 미들웨어, 하이브리드(그룹 내 허브 앤 스포크, 외부는 메시지 버스)

- WebService /ESB : 웹서비스가 설명된 WSDL과 SOAP 프로토콜 이용, 기업내는 맞으나, Bus를 사용하는 것이 특징!!!

- 웹서비스 방식 : 네트워크 분산 정보를 서비스 형태로 개발함
용어 : HTTP, 하이퍼텍스트, HTML
유형 : SOAP(xml 기반의 메시지를 네트워크 상태에서 교환), WSDL(웹 서비스에 대한 상세 정보 기술된 xml 형식), UDDI(WSDL을 등록하고 검색하기 위한 저장소)
- IPC 개념
: 운영체제에서 프로세스 간 더로 데이터를 주고받기 위한 통신 기술이다.

- 소켓 (Socket) : 포트 할당, 클라이언트 요청

5. 인터페이스 구현

- 외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별
- EAI(포인트 투 포인트, 허브 앤 스포크, 하이브리드, 메세지 버스), ESB 연계 방법(느슨한 결합 방식으로 지원)

- 외부 및 내부 모듈 간 인터페이스 데이터 표준 확인 : 입 출력 의미 파악 -> 데이터 표준확인 -> 식별된 인터페이스 기능 및 데이터 항목을 통해 필요한 데이터 표준 조절

- 인터페이스 구현 기술 : json(속성-값 쌍, 키-값쌍으로 이뤄짐, AJAX에서 많이 사용되고 xml 대체, 숫자 문자 배열, 객체), xml(html 단점 보완, 마크업 언어, 송수신 시스템 간 데이터 연계의 편의성을 위해 데이터 구조를 동일한 형태로 정의), ajax(자스를 사용하기 위해 서버와 클라간 비동기적으로 xml 데이터를 교환하기 위한 기술, XMLHttpRequest 객체 이용, Dom(xml 문서 -> 트리구조, api, 구조화된 문서를 표현하는 객체 지향 모델), XSLT(xml 문서를 다른 xml 문서로 변환하는데 사용되는 xml 기반언어)), rest(http로 주고받는 웹 아키텍처, 리소스, 메서드, 메시지 요소)

- 인터페이스 보안기능: 시큐어 코딩 가이스(입력데이터 검증 및 표현, 보안 약점, API 오용, 시간 및 상태, 에러처리, 코드오류, 캡슐화 기능), 데베 알고리즘(대칭키(AES, SEED, DES), 비대칭키(RSA, ECC, ECDSA), 해시(SHA, HAS)), 데베 암호화 기법(API 방식(암호 모듈 -api 적용), Plug-in 방식(모듈이 db서버에 설치), TDE(DBMS 커널이 자체적으로 암복호화 기능 수행), Hybrid), 중요 인터페이스 데이터의 암호화 전송(IPSec, SSL/TLS, S-HTTP)

- 인터페이스 구현 검증 도구 : xUnit(단위 테스트 프레임워크), STAF(서비스 호출, 컴포넌트 재사용 테스트 프레임워크), FitNesse(웹 기반 테스트 케이스 설계...), NTAF(Fitness 와 STAF 통합 : 자동화 프레임워크), Selenium(다양한 브라우저 지원 및 개발 언어 지원하는 웹앱 테스트 프레임워크), Watir(루비 기반의 웹 어플리케이션)

- 인터페이스 감시 도구 : 스카우터(DB 모니터링 및 인터페이스 감시 도구), 제니퍼(개발부터 운영까지 생애주기 동안 성능 모니터링 하는 APM )

7. SQL 응용
- 트랜잭션 : DBMS가 가져야 하는 특성, 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위
- 특성 : 원자성(commit/rollback), 일관성(무결성 제약조건, 동시성 제어), 격리성(고립성, read commited, serializable- 직렬화 ), 영속성(회복 기법)
- 상태 변화 : 활동 상태, 부분 완료, 완료, 실패, 철회 상태
- 제어 : 커밋, 롤백, 체크포인트
- 병행 제어 : 데베 일관성을 위해 상호 작용 제어 -> 미 보장시 갱신손실, 현황 파악 오류, 모순성, 연쇄복귀
- 병행 기법 종류 : 로킹(상호배제, 로킹단위 : 데베, 파일, 레코드, 낮을수록 공유도 증가), 낙관적 검증(일단 수행, 종료 이후 검증 수행), 타임 스템프 순서(시간순), 다중버전 동시성 제어(MVCC, 타임스탬프 순서 직렬 가능성 보장되는 적절한 버전 선택)
- 고립화 수준 : 무결성 해치지 않기 위해 잠금을 설정하는 정도
- 고립화 수준 종류 : Read Uncommitted, Read Committed, Repeatable Read, Serializable Read
- 회복 기법 주요 요소 : redo, undo
- 회복 기법 종류 : 로그기반 회복 기법(지연 갱신 회복 기법, 즉각 갱신 회복 기법), 체크 포인트 회복 기법(checkpoint 이후에 처리), 그립자 페이징 회복 기법(복제본 생성)

- DDL : 데이터 정의어, 대상은 도메인, 스키마, 테이블, 뷰, 인덱스, 외부 개념 내부 스키마
- DDL 명령어 : create(CREATE TABLE 테이블명 (컬럼명 데이터타입 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK(조건식), DEFAULT 값);), alter(alter table tablename add column datatype [제약조건]), drop(drop table tablename cascade | restrint), truncate(내용 삭제)
- 뷰, 인덱스

- dml : 데이터 조작어
- dml 명령어 : select(select from where group by having order by ), insert, update, delete
- dcl : 데이터 제어어, grant, revoke

- 응용 sql 작성하기 : 음~ 포기

- 절차형 sql : 프로시저, 사용자 정의 함수, 트리거
- 옵티마이저의 개념 : DBMS 내부의 핵심엔진, 처리 경로 생성
- RBO(규칙 기반 옵티마이저, 인덱스 구조, 연산자), CBO(비용 기반 옵티마이저, 수행 시간 기반)

8. 서버 프로그램 구현
- 개발환경 구축 : 빌드 구조, 구현 도구, 테스트 도구, 형상 관리 도구
- 하드웨어 개발 환경 : 웹 애필리케이션 서버(동적 콘텐츠, 서블렛), 파일 서버(HDD,SSD 등의 장치가 존재), 데이터베이스 서버, 웹 서버
- 클라이언트 하드웨어 개발환경 : 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹
- 소프트웨어 개발 환경 : 운영체제, 미들웨어, DBMS
- 형상관리 절차 : 형상식별 -> 형상 통제 -> 형상 감사 -> 형상 기록
- 도구 유형 : 공유 폴더 방식, 클라이언트/서버 방식(cvs, svn, rcs), 분산 저장소 방식
- 공통 모듈 구현 : 재사용(재공학, 재개발) => 모듈의 독립성은 결합도(약), 응집도(강)
- 응집도 유형 : 우논시절통순기
- 결합도 유형 : 내공외제스자

- 배치 프로그램 : 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행함(약간 라잌 운영체제)
- 배치 스케줄러의 종류 : 스프링 배치(스케쥴러 배치 어플리케이션), 쿼츠 스케줄러(플러그인 되어 작업)
- Cron 표현식

9. 소프트웨어 개발 보안 구축

- 소프트웨어 개발 보안 설계 : 요명설구테유
- 구성요소 : 기밀성, 무결성, 가용성(인가된 사용자에 대해서만 가능)
- 자산, 위협(해킹, 위조, 유출 등), 취약점, 위험
- 공격 기법
- Dos (tcp 연결 소진) : SYN 플러딩(SYN 패킷만 보냄), UDP 플러딩, 스머프 (출발지 주소를 공격 대상의 ip로 설정), 죽음의 핑(ip 단편화 발생), 랜드어택(출발지와 목적지를 같은 패킷으로 만듦), 티어드롭(ip 패킷 재조합 과정에서 잘못된 fragment offset), 붕크?(똑같은 번호로 전송돼 오류), 보잉(패킷 시퀀스를 비정상적인 상태로 보냄)
- DDos(Dos를 여러 대의 공격자로 배치) 구성요소 : 핸들러, 에이전트(직접 공격을 가함), 마스터(공격 명령 받음), 공격자(에이전트 관리자), 데몬 프로그램(해커의 컴퓨터)
- DDOS 공격 도구 : Trinoo(UDP flood 서비스 거부공격), Tribe Flood Network(TFN 서버들), Stacheldraht
- DDos 공격 대응 방안 : 차단 정책 업데이트, IP 위변조 확인, 좀비 PC IP 확보, 보안 솔루션 운영, 홈페이지 보안 관리, 시스템 패치
- DDos 공격 종류: 대역폭 소진 공격, 서비스 마비 공격

- DRDos 공격 : 출발지 ip를 공격 대상 ip로 위조하여 다수의 반사 서버로 요청정보를 전송, 출발지 ip 변조 -> 공격 대상자 서버로 응답(syn 패킷을 받아서 ack를 전송) -> 서비스 거부, 대응 방안은 isp가 직접 차단 ip와 port번호를 변경 필터링하여 운영

- 세션 하이재킹 : TCP 세션 관리의 취약점을 이용한 공격기법
- 애플리케이션 공격 : HTTP GET 플러딩(과도한 get 메세지 유도), Slowloris(헤더의 끝을 알리는 문자열을 전송하지 않아서 장시간 연결 지속), RUDY(요청 헤더를 비정상적으로 크게 설정함), Slow Read Attack(TCP 윈도 크기를 낮게 설정하여 서버로 전달하여 연결 자원 고갈), Hulk DoS(URL을 지속적으로 변경하여 get 요청 과도 요청)

- 네트워크 공격 : 스니핑(수동적 공격), 네트워크 스캐너(스니퍼, 취약점 파악), 패스워드 크래킹(사전 크래킹- 될 가능성이 있는거 공격, 무차별 크래킹, 패스워드 하이브리드 공격, 레인보우 테이블 공격 - 해시 값), IP 스푸핑, ARP 스푸핑(MAC 정보를 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법), ICMP Redirect 공격(3계층에서 ~), 트로이 목마

- 시스템 보안 위협
- 버퍼 오버플로우 : 스택 버퍼 오버플로우, 힙 버퍼 오버플로우 => 스택가드 활용, 스택 쉴드 활용 ASLR 활용, 안전한 함수 활용
- 백도어 : 인증절차 우회

- 보안 용어 : 스피어피싱(사회공학, 이메일 위장), 스미싱, 큐싱, 봇넷, APT 공격(맞춤형 공격 기법), 공급망 공격(업데이트 시 자동적으로 감염되도록 하는 공격기법), 제로데이 공격(공격의 신속성 의미), 웜(스스로 복제), 악성 봇(스스로 실행되지 못함), 사이버 킬체인(APT 공격 방어 분석 모델), 랜섬웨어, 이블 트윈 공격(wifi로 공격), 사회 공학(심리와 행동 양식을 이용), 트러스트존(구역을 따로 줌), 타이포 스쿼팅(url 하이재킹)
- 서버 인증 유형 : 지식 기반 인증, 소지기반 인증, 생체기반 인증, 특징(행위) 기반 인증
- 서버 접근 통제의 유형 : 임의적 접근 통제(DAC, 신원에 근거하여 접근 제어), 강제적 접근 통제(MAC, 규칙기반 접근 통제), 역할 기반 접근 통제(RBAC, 중앙관리자)

- 3A : 인증, 권한부여, 계정관리
- 인증 관련 기술 : SSO(한 번의 인증 과정으로 여러 컴터에서 가능), 커버로스(티켓 기반 프로토콜)
- 접근 통제 보호 모델 : 벨-라파듈라 모델(기밀성), 비바 모델 (무결성)
- 암호 알고리즘 : 평문, 암호문, 암호화, 복호화, 키, 치환 암호, 전치 암호
- 대칭 키 암호화 : 블록 암호 방식, 스트림 암호 방식 등, DES(미국, 64bit), SEED(한국, 128bit), AES(미국, 128bit), ARIA(128bit, xor), IDEA(des 대체), LFSR(시프트 레지스터), Skipjack (미국, 소프트웨어로 구현을 막음)
- 비대칭 키 암호 방식 : 디피-헬멘(최초의 공개키 알고리즘), RSA(mit 수학 교수), ECC(타원 곡선), Elgalman(이산대수)
- 해시 암호화 알고리즘 : MD5(파일 무결성 검사), SHA-1 (160비트의 해시값)

- 데이터 암호화 전송
- ipsec : 기밀성을 보장하는 암호화, ip 계층에서 인증 보장
- SSL/TLS : 4계층~7계층 사이에서 기밀성 무결성 보장 보안 프로토콜,
- S-HTTP : http에서만 가능, 네트워크 트래픽 암호화

- 입력 데이터 검증 및 표현 취약점 : XSS(Stored XSS , Reflected XSS), CSRF(사이트간 요청 위조), SQL 삽입(Mass SQL Injection, Blind SQL Injection-)

이후는 그냥 틀릴래..ㅠㅠㅠㅠ

10.애플리케이션 테스트 관리

- 소프트웨어 테스트 : 소프트웨어의 결함을 찾아냄, 오류 발견, 오류 예방, 품질 향상 관점
- 기본 원칙 : 결함 존재 증명, 완벽 테스팅 불가능, 초기 집중, 결함 집중(파레토 법칙-> 80:20), 살충제 패러독스, 정황 의존성, 오류-부재의 궤변
- 화이트박스 테스트 : 내부 구조 봄, 구문 커버리지, 결정 커버리지, 조건 커버리지, 조건/결정 커버리지, 변경 조건/결정 커버리지, 다중 조건 커버리지, 기본 경로 커버리지, 제어 흐름 테스트, 데이터 흐름 테스트, 루프 테스트
- 블랙박스 테스트 : 동등분할 테스트, 경곗값 분석 테스트, 결정 테이블 테스트, 상태전이 테스트, 유스케이스 테스트, 분류 트리 테스트, 페어와이즈 테스트, 원인 -결과 그래프 테스트, 비교 테스트, 오류 추정 테스트 => 명세 테스트라고도 함
- 목적에 따른 분류 : 회복, 안전 성능, 구조, 회귀, 병행, 부하, 강도, 스파이크, 내구성
- 종류에 따른 분류 : 명세, 구조, 경험
- 정적테스트 : 리뷰(동료검토, 인스펙션, 워크스루), 정적분석(도구 분석)
- 동적 테스트 : 화이트 박스, 블랙박스 테스트
- 테스트 케이스 항복 : ID, 목적, 기능, 데이터, 결과, 환경, 조건, 성/실 기준, 기타요소
- 테스트 오라클 : 참 거짓 판별을 위해 정의된 참값 입력, 참 오라클, 샘플링 오라클, 휴리스틱, 일관성 검사
- 애플리케이션 테스트 시나리오
- 테스트 레벨 종류 : 단위 테스트(블랙박스, 화이트박스=> 테스트 드라이버, 테스트 스텁), 통합 테스트(하향식 통합(dfs, bfs 사용), 상향식 통합, 샌드위치 통합), 시스템 테스트, 인수테스트(알파, 베타 테스트)
- 테스트 자동화 도구 : 정적분석 도구 (코딩 표준, 코딩 스타일, 코드 복잡도..)
- 테스트 하네스 : 모듈을 테스트 하는 환경의 일부분, 구성 요소 (드라이버, 스텁, 슈트, 케이스, 시나리오, 스크립트, 목 오브젝트)
- 애플리케이션 성능 분석 : 처리량, 응답 시간, 경과 시간, 자원 사용률
- 배드 코드 : 외계인 코드, 스파게티 코드, 알 수 없는 변수명, 로직 중복

11. 응용 sw 기초 기술 활용
- > 운영체제+컴네

12. 제품 소프트웨어 패키징
- 패키징을 위한 모듈 빌드 : 버전관리/릴리즈 노트, 고객 중심, 모듈화
- 모듈 빌드 : Ant, Make, Maven, Grdle 등의 빌드 도구들이 있다.
- 릴리즈 노트 : 헤더, 개요, 목적, 이슈요약, 재현 항목, 수정 개선 내용, 사용자 영향도, 설명, 면책 조항, 연락정보

 

Affirmation

오늘 목표

  • 정처기 간략 정리 완료
  • 집에 가고 싶음

내일 목표

  •