ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래밍 언어, 코드 재사용, 리팩토링
    Topcit/소프트웨어 개발 2018. 6. 11. 15:14
      1. 프로그래밍 언어의 특성
        1. 프로그래밍 언어 개념
          1. 사용자가 보다 친숙한 언어로 프로그램을 있게 하도록
          2. 프로그래밍 언어마다 컴파일러, 인터프리터가 있다.
        2. 인터프리터 언어
          1. 인터프리터는 중간과정 없이 원시 프로그램을 직접 저급 언어로 바꾸면서 동시에 실행한다.
          2. 인터프리터 과정
          1. 장점
            1. 실행을 위해 완전한 기계어 번역을 기다리지 않고 필요 마다 실행
            2. 프로그램이 실행될 때까지 원시 언어 형태를 유지하므로 메모리 절약
          2. 단점
            1. 재실행 매번 원시 프로그램을 디코딩 하기 위한 시간이 필요함
        1. 컴파일러 언어
          1. 컴파일러는 고급 언어로 작성된 프로그램을 기계어로 번역하여 객체 모듈을 만들고 모듈을 링크, 로드 하여 실행
          2. 컴파일 과정
          1. 장점
            1. 번역된 목적 코드 저장 기능
            2. 컴파일 바로 재실행 가능
            3. 한번 컴파일 후에는 빠른 재실행이 가능
          2. 단점
            1. 기계어로 변환하는데 많은 시간이 소요된다.
            2. 줄의 원시 프로그램이 때로는 백줄의 기계어로 번역되어 메모리를 낭비 시킨다.
      1. 주요 프로그래밍 언어의 특징
        1. C
          1. 소개
            1. C언어를 모티브로 만들어진 언어가 많음
            2. 많은 운영체제들이 C언어로 만들어짐
          2. 특징
            1. 실행속도가 빠르고 메모리를 효율적으로 관리할 있다.
            2. 표기법이 간결하여 문단으로 기능 구현 가능
            3. 절차지향적 언어
            4. 배열과 메모리를 고려해 프로그래밍 해야
            5. 실행 환경, 기기 변경 이식이 어렵다.
        2. C++
          1. 소개
            1. C 대부분의 특징을 포함하고 있다.
            2. 클래스, 연산자 중복, 가상 함수 등의 특징으로 객체 지향 프로그래밍에 적합하다.
          2. 특징
            1. C언어에서 객체지향 프로그래밍을 지원하는 언어로 발전
            2. 캡슐화와 자료 은닉이 가능하다.
            3. 상속을 사용함으로써 재사용성을 높인다.
            4. 오버로딩, 오버라이딩 기법으로 다형성을 가진다.
        3. JAVA
          1. 소개
            1. 플랫폼에 독립적인 언어이다.
          2. 특징
            1. C, C++ 문법적으로 유사
            2. C++ 복잡성을 단순화
            3. 항상 자동 가비지 콜렉션 기능을 수행
            4. 객체 개념을 적용하는 완벽한 객체지향적 언어
            5. JVM 의해 실행되므로 플랫폼에 독립적
        4. Node.js
          1. 소개
            1. 고성능의 비동기 IO 지원하는 네트워크 서버
            2. 단일 스레드 기반으로 동작
            3. 자바 스크립트, 이벤트 기반의 프로그래밍 모델을 사용
          2. 특징
            1. 자바스크립트 기반에 개발 구조가 매우 단순화 되어 있어 빠른 개발이 가능
            2. Push 구현이 매우 용이
            3. 블로킹 IO 모델 지원으로 자원 효율화가 가능
      2. 코드 재사용 리팩토링
        1. 코드 재사용 리팩토링 개념
          1. 코드 재사용 개요
            1. 이전 시점에 쓰여진 프로그램의 일부 또는 전부를 다른 프로그램 개발에 사용하는
            2. 객체지향 프로그래밍, 제네릭, 자동 완성, 메타 프로그래밍 등이 재사용성을 높이기 위해 사용됨
          2. 재사용 적용 고려사항
            1. 체계화된 재사용 기반의 소프트웨어 개발 프로세스
            2. 재사용성 향상을 위한 교육, 품질 향상
            3. 초기 투자를 통한 재사용 환경의 구축
            4. 지속적인 라이브러리의 개선, 보강
            5. 도구의 지원이 있는 재사용
            6. 소프트웨어 생산성 평가 척도
            7. 재사용 컴포넌트에 대한 정보 집합의 관리
          3. 리팩토링 개요
            1. 소프트웨어를 보다 쉽게 이해하고 적은 비용으로 수정할 있도록 내부 구조를 변경하는
            2. 유지보수시 수정을 어렵게 하는 요인
              1. 낮은 가독성
              2. 중복된 로직
              3. 복잡한 조건문
            3. 리팩토링을 수행하는 이유
              1. 소프트웨어의 디자인 개선
              2. 소프트웨어의 가독성 증가
              3. 디버깅 용이
              4. 프로그램 생산성, 품질 증가
          4. 리팩토링 시점 수행 절차
            1. 시점
              1. 코드에 새로운 기능을 추가하는 시간이 효율적일
              2. 추가가 쉽지 않은 형태의 디자인 변경
              3. 버그를 수정할
              4. 코드 검토를
            2. 절차
              1. 조직 구성 : 멘토 역할의 선임자와 복합 구성
              2. 수행 통제 : 변경 관리, 형상 관리 수행, CCB 통제
              3. 수행 기법 : 디자인 패턴, AOP 수행
              4. 테스트 : 단위, 통합 테스트, 회귀 테스트
              5. 결과 정리 : 문서화, 현행화, 운용 시스템 적용
            3. 리팩토링은 소규모 변경 동작여부를 테스트하고 작동할 경우 다음 리팩토링 단계로 넘어간다.
          5. 대표적 리팩토링 기법
            1. 코드 스멜 : 코드의 가독성이 낮거나 중복된 로직
            2. 발생 원인
              1. 코드의 가독성이 낮은 프로그램
              2. 중복된 로직을 가진 프로그램
              3. 복잡한 조건문이 포함된 프로그램
            3. 코드 스멜의 유형
              1. 중복 코드
              2. Switch Case
              3. 주석
              4. 메소드, 클래스
              5. 파라미터 리스트
              6. 게으른 클래스
              7. 불완전 라이브러리 클래스
              8. 데이터 클래스
              9. 기본타입 사용
              10. 임시 필드
              11. 평행 상속 구조
              12. 메시지 체인

    댓글