# Software Engineering
Dependency Injection(DI, 의존관계 주입)
https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/위 글을 참고하자
[UML] 유스케이스 다이어그램(Usecase Diagram)
시스템에서 제공해야 하는 기능이나 서비스를 명세한 다이어그램이다.사용자와 시스템 사이의 상호작용에 집중하는 것이 특징이다.외부에서 본 시스템의 기능을 표현하기 때문에, 실제 내부의 비즈니스 로직이 아닌, 사용자가 수행하는 기능을 파악하고 싶을 때 작성한다.유스케이스 다
마이크로 서비스 아키텍처(MSA)
1. Monolithic Monolithic(돌덩이 하나의, 단단히 짜여 하나로 되어있는) 내부 요소간의 의존성이 강함 각 비즈니스 컴포넌트들이 하나의 강한 결합 구조를 지니고 통일성 있음 - 장점 개발 초기에 단순한 아키텍쳐 구조와 개발에 용이 어떤 서비스든지 개발되
Ch2. Software Processes(2)
이전까지 소프트웨어 공학에서 다루는, 소프트웨어 개발 activity를 다뤘다. Specification: 시스템 요구사항 정의 design and implementation: 설계와 구현 validation(testing): 검증과 테스팅 evolution: 유지보

Ch2. Software Processes(1)
_개인적으로 배우면서 많이 헷갈렸던 파트 수업 들을 때는 머릿속에 콕콕 박혔는데 끝나고 나서 복습만 하면 '아 이거 애매한데...' 하고 답답했다 영어 단어를 한국어로 어떻게 해석해야 정확한 건지..._ Topic coverd 소프트웨어 공학은 소프트웨어 개발의 전과
Ch1. Introduction
모든 나라의 경제는 소프트웨어에 의존하고 있다.더 많은 시스템이 소프트웨어로 제어된다.소프트웨어의 비용(expenditure)은 GNP의 의미있는 부분이다.: Computer programs and \*associated documentation.소프트웨어는 컴퓨터 프
Software Engineering
본 <Software Engineering> 시리즈는 컴퓨터 공학과 3학년 전공 강의, 소프트웨어 공학 강의에서 배운 내용을 바탕으로 작성합니다.

MicroService Architecture (MSA)
정의마이크로서비스란 작고, 독립적으로 배포가능한 각각의 기능을 수행하는 여러개의 서비스로 구성된 프레임워크특징마이크로서비스는 오나전히 독립적으로 배포가 가능하다.다양한 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다.MSA는 API

3rd Party (써드 파티)
정의다른 회사 제품에 이용되는 소프트웨어나 하드웨어를 개발하는 회사를 말합니다.써드 파티는 프로그래밍을 도와주는 라이브러리 또는 플러그인을 만드는 외부 생산자를 뜻한다.ex) 컴퓨터 제조업체가 있는데, 그 업체의 자회사/하청업체가 아닌 독자적으로 컴퓨터의 주변 장치나

DevOps (데브옵스)
정의소프트웨어 개발자와 정보기술 전문가, 운영팀 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 의미한다.애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려합니다.목적개발

Functional Programming
정의자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미한다.프로그래밍 패러다임 중 하나이다. 일련의 코딩 접근 방식이다.Procedual (절차적) → Object Oriented (객체지향) → Functional (

(주니어 개발자에게 전하는) 테스트할 때 기억할 10가지
그는 내 말을 무시했거나, 불성실 했던 것이 아니고 잘 몰라서 그랬던 거였습니다. 그래서 내가 잘못 가정했던 당연한 것들을 가르쳐 줘야 겠다고 생각했습니다.

Agile (애자일) & Scrum (스크럼)
정의신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식입니다.협력과 피드백을 더 자주하고, 일찍하고, 잘하는 것 입니다.소프트웨어를 개발한 사람들 안에서의 협력을 말함 (직무 역할을 넘어선 협력)스스로 느낀 좋

TDD (Test Driven Development)
정의테스트케이스를 작성 후 실제 코드를 개발하여 리팩토링 하는 절차를 따른다.매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.우리는 보통 개바할 때, 설계(디자인)를 한 이후 코드 개발과 테스트 과정을 순서대로 거치게 된다.하지만 TDD는 기존

클린코드 / 리팩토링 / 시큐어 코딩
정의코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 한다.가독성이 높은 코드가독성을 높이려면 다음과 같이 구현해야 한다.네이밍이 잘 되어야 함오류가 없어야 함중복이 없어야 함의존성을 최대한 줄여야 함클래스 혹은 메소드가 한 가지 일만 처리해야