
설계와 아키텍처의 차이는 무엇인가?아키텍쳐 : 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 사용설계 : 저수준의 구조 또는 결정사항 등을 의미할 때 주로 사용But 아무런 차이 없음저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소임.

소프트웨어 시스템가 제공하는 두 가지 가치 → 행위(behavior) & 구조(structure) 첫 번째 가치⇒ 요구사항을 기계에 구형하고 버그를 수정하는 일 ( 많은 프로그래머들이 행위가 할 일의 전부라고 생각하지만 틀렸음)두 번째 가치 소프트웨어 software

구조적 프로그래밍 객체 지향 프로그래밍 함수형 프로그래밍goto문은 해롭다 → if/then/else 와 do/ while/until 구조로 대체알골 언어의 함수 호출 스택 프레임을 힙에 옮기면, 함수 호출이 반환돈 이후에도 함수에서 선언된 지영 변수가 오랫동안 유지됨

에츠허르 비버 데이크스트라초기 문제 : 프로그래밍은 어렵고 프로그래머는 잘 하지 못한다. ⇒ 증명(proof)라는 수학적원리를 적용하여 해결하고자 함. 유클리드 계층 구조( 공리, 정리, 따름정리, 보조정리) 적용하고자 함. : 프로그래머는 입증된 구조를 이용하고 이

좋은 아키텍처 만드는 일은 객체 지향(Object-Oriented, OO) 설계 원칙을 이해하고 응용하는 데서 출발한다.OO? → 캡슐화, 상속, 다형성→ 데이터와 함수를 쉽고 효과적으로 캡슐화 하는 방법을 OO언어가 제공. 이를 통해 데이터와 함수가 응집력 있게 구성

람다 계산법 사례(p54)클로저 vs 자바 프로그램클로저 → x와 같은 변수가 한 번 초기화되면 절대로 변하지 않는다. 자바 프로그램 → 가변 변수 사용하여 프로그램 실행 중에 상태가 변할 수 있다. ⇒ 함수형 언어에서 변수는 변경되지 않는다. 경합(race) 조건,

각 소프트웨어 모듈은 변경의 이유가 단 하나여야만 한다.하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다.모듈 : 함수와 데이터 구조로 구성된 응집된 집합Employee 클래스 - calculatePay(), reportHours(), save()∴ 서

기존 코드를 수정하기 보다는 반드시 새로운 코드를 추가하는 방식으로 시스템의 행위를 변경할 수 있도록 설계해야만 소프트웨어 시스템을 쉽게 변경할 수 있다.소프트웨어 개체는 확장에는 열려 있어야 하고, 변경에는 닫혀있어야 한다. → 소프트웨어 개체의 행위는 확장 할 수

상호 대체 가능한 구성요소를 이용해 소프트웨어시스템을 만들 수 있으려면 이들 구성요서는 반드시 서로 치환 가능해햐한다는 계약을 반드시 지켜야한다S 타입의 객체 o1 각각에 대응하는 T 타입의 객체 o2가 잇고, T 타입을 이용해서 정의한 모든 ㅍ로그램 P에서 o2의 자

소프트웨어 설계자는 사용하지 않은 것에 의존하지 않아야 한다오퍼레이션을 인터페이스 단위로 분리동적 타입 언어에서는 선언문 X, 런타임 추론 발생, 소스코드의존성 X, 재컴파일과 재배포 X→ 정적 타입 언어보다 유연하고, 결합도가 낮은 시스템을 만들 수 있다.⇒ ISP는

고수준 정책을 구형하는 코드는 저수준 세부사항을 구현하는 코드에 의존해선 안된다. 대신 세부사항이 정책에 의존해야 한다.유연성이 극대화된 시스템: 소스코드 의존성이 추상에 의존하며 구체(concretion)에는 의존하지 않는 시스템⇒ 의존하지 않도록 피하고자 하는 것은

컴포넌트 = 시스템의 구성 요소로 배포할 수 있는 가장 작은 배포 단위잘 설계된 컴포넌트 - 독립적으로 배포 가능 즉, 독립적으로 개발 가능한 능력 O개발 초창기 → 메모리에서 프로그램 위치와 레이아웃을 프로그래머가 직접 제어 시작부에 오리진 구문(프로그램이 로드될 주

어떤 클래스를 어떤 컴포넌트에 포함시켜야 할까?재사용 단위는 릴리스 단위와 같다.릴리스 절차에는 적절한 공지와 릴리스 문서 작성을 포함해야 함.소프트웨어 설계와 아키텍처 관점 → 단일 컴포넌트는 응집성 높은 클래스와 모듈들로 구성되어야 함. (중요한 테마나 목적이 있

전미 크럭 운전사 조합의 Local 705 지역조합에 회계 시스템 제공컴퓨터 GE Datanet 30 - 거대하고 느리고 기능 적음.비동기 터미널을 상대적으로 빠른 속도로 구동데이터를 디스크에 저장할 때에는 데이터를 디스크에 직접 기록세 가지 레코드 사용 1. Agen