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