본문 바로가기

Computer Science/Software Engineering11

[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.
[Software Engineering] Chapter 03. 프로세스 - 요구사항 전통적인 소프트웨어 프로세스 정형화 소프트웨어 개발 관련자 요청 고객 (Client) 사용자 (실제 Customer) 프로젝트 관리자 (PM) 개발자 (Developer) 요구사항(Requirement) 시스템 개발 분야에서 어떤 과제를 수행하기 위해 필요한 조건이나 능력 사용자 요구사항 ---- 구체화 ----- > 시스템 요구사항 -> 사용자의 요구사항은 추상적이지만, 이것을 점점 구체화 시키면 시스템 요구사항이 된다 요구사항의 종류 기능 요구사항(Functional Requirement) 어떤 기능이 제공되어야 하는지 특정 input이 주어졌을 때, 시스템이 어떻게 동작해야 하는지(output) 등 기능적인 측면을 서술하는 요구사항 예) 검색 기능, 메세지 전송 기능, 마이 페이지 확인, ... 비.. 2023. 2. 17.
[Software Engineering] Chapter 02. Planning 프로젝트 기획은 프로젝트의 시작 Project Plan Introduction Project organization Risk analysis Hardware and software resource requirements Work breakdown Project Schedule Monitoring and reporting mechanisms(Quality Plan) Software Pricing (비용) 개발하는데 필요한 '비용'에 대한 정보를 고객에게 제공 개발 Resource(공수, 비용) 예측 지원 : HW, SW(Licence, Source Code ...), ... 개발자의 개발 비용 : 학습 시간, 실제 개발하는데 필요한 시간 등 모든 시간 포함 리소스(작업량) 표현 방법 : 맨먼스(MM), 멘.. 2023. 2. 17.