Software System Design

Pinned ·

소프트웨어시스템설계 2023-05-01 수업정리

Flow Review - SDLC Review - White Box Testing Black Box Testing Review - SDLC 어느 정도의 규모가 있는 조직에서는 implementation을 담당하는 개발자, 설계를 검토하는 설계자, PM이 모두 따로 존재한다. 각각의 단계에 대해서 테스트를 담당하는 사람 역시 따로 존재한다. 일반적으로 unit test 단계까지는 코드를 설계한 프로그래머가 담당한다. Review - White Box Testing 소스코드를 이용하여…

Pinned ·

소프트웨어시스템설계 2023-04-24 수업정리

Flow SDLC Unit Testing JUnit 을 이용한 Unit Testing SDLC(Software Developement Life Cycle) 구조도의 그림이 V형태여서 V-model이라고도 한다. Acceeptance Testing의 경우에는 defect를 찾는 것이 목적이 아니다. User Requirements에 부합하는지 검사하는 것이 목적이다. System Testing, Integration Testing, Unit Testing은 defect를 찾는 것이 목적이다…

Pinned ·

소프트웨어시스템설계 2023-04-05 수업정리

Flow Observer Pattern Review Template Method Pattern Observer Pattern Review Fan-in? Fan-in : 외부로부터의 해당 메소드나 클래스로의 association개수 Observer Pattern의 적용을 통해 fan-in을 줄일 수 있다. fan-in이 크다면 코드의 재사용상이 좋다고 볼 수 있다. 대표적으로 Scanner Class(java)등 fan-in이 무한대인 클래스들이 있다. 하지만 fan-in이 크다는 것은…

Pinned ·

소프트웨어시스템설계 2023-04-03 수업정리

Flow Interface vs Abstract Class RobotStrategy Review Observer Pattern Interfacs vs Abstract Class java에서는 C++과 달리 abstract method가 없어도 Abstract Class로 선언이 가능하다. 이렇게 선언할 결우 인스턴스 추상 메소드는 없지만 인스턴스 생성은 불가능한 추상 클래스가 된다. Concrete Class에서 조금이라도 중복되는 동작이 있다면 Abstract Class를 사용해서 …

Pinned ·

소프트웨어시스템설계 2023-03-29 수업정리

Flow Review Design Pattern Overview Review 사실 Code Smell 은 성능 측면에서는 별 영향을 주지 않는다. 하지만 code smell을 없에면 유지보수성을 강화할 수 있다. 현실적으로는 유지보수성 이외에도 ISO 25010의 여러 요소를 중요하게 판단해야 한다. 본 강의에서는 유지보수성에 중점을 두고 설명한다. Design Pattern Overview 일반적으로 디자인 과정은 아래와 같은 세 개의 sub-process로 나눌 수 있다. 개발 과…

Pinned ·

소프트웨어시스템설계 2023-03-22 수업정리

Flow Refactoring (end) More Refactoring Techniques (1) Refactoring Example Refactored UML Step 1 응집도를 고려하여 getCharge()함수와 getFrequentRenterPoint() 함수를 Rental 에서 Movie로 이동시켰다. getCharge() 의 경우 Rental이 아닌 Movie의 attribute를 사용하므로 Move method하여 이동시켰다. getFrequentRenterPoint() …

Pinned ·

소프트웨어시스템설계 2023-03-20 수업정리

Flow Refactoring (3) Refactoring Example Original UML Refactoring UML ~Step2 Template Method Pattern이란? Common Code가 존재하는 서로 다른 두 클래스 간에서, Common Code부분을 template method로 superclass에 구현한다. 서로 다른 구현부는 superclass 에서 abstract method로 남겨둔 뒤 subclass에서 override를 통해 구체적인 구현을 수행한다.…

Pinned ·

소프트웨어시스템설계 2023-03-15 수업정리

Flow Refactoring (2) Refactoring Example 아래의 UML과 코드들은 리펙토링을 하기 이전의 원본 상태이다. Original UML Original Code - Run Customer customer1 = new Customer("David"); Movie movie1 = new Movie("Madagascar", Movie.CHILDRENS); Rental rental1 = new Rental(movie1, 6); Movie…

Pinned ·

소프트웨어시스템설계 2023-03-13 수업정리

Flow UML Refactoring (1) UML(Unified Modeling Language) UML basic elements UML은 특정 언어의 모델링만 하는 것이 아니므로, attribute, operation등 포괄적인 단어를 사용한다. Refactoring 변수명, 메소드명, 클래스명이 requirement단계의 이름과 일치해야 한다. 응집성 문제가 없어야 한다. 하나의 메소드는 하나의 역할만을 해야 한다. 이렇지 않을 경우 응집성이 높아져 code smell이 발…

Pinned ·

소프트웨어시스템설계 2023-03-08 수업정리

Flow 리펙토링이란? Eclipse Refactoring 리펙토링이란? Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing tis external behavior Martin Fowler, 1999 코드를 외부 동작의 변화 없이 내부 구조만 바꾸는 것 결과적으로 유지보수성과 가독성을 높이는 역할을 한다.…

Pinned ·

소프트웨어시스템설계 2023-03-06 수업정리

Flow Readability & Understandability Refactoring Readability local variable, constant등 코드 내의 각 요소들을 쉽게 파악할 수 있는 정도이다. readability가 좋은 코드는 변수 등의 위치를 바로바로 파악 가능하다. 일관성 있는 코드 스타일의 사용을 통해 readability를 보장할 수 있다. (줄바꾸기, 들여쓰기 등) 코드 스타일은 언어마다 정해진 코드 스타일이 있다. 이를 준수하면 된다. Under…