Jan 30, 2018 - POP_part19

관점 - 프로그래머가 보는 시각

결합도

  • 내용 결합
  • 공통 결합
  • 외부 결합
  • 제어 결합
  • 스탬프 결합
  • 데이터 결합

상호 종속 되는 모듈은 깨지기 쉽다 저결합 모듈을 지향 해야 된다. 데이터 결합방식을 맹목적으로 지향하기 보다는 결합하려는 대상과의 친밀도에 따라 단계를 결정하자

하이브리드 결합

데이터가 여러 의미를 지니는 경우 세율의 값이 정상일때는 양수 오류일때는 음수를 반환하는경우

모듈이나 함수의 멱등성(연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다) 과 안정성

참조


Jan 24, 2018 - POP_part18

사상 - 프로그래밍 이데올로기

UNIX 철학

대화형 인터페이스 회피

구속적 인터페이스라고도 하는데 이렇게 되면 사용자도 머신도 소프트웨어에 구속당한다.

  • 소프트웨어별로 독자적인 대화 방법을 기억해야 된다.
  • 소프트웨어끼리 대화 할수 없다.
  • 대기 시간이 많아진다.
  • 입력부분에 대한 해석 코드가 많아지고 흉해진다.
  • 큰것이 아름다운 접근법으로 변질된다.

필터화

소프트웨어를 필터로 설계 한다. 모든 소프트웨어는 입출력이다. 표준입출력을 사용하자

10개의 작운정리

  • 환경 커스터마이즈
  • 작고 가벼운 커널
  • 소문자 사용
  • 자연 보호
  • 침묵은 금
  • 병렬 사고
  • 부품 협력
  • 90%의 해
  • 열등해야 뛰어나다
  • 계층 지향

관점 - 프로그래머가 보는 시각

응집도

응집도란 모듈에 포함된 기능의 순수함을 나타내는 척도로 모듈의 강도를 측정하는 단위이다. 응집도란 7단계이다.

  • 압합적 강도 - 우연히 요소가 일치한다.
  • 논리적 강도 - 어떤기능을 추상적으로 파악해서 모은것이다.
  • 시간적 강도 - 특정시점에 연속해서 실행되는 여러 개의 기능을 하나의 모듈로 모은것
  • 순서적 강도 - 순서적인 관련성이 있다.
  • 연락적 강도 - 순서적 강도의 특성을 가지면서 데이터를 교환하거나 참조한다.
  • 정보적 강도 - 특정 정보를 다루는것을 하나의 모듈로 묶은것
  • 기능적 강도 - 기능적 강도 모듈은 모듈내의 모든 명령이 하나의 역활을 실행 하기 위해 서로 관련된 모듈

섞여 있는 모듈은 깨지기 쉽다.

참조


Jan 24, 2018 - POP_part17

사상 - 프로그래밍 이데올로기

UNIX 철학

효율성보다 이식성

개발 효율성보다는 이식성을 중요시 선택하자 소프트웨어의 성공을 가늠하는 잣대중 하나로 몇개의 플랫폼에서 실행되는가? 라는 척도가 있다. 소프트 웨어의 가치를 지속시키는것은 하드웨어가 경쟁력을 갖는동안 유지할수 있는데 다른 하드웨어로 이식이 필요한다 여기에 시간을 빼기는 것은 불합리하다.

데이터는 텍스트로

데이터는 텍스트 파일로 저장한다. 바이너리 형식의 데이터 파일 설계는 채택하지 않는다. 데이터 이식성을 고려해야 되는데 데이터 이식성에 대한 해답이 텍스트 파일이다.

  • 가장 일반적이면서 이식성이 높은 형식
  • 사람이 데이터를 즉시 확인가능
  • 툴이나 명령 쪽에서 다루기 쉬운 형식

표준규격의 텍스트 파일로 선택하자

레버리지 소프트웨어

적은 노력으로 큰성과를 얻는다. 코드를 대량으로 작성하는것 보다 오픈소스를 활용하자 수작업을 자동화 하자.

쉘 스크립트 활용

쉘스크립트를 글루 언어로 활용하자 쉘 자체의 이식성이 높기 때문에 소프트웨어의 연결을 쉘로 수행하자

참조