CS/software engineering 7

Coding Convention

* Coding Convention 코드 개발의 품질에는 코드를 작성할 떄 규칙을 준수하는 것이 중요하다. 코딩 컨벤션은 형식 지정 뿐만 아니라 선택한 프로그래밍 언어 및 선택한 개발 프레임워크에 대한 코딩 규칙에 따라 결정되는 많은 요소에도 적용된다. Coding Convention은 다음과 같은 항목에 적용된다. 이름 짓는 방식과 변수 이름 등 식별자에 사용되는 대소문자 Camel 표기법으로 할것인지, Pascal 표기법, snake 표기법 등의 표기법 블록의 들여쓰기 스타일 - 탭을 쓸 것인지, 너비는 어떻게 할 것인지 등 대괄호 배치 방법 - 메소드 바로 옆에 붙일 것인지 한 줄 띄고 붙일 것인지 클래스 및 인터페이스 선언 등.... 그렇다면 coding convention은 왜 사용하여야 할까?..

Agile 애자일

* 애자일(Agile)? 폭포수 모델등의 고전적인 방법론과의 가장 큰 차이는 적은 문서를 지향하고, 실제 개발(실용적인 측면을 강조한 개발 방법론)을 지향하는 방법이다. 애자일 방법론 장단점 소프트웨어 개발 각 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서, 요구사항을 더하거나 수정하면서 소프트웨어를 완성해 나간다. 커다란 소프트웨어를 개발하는데 요구사항 분석이나 설계를 완벽하게 하기 어려울 때 적합한 개발 방법론이 될 수 있다. 그리고 적은 문서 작성을 목표하고 실제 개발을 지향하는 방법론이기 때문에 실제 작동하는 소프트웨어는 기존 폭포수 모델 방법론과 다르게 빠르게 확인 할 수 있다는 장점 또한 있다. 하지만 실용적인 측면에서 개발하기 때문에, 체계화된 문서가 적을 수 있다는 단점이 ..

CI/CD

* CI/CD? (Continuous Integration:지속적 통합 / Continuous Delivery: 지속적 배포) 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다. 이러한 구축 사례를 CI/CD 파이프라인이라 부르며 개발 및 운영팀의 애자일 방식 협력을 통해 지원된다. * CI(Continuous Integration:지속적 통합)? 개발자들은 코드 변경 사항을 CI를 통해 공유 브랜치 / "트렁크..

결합도와 응집도에 대하여 (Coupling and Cohension)

스프링을 공부하다 보니 결합도와 응집도에 대해서 얘기가 나오고, 결합도는 낮추고 응집도(응집력)은 높여야 한다 라는 말이 자주 등장하여 둘의 개념을 자세히 정리하고자 포스팅을 한다. * 모듈이란 무엇인가? 소프트웨어를 기능 별로 나누는 것을 모듈화, 모듈화의 결과로 기능 별로 분할된 것을 모듈이라고 한다. 모듈화의 장점 시스템의 이해가 쉽다. 시스템의 유지 관리가 용이하다. 재사용이 가능하다. * 결합도(Coupling) 모듈 간의 관계(inter-module)를 나타낸다. 모듈과 모듈 간의 상호 의존도를 이야기한다. 낮은 결합도를 가지는 것을 권장한다. 메시지 결합도 (가장 낮은 결합도) 컴포넌트간의 통신이 파라메터나 message passing을 통해서 이루어진다. 자료 결합도 모듈들이 파라메터 등을..

3rd party(써드 파티)란?

* 3rd party(써드 파티)란? 써드 파티 또는 써드 파티 개발자는 일반적으로 하드웨어 생산자와 소프트웨어 개발자의 관계를 나타낼 때 사용한다. 하드웨어 생산자와 소프트웨어 개발자의 관계 하드웨어 생산자 = 소프트웨어 개발자 (직접) 하드웨어 생산자인 기업과 소프트웨어 개발자가 어떤 관계가 있음 아무 관계 없음 분류 퍼스트 파티 개발자 세컨드 파티 개발자 써드 파티 개발자 업체별 분야별로 약간씩 서로 다른 사례나 관례를 가지고 있지만, 보통 하드웨어 생산자와 소프트웨어 개발자가 같은 경우(하드웨어 생산자가 직접 소프트웨어 개발도 함) 퍼스트 파티(개발자) 하드웨어 생산자인 기업과 소프트웨어 개발자가 모종의 관계를 맺고 있을 경우(모기업 - 자사, 하청 등) 세컨드 파티 (개발자) 아무 관련 없이 소..

라이브러리 vs 프레임워크

* 라이브러리(Library)? - (Component) Library = collection of related features 라이브러리 = 기능들의 집합 재 사용관점에서 api를 패키징 한 것. 말 그대로 도서관(라이브러리)에서 필요한 지식(feature)이 있는 책을 뺴서 읽고 이러는 것 처럼 프로그래머가 사용할 수 있는 프로그램이다. +) 공통으로 사용할 수 있는 기능을 모듈화한 것이다. 개발자가 만든 클래스에서 라이브러리를 호출만 하면 된다. 내가 그 라이브러리를 위해서 뭔가 코드를 써넣고 할 것은 없다. * 프레임워크(Framework)? - (Application) Framework = half done application 'IoC' 관점에서 어플리케이션을 구동하는, 말그대로 '틀'이다...

MVC

Model View Controller MVC 패턴이란 어플리케이션을 Model View Controller 세 영역으로 구분하고 나눈 것이다. Model (Service, Dao, Java Beans) 로직(비니지스 & db)로직을 처리하는 모든 것이다. controller로부터 넘어온 데이터를 이용하여 이를 수행하고 그에 대한 결과를 다시 controller에 돌려준다. View (JSP) 모든 화면 처리를 담당한다. 클라이언트의 요청에 대한 결과 뿐 아니라 controller에 요청을 보내는 화면단도 jsp에서 처리한다. logic 처리를 위한 java code는 사라지고 결과 출력을 위한 코드만 존재한다. Controller (Servlet) 클라이언트의 요청을 분석하여 로직 처리를 위한 모델단을..