Computer Science15 [Software Engineering] Chapter 11. 테스트 Unit Test -> Integration Test -> Functional Test or System Test or E2E Test (V 모델 참고) 단위 테스트(Unit Test) 가장 적은 테스트 단위. 하나의 독립적인 모듈을 테스트함 에) class, function, component, ... 각 개발자가 구현한 모듈을 직접 테스트 대표적인 단위 테스트 툴 : JavaScript(Karma, Jasmine, Jest, Mocha ...), Java(JUnit), React(react-testing-library) 통합 테스트(Integration Test) 단위 테스트를 통과한 모듈을 대상으로 하는 테스트 여러 모듈의 상호작용을 확인하기 위한 테스트 (즉, 전체적으로 잘 동작하느지를 확인) 단.. 2023. 2. 25. [Software Engineering] Chapter 10. 코딩 컨벤션 및 네이밍 컨벤션 Coding Convention 이란? 특정 프로그래밍 언어별로 권장되는 프로그래밍 스타일이나 방법 등을 포함한 가이드라인 파일(디렉토리) 구조, 들여쓰기, 주석, 선언문, 공백, 네이밍 컨벤션, 프로그래밍 원칙, Best Practice 등을 포함 보통 각 조직별, 언어별로 약속해서 사용하는 Coding Convention이 있음 컨벤션을 안지켰다고 문법적으로(syntax)가 틀린 것은 아님 왜 필요한가? 유지보수 비용 절감 코드 가독성 증가 : 소스코드를 읽고, 해석하는데 필요한 노력이 줄어든다 코드 리뷰 시 문법이나 네이밍룰 등 사사로운 것 보다 더 중요한 것에 집중할 수 있또록 하기 위해 예) 구글의 HTML/CSS 가이드라인(https://google.github.io/styleguide/htm.. 2023. 2. 25. [Software Engineering] Chapter 09. 프로세스 - 구현 단계 Software Development Lift Cycle Implementation (구현) Project Management 로 각 구현, 테스트 단계 세분화 요구사항 분석부터 출시까지 전체 관리하기도 함 Implementation (테스트) QA 라고 얘기함. 소프트웨어 버그 확인 Release (납품?) 소프트웨어 릴리즈는 테스트 단계에서 완벽한 버전을 수차례 확인해서 공식 릴리즈하게 됨 Pre-alpha : 핵심 기능이 동작하기 시작한 상태 Alpha : 소프트웨어 테스트 단계 Beta : 외부에 테스트 단계로 명시해서 오픈해서 내외부 테스트 단계 RC(Release Candidate) : 정식 Release 후보 Official Release : 고객이 사용하는 완벽한 버전 Maintenance.. 2023. 2. 23. [Software Engineering] Chapter 08. 소프트웨어 개발 프로세스 - 현대적 모델(Agile, 점진적) 현대적 모델 애자일(Agile) 개발 프로세스 Agile : 재빠른, 민첩한 처음에 계획을 수립한대로 끝까지 개발하는 폭포수 모델과 반대되는 개념 일정한 주기를 갖고 짧고 반복적으로 개발하여, 끈임없이 프로토타입을 만들고, 수정해가며 하나의 커다란 소프트웨어를 개발해나가는 것 개발 즉시 피드백과 필요한 요구사항을 받으므로 변화에 유연하게 대처할 수 있는 문화 특정 개발 방법론(모델)을 가리키는 말이라기 보다는, 기민하고 민첩하게 반복적으로 개발하는 다양한 방법론 전체를 일컫는 말 Agile = 빠르고 쉽게! 변화에 대한 효과적인 (신속하고 적응적인) 대응 모든 이해관계자 간의 효과적인 의사소통 팀에 고객을 포함 고객의 역할은 요구사항 제공, 우선순위 부여, 평가하는데 중요 수행하는 작업을 제어할 수 있도.. 2023. 2. 23. [Software Engineering] Chapter 07. 소프트웨어 개발 프로세스 - 전통적 모델(폭포수, 나선형, V) 전통적 모델 폭포수 모델(Waterfall Model) 순차적인 소프트웨어 개발 프로세스로, 각 개발 단계가 마치 폭포수처럼 아래로 향하는 듯 진행되는 모델 완벽하게 설계해서, 완벽하게 개발해야하니 이상적인 모델로 현실성이 가능한지 의문 배 만드는 데는 적합. 소프트웨어에는 ??? 개발 단계 요구사항 분석(Specification, Requirements Eng.) : What을 정의함 설계(Planning, Design) : How를 정의함 구현(Implementation, Developement) 테스트(Test, Validation) 출시 후 유지보수(Maintenance, Evolution) : 변화하는 고객의 Needs에 대응 한계점 순차적으로 한 단계가 완전히 완료된 후에야 그 다음 단계를 진.. 2023. 2. 23. [Software Engineering] Chapter 06. 소프트웨어 개발 프로세스 소프트웨어 개발 프로세스(Software (Developement) Process)란? 소프트웨어를 만들기 위한 과정, 단계 소프트웨어를 개발하기위한 구조화된 일련의 활동(activity) 소프트웨어 프로세스 모델(Software Process Model)이란? 소프트웨어 개발 프로세스를 추상화하여 표현한 모델 가장 좋은 모델이란 없으며, 상황에 따라 적절한 프로세스 모델을 선택한다. 다양한 모델을 함께 적용할 수도 있다. 대표적인 Software Process Model 전통적 모델 폭포수 모델(Waterfall Model) 나선형 모델(Spiral Model) V 모델 현대적 모델 애자일 프로세스 점진적 개발 2023. 2. 23. [Software Engineering] Chapter 05. 아키텍처 설계 아키텍처(Architecture) 소프트웨어 시스템의 각 하위 시스템의 관계를 표현하는 구조의 집합 하나의 시스템은 여러 개의 하위 시스템(sub-system, Module, Component ...)으로 구성되어있음 설계 단계의 결과물이 SW 아키텍처 아키텍처 설계 과도하게 복잡한 설계는 지양해야 함 결합도와 응집도 아키텍처 설계 시, 각 모듈은 응집도가 높아야 하고, 결합도는 낮아야 한다. 모듈의 '독립성'을 판단하는 지표 why? 좋은 설계의 지표. 높은 유지보수성과 가독성 확보 결합도(Coupling, 의존도) : 어떤 모듈이 다른 모듈에 의존하는 정도 응집도(Cohesion) : 모듈 내부 간 연관 정도 응집도를 높인다 : 하나의 모듈은 하나의 목적에만 집중하여 동작하도록 해야 한다. 결합도를 .. 2023. 2. 23. [Software Engineering] Chapter 04. 프로세스 - 요구사항 분석단계 Software Development Lift Cycle Business Requirements (요구사항) Customer Pain points(WHY) + Scope + Benefit 예) 쇼핑몰 (Pain point) 고객이 상품을 찾을 수 없어서 구매를 못하고 있다. (Scope) 전체 상품 검색 (Benefit) 고객 경험을 증대시키고, 궁극적으로 매출 향상 Requirements (요구명세 + 요구분석) 실제 구현하려면 매우 상세한 기능 분석 필요 이 기능이 원하는 기능이 맞는지 명확히 도장을 찍을 필요가 있음 예) 쇼핑몰 쇼핑몰 상단에 검색창 제공 상품 타이틀, 상품 제공자 검색 기능 제공 상품 타이틀, 상품 제공자, 전체 검색 옵션 제공 검색 시간은 1초 내외 응답시간 유지 어떻게 상세하게.. 2023. 2. 23. [Network & Web] Chapter 01. OSI 7 레이어와 프로토콜 컴퓨터 네트워크? 말 그대로 컴퓨터 간 통신 컴퓨터 : any Device 네트워크 == 통신 : 정보(Data)를 주고 받는 것 데이터를 보내는 주체 -> 받는 주체 사이에 데이터를 어떻게 하면 잘 보내고 받을 수 있을지 OSI 7 계층(Layer) & Protocol 전체적인 통신의 동작 과정을 이해하기 위해서 Protocol과 OSI 7 Layer를 기본적으로 이해하고 있어야 함 Protocol 이란? Peer Layer 간 통신을 위한 규약 OSI 7 Layer 국제표준화기구(ISO)에서 개발한 추상화 된 모델로, 시스템(컴퓨터)간 통신을 위해 필요한 계층화된 아키텍처 계층 구조 : 하나의 큰 로직을 여러 개의 작은 단계로 나눠서, 각 단계별로 구현 각 계층은 본인 계층 기준으로 하위 계층의 기능.. 2023. 2. 21. [System Software] Chapter 01. 시스템 소프트웨어와 리눅스 Computer System의 구성 Hardware : 컴퓨터의 자원, CPU, Memory, I/O Devices Operating System : 다양한 응용 프로그램과 다중 사용자를 지원하기 위해 하드웨어를 관리하고 통제하는 프로그램 Applications(Application Program, 응용프로그램) : OS와 관련되지 않은 나머지 모든 프로그램 Users : 사람, 다른 컴퓨터 등 Software의 종류 모든 소프트웨어는 System Software와 Application Software 둘 중 하나에 속한다. Application Software : OS와 관련되지 않은 나머지 모든 프로그램 System Software : OS와 관련된 프로그램이지만, Kernel에 꼭 필요한 것은 아닌.. 2023. 2. 21. 이전 1 2 다음