전체 글
-
DI와 DIPDIDI(Dependency Injection, 의존성 주입)은 설명 그대로 의존성을 주입하는 방식을 뜻한다.우선 의존성을 주입한다는 뜻부터 알아보자. A가 B에 의존한다는 말은 B가 변하면 A도 변해야 함을 뜻하고, A -> B와 같이 나타낼 수 있다. 예를 들어 다음과 같은 코드가 있다고 할 때class JdbcRepository { public void save() { // code }}class User { public void saveUser(User user){ new JdbcRepository().save(user); }}만약 DB 접근 방식이 Jdbc에서 Jpa로 바뀐다면 아래와 같이 코드가 변해야 한다.class JpaReposi..
DI와 DIPDI와 DIPDIDI(Dependency Injection, 의존성 주입)은 설명 그대로 의존성을 주입하는 방식을 뜻한다.우선 의존성을 주입한다는 뜻부터 알아보자. A가 B에 의존한다는 말은 B가 변하면 A도 변해야 함을 뜻하고, A -> B와 같이 나타낼 수 있다. 예를 들어 다음과 같은 코드가 있다고 할 때class JdbcRepository { public void save() { // code }}class User { public void saveUser(User user){ new JdbcRepository().save(user); }}만약 DB 접근 방식이 Jdbc에서 Jpa로 바뀐다면 아래와 같이 코드가 변해야 한다.class JpaReposi..
2024.11.23 -
use case 모델링use case 모델링은 시스템의 기능적 요구사항을 결정하고 설명하는 데 사용된다. 이를 통해 고객과 소프트웨어 개발자 간의 합의가 이루어지며, 시스템이 수행해야 하는 작업에 대해 명확하고 일관된 설명을 제공한다. 또한, 개발 과정 전반에 걸쳐 모든 개발자에게 이러한 요구사항을 효과적으로 전달하는 데 활용된다.use case란?use case는 시스템이 특정 사용자(액터) 에게 가치를 제공하기 위해 수행하는 일련의 행동을 설명하는 것으로, use case를 통해 특정 작업이나 기능이 어떻게 이루어지는지를 상세히 설명하고, 이를 통해 시스템이 제공하는 서비스의 범위를 명확하게 설정할 수 있다.use case 모델링은 use case diagram과 use case description..
use case 모델링use case 모델링use case 모델링은 시스템의 기능적 요구사항을 결정하고 설명하는 데 사용된다. 이를 통해 고객과 소프트웨어 개발자 간의 합의가 이루어지며, 시스템이 수행해야 하는 작업에 대해 명확하고 일관된 설명을 제공한다. 또한, 개발 과정 전반에 걸쳐 모든 개발자에게 이러한 요구사항을 효과적으로 전달하는 데 활용된다.use case란?use case는 시스템이 특정 사용자(액터) 에게 가치를 제공하기 위해 수행하는 일련의 행동을 설명하는 것으로, use case를 통해 특정 작업이나 기능이 어떻게 이루어지는지를 상세히 설명하고, 이를 통해 시스템이 제공하는 서비스의 범위를 명확하게 설정할 수 있다.use case 모델링은 use case diagram과 use case description..
2024.10.27 -
Activity Diagram비즈니스 프로세스는 여러 부서 간의 협업과 다양한 활동들이 유기적으로 이루어져야 하는데, 이를 효과적으로 관리하고 최적화하려면 각 단계의 활동을 명확하게 파악하고 시각화하는 것이 중요하다. 이때 activity diagram을 통해 비즈니스 프로세스 관리를 명확하게 할 수 있다.activity diagram은 비즈니스 프로세스 내에서 발생하는 복잡한 동작을 명확하게 모델링하고, 병렬적으로 수행되는 활동이나 데이터 흐름을 시각화하여 프로세스를 이해하기 쉽게 만든다.위 그림은 프린터 서버의 작동 과정을 보여주는 activity diagram으로, 작업 흐름이 조건에 따라 분기되는 방식을 통해 프린터 작업이 처리되는 일련의 과정을 설명하고 있다.또한 작업 흐름이 조건에 따라 분기될..
Activity DiagramActivity Diagram비즈니스 프로세스는 여러 부서 간의 협업과 다양한 활동들이 유기적으로 이루어져야 하는데, 이를 효과적으로 관리하고 최적화하려면 각 단계의 활동을 명확하게 파악하고 시각화하는 것이 중요하다. 이때 activity diagram을 통해 비즈니스 프로세스 관리를 명확하게 할 수 있다.activity diagram은 비즈니스 프로세스 내에서 발생하는 복잡한 동작을 명확하게 모델링하고, 병렬적으로 수행되는 활동이나 데이터 흐름을 시각화하여 프로세스를 이해하기 쉽게 만든다.위 그림은 프린터 서버의 작동 과정을 보여주는 activity diagram으로, 작업 흐름이 조건에 따라 분기되는 방식을 통해 프린터 작업이 처리되는 일련의 과정을 설명하고 있다.또한 작업 흐름이 조건에 따라 분기될..
2024.10.27 -
객체 지향 설계는 컴퓨터 프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리하며, 객체 지향 설계는 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있게 해준다. 이러한 유연함은 다형성을 통해 구현된다. 결론적으로 다형성의 본질은 유연한 변경이다. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능, 즉 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다. 또한 인터페이스를 안정적으로 잘 설계하는 것도 중요하다.좋은 객체 지향 설계를 위한 SOLID라는 5가지 원칙이 존재한다.1. SRP 단일 책임 원칙Single responsibility principle"한 클래스는 하나의 ..
SOLID객체 지향 설계는 컴퓨터 프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리하며, 객체 지향 설계는 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있게 해준다. 이러한 유연함은 다형성을 통해 구현된다. 결론적으로 다형성의 본질은 유연한 변경이다. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능, 즉 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다. 또한 인터페이스를 안정적으로 잘 설계하는 것도 중요하다.좋은 객체 지향 설계를 위한 SOLID라는 5가지 원칙이 존재한다.1. SRP 단일 책임 원칙Single responsibility principle"한 클래스는 하나의 ..
2024.10.27 -
우선 절차적 프로그래밍과 객체지향 프로그래밍은 서로 대조되는 개념이 아니다. 서로 상반되는 개념이 아니며 절차적 프로그래밍의 한계점들과 문제를 해결하기 위해 객체지향 프로그래밍 방식이 개발되었다.절차적 프로그래밍절차적 프로그래밍은 순차적인 처리를 바탕으로 프로그램 전체가 유기적으로 실행되도록 한 프로그래밍 방식이다. 절차적 프로그래밍은 procedure를 이용하여 작성되는데, procedure에는 루틴, 서브루틴, 함수 등이 존재한다.루틴프로그램에서 반복적이거나 독립적으로 실행할 수 있는 코드 블럭을 뜻하며 main문 외에도 서브루틴이나 함수 역시 루틴으로 간주됨서브루틴main문 밖에서 정의된 코드 블럭이며 반환값이 없는 작업을 수행함void printMessage() {...}함수main문 밖에서 정의..
절차적 프로그래밍 vs 객체지향 프로그래밍우선 절차적 프로그래밍과 객체지향 프로그래밍은 서로 대조되는 개념이 아니다. 서로 상반되는 개념이 아니며 절차적 프로그래밍의 한계점들과 문제를 해결하기 위해 객체지향 프로그래밍 방식이 개발되었다.절차적 프로그래밍절차적 프로그래밍은 순차적인 처리를 바탕으로 프로그램 전체가 유기적으로 실행되도록 한 프로그래밍 방식이다. 절차적 프로그래밍은 procedure를 이용하여 작성되는데, procedure에는 루틴, 서브루틴, 함수 등이 존재한다.루틴프로그램에서 반복적이거나 독립적으로 실행할 수 있는 코드 블럭을 뜻하며 main문 외에도 서브루틴이나 함수 역시 루틴으로 간주됨서브루틴main문 밖에서 정의된 코드 블럭이며 반환값이 없는 작업을 수행함void printMessage() {...}함수main문 밖에서 정의..
2024.10.27 -
is-a 관계와 has-a 관계는 클래스들의 관계를 표현할 때 사용된다.is-ais-a 관계는 말그대로 A는 B이다(A is B) 관계를 나타낸다.예를 들어보자. "사과는 과일이다" 라는 문장은 맞는 말이다. 그렇다면 "과일은 사과이다" 라는 문장은 맞는 말일까? 물론 아니다. 과일에는 사과 외에 다른 과일들도 들어갈 수 있기 때문이다.이러한 관계는 클래스들 사이에서 상속 관계로 나타낼 수 있다. "사과는 과일이다" 라는 문장에서 과일은 사과의 부모 클래스가 되고 다음과 같이 나타낼 수 있다.public class Fruit { int price; String color;}public class Apple extends Fruit { int sweetness_level;}has-ahas-..
is-a 관계와 has-a 관계is-a 관계와 has-a 관계는 클래스들의 관계를 표현할 때 사용된다.is-ais-a 관계는 말그대로 A는 B이다(A is B) 관계를 나타낸다.예를 들어보자. "사과는 과일이다" 라는 문장은 맞는 말이다. 그렇다면 "과일은 사과이다" 라는 문장은 맞는 말일까? 물론 아니다. 과일에는 사과 외에 다른 과일들도 들어갈 수 있기 때문이다.이러한 관계는 클래스들 사이에서 상속 관계로 나타낼 수 있다. "사과는 과일이다" 라는 문장에서 과일은 사과의 부모 클래스가 되고 다음과 같이 나타낼 수 있다.public class Fruit { int price; String color;}public class Apple extends Fruit { int sweetness_level;}has-ahas-..
2024.10.27 -
1. Self - describingdb 시스템은 db 구, 엔티티 타입, constraint에 대해 완전한 definition을 포함하고 있다. 즉 자기 자신에 대한 묘사가 포함되어 있다.2. Insulation between programs and data프로그램과 데이터는 독립적으로 동작한다. 예를 들어 데이터 구조나 저장 방식이 바뀌어도 응용 프로그램은 수정되지 않는다.3. Data abstractionstorage에 대한 detail들은 숨기고 유저에게는 db의 conceptual view만 보여줄 수 있다.4. Support of multiple view of the data각 유저는 DB를 원하는 만큼만 볼 수 있다.5. Sharing of data and multiuser transacti..
DB의 특징1. Self - describingdb 시스템은 db 구, 엔티티 타입, constraint에 대해 완전한 definition을 포함하고 있다. 즉 자기 자신에 대한 묘사가 포함되어 있다.2. Insulation between programs and data프로그램과 데이터는 독립적으로 동작한다. 예를 들어 데이터 구조나 저장 방식이 바뀌어도 응용 프로그램은 수정되지 않는다.3. Data abstractionstorage에 대한 detail들은 숨기고 유저에게는 db의 conceptual view만 보여줄 수 있다.4. Support of multiple view of the data각 유저는 DB를 원하는 만큼만 볼 수 있다.5. Sharing of data and multiuser transacti..
2024.10.27 -
1. Queries데이터와 데이터 스키마를 분명히 분리해주는 강력하고 정교한 query language가 필요2. Integrity일관되고 유효한 데이터만을 저장하기 위해 제약 사항(constraint)을 강제(enforce)하는 것이 필요3. Update데이터를 일관되게 조작하기 위한 방법이 필요4. Multiple users다중 reader, writer를 지원해야 함5. Crashes시스템 충돌이나 오류 발생 시 commit과 rollback 같은 기능을 통해 데이터 일관성을 유지할 수 있어야 함6. Data physically separate데이터의 물리적 분리를 통해 각 유저나 데이터 항목이 고유하게 존재하고, 참조 무결성(referential integrity)을 유지할 수 있어야 함7. Se..
DB를 사용하는 이유는?1. Queries데이터와 데이터 스키마를 분명히 분리해주는 강력하고 정교한 query language가 필요2. Integrity일관되고 유효한 데이터만을 저장하기 위해 제약 사항(constraint)을 강제(enforce)하는 것이 필요3. Update데이터를 일관되게 조작하기 위한 방법이 필요4. Multiple users다중 reader, writer를 지원해야 함5. Crashes시스템 충돌이나 오류 발생 시 commit과 rollback 같은 기능을 통해 데이터 일관성을 유지할 수 있어야 함6. Data physically separate데이터의 물리적 분리를 통해 각 유저나 데이터 항목이 고유하게 존재하고, 참조 무결성(referential integrity)을 유지할 수 있어야 함7. Se..
2024.10.27