Design and Implementation (part2)
Design Patterns
* 특정한 문제 -> 특정한 솔루션
* 솔루션에 대한 본질을 보여주며, 재사용을 하기 위해 사용한다.
* 많은 설정에서 사용할 수 있도록 추상적이여야 한다.
pettern elements
이름
문제 설명
솔루션 설명
*추상적이여야 한다.
결과
Observer pettern
이 부분은 졸다가 강의를 놓쳐 캡쳐만 해왔다.
시험공부할때 이거 읽고 공부하자.
Implementation issues
* Reuse 측면:
재사용 cost:
뭘 재사용할지 보는것
재사용 할 프로그램을 찾는것
규모가 클때 뭐를 사서 커스터마이즈를 할 때 드는 비용이 클 수 있다.
코드 추가할 때
* Configration management (형상 관리) :
특별한 것 업데이트 하면 알려 주는 것. Git 으로 많이 하는것 같다
activities
1. Version management
계속하여 버전을 트래킹 해서 오류가 나면 찾기 쉽게 되는것
2. System integration
각 버전에 대해 무엇이 업데이트 되었는지 정리하기에 쉽다.
3. Problem tracking
어떤 버전에 문제가 생겼는지 누가 작업을 했는지 등을 추적할 수 있게 된다.
4. Release management
추가적인 괜찮은 기능이 있을때 release 하는데 이것을 관리할 때에도 이것을 사용한다.
* Host - target development (개발 환경과 별도의 호스트에서 실행될 때) :
많은 프로그램이 host 에서 실행이 되며, 타겟에서 그것을 사용한다.
Open source development
자발적으로 참여해서 업데이트 하고 자율참여 하는 것이라,
free software foundation
항상 누구나 사용할 수 있도록 열어둔것
가장 성공적인 모델이 Linux 이며, Java Apache mySQL 등이 오픈소스이다(blender 도 오픈소스)
Open source licensing
자유롭게 사용하는것이지 누구나 원하는 대로 하지는 않다.
따라서 약간의 제약이 있을 수 있다.
개발자가 마음대로 제한을 할 수 있으며, 원래 소유자의 재산권을 보장한다거나,
소유권 자체도 오픈을 하는 오픈소스도 있다.
GNU (GPL)
상호 라이센스로 라이센스가 부여된 소스를 사용할때면 해당 소스는 오픈소스로 공개해야 한다.
GNU Lesser (LGPL)
소스를 그대로 사용하면 opensorce 로 하지 않아도 되는데, 변경을 하여 쓸 경우는 오픈소스로 공개해야 한다.
Berkley standard Distribution (BSD)
수정사항도 공개할 필요가 없다 그냥 사용하면 되는데, 판매되는 시스템의 경우, 그거에 대한 레퍼런스는 달아 주어야 한다.