소프트웨어공학

Design and Implementation (part2)

메모하는 사람 2023. 5. 2. 13:34

Design Patterns

* 특정한 문제 -> 특정한 솔루션 

* 솔루션에 대한 본질을 보여주며, 재사용을 하기 위해 사용한다.

* 많은 설정에서 사용할 수 있도록 추상적이여야 한다.

 

pettern elements

이름

문제 설명 

솔루션 설명

 *추상적이여야 한다.

결과

Observer pettern

 

이 부분은 졸다가 강의를 놓쳐 캡쳐만 해왔다.

시험공부할때 이거 읽고 공부하자.

그냥 보면 데이터를 그래프로 나타내주는 서비스 인 것 같기도 하다.
uml 방식. 업ㄷ이트 등 하고 그것을 알려주고 상태를 받아서 내용이 업데이트 되면 observer 에서도 update 가 된다는 그림

Implementation issues

* Reuse 측면: 

1 2 3 4 순서대로 재사용 규모가 커진다.

   재사용 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)

 수정사항도 공개할 필요가 없다 그냥 사용하면 되는데, 판매되는 시스템의 경우, 그거에 대한 레퍼런스는 달아 주어야 한다.