CheerUp_Cheers

소프트웨어 공학 본문

CS

소프트웨어 공학

meorimori 2020. 11. 22. 01:50
  • 클린코드
  • 테스트 주도 개발(TDD)
  • 애자일
  • 객체 지향 프로그래밍(OOP)
  • 데브옵스
  • 서드파티

  • 클린코드

#클린 코드란?

 

클린 코드란 가독성 높은 코드(의도와 목적이 명확)

코드가 잘 읽히는가, 지저분하지 않은 정리된 코드인가.

 

#조건

 - 네이밍

 - 오류가 없어야함

 - 중복이 없어야함

 - 의존성 줄이기

 - 클래스 혹은 메소드는 한가지 일만 처리하도록.

 

#규칙

 - 네이밍(카멜 표기, 스네이크 표기)

 - 주석달기(잘 이해할수 있게 도와줌)

 - 배치(들여쓰기, 줄바꿈)

 - 한가지 일만..


  • 테스트 주도 개발(TDD)

테스트가 개발을 이근다.

기존 : 디자인 -> 코드개발 -> 테스트

TDD : 디자인 -> 테스트코드 <-(리팩토링)-> 코드개발

 

#장점

작업과 동시에 테스트 진행으로 실시간 오류 파악

짧은 개발주기로 고객의 빠른 요구사항 파악과 피드백

자동화 도구를 통한 TDD의 단위 테스트로 가능(자바 JUnit)

 

#단점

기존 개발 프로세스에 테스트케이스 설계 추가로 생산 비용 증가


  • 애자일

'협력'과 '피드백'을 자주하는 것.

'부서간의 경계를 허뭄'과 각 팀원에게 의사설정 권한 부여.

'비주얼 플래닝'을 통한 모든 팀원들의 업무를 시각화하여 공유.

 

#뜨는 이유?

자주 변경되는 업계의 트렌드와 경제흐름으로 인한 불확실한 미래에 빠른 대응 전략.

 

#스프린트

작은 단위 개발 업무를 단기간 내에 전력 질주하여 개발.

3~5일 단위 반복 주기

 

#일일 스크럼 회의

모든 팀원 매일 참석, 짧게(15분), 진행사항 점검

한사람씩 어제 한 일, 오늘 할 일, 문제점 및 어려움 점

완료된 작업 항목은 스프린트 현황판 업데이트

 

#스크럼 장점

스프린트 마다 실행가능한 제품을 통해 의견 나눔

회의를 통해 팀원들간의 신속한 협조와 조율

자신의 일정을 직접 발표로 업무 집중 호나경 조성

 

#스크럼 단점

추가 작업 시간필요( 스프린트 마다 실행가능한 테스트제품)

15분이라는 회의시간 지키기 힘듬

 


  • 객체 지향 프로그래밍(OOP)

객체 내부에 자료형(필드)와 함수(메소드)가 같이 존재하는 것

 

#특징

1)추상화

 필요로 하는 속성이나 행동을 추출하는 작업

 사물들의 공통적인 특징을 파악한 후 , 하나의 집합으로 만들어 내는 것.

 

2)캡슐화

 낮은 결합도를 유지할수 있또록 설계

 한곳에 변화가 일어나도 다른곳에 미치는 영향 최소화

 객체가 내부적으로 기능을 어떻게 구현하는지는 감춤(정보 은닉, private)

 

3)상속

 일반화 관계라고도 함, 여러 개체들이 지닌 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립

 IS-A관계 성립 할떄 사용, 재사용보다는 기능의 확장 관점에서 사용.

 

4)다형성

 서로 다른 클래스가 같은 메시지를 받아도 각자의 방식으로 동작.

 코드를 간결하게 해주고, 유연함을 갖추게 해줌.

 부모 클래스의 메소드를 자식클래스가 오버라이딩하여 자신의 역할에 맞추어 사용하는 것.

 

#객체 지향 설계 과정

  • 제공해야 할 기능을 찾고 세분화한다. 그리고 그 기능을 알맞은 객체에 할당한다.

  • 기능을 구현하는데 필요한 데이터를 객체에 추가한다.

  • 그 데이터를 이용하는 기능을 넣는다.

  • 기능은 최대한 캡슐화하여 구현한다.

  • 객체 간에 어떻게 메소드 요청을 주고받을 지 결정한다.


  • 데브옵스

소프트웨어 개발자와 정보기술 전문가 간의 소통, 협어 및 통합을 강조하는 개발환경이나 문화.

 

- 목적

 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포.

 제품이나 서비스의 출시를 위해 개발과 운영이 서로 의존적 대응.

 애자일 기법과 지속접 통합의 개념과도 관련 있음.

 

#지속적 통합

 통합 작업을 초기부터 계속 수행하여 지속적인 소프트웨어 품질 제어 적용.

 


  • 써드파티

프로그래밍을 도와주는 라이벌리를 만드는 외부 생산자.

 

#개발자 측면

 - 1ST 파티 : 하드웨어 생산자가 직접 소프트웨어 개발

 - 2ND 파티 : 하드웨어 생산 기업과 자사 혹은 하청에 속한 소프트웨어 개발자

 - 3RD 파티 : 아무 관련없는 제3자 SW 개발자

-> 플러그인 라이브러리 프레임워크를 개발하여 제3자로 중간다리 역할로 도움

 


.

'CS' 카테고리의 다른 글

알고리즘 심화  (0) 2020.05.15
알고리즘 정렬기본  (0) 2020.05.15
  (0) 2020.05.09
디자인 패턴  (0) 2020.02.18
ETC  (0) 2020.02.11