💾 < Module  > 

Module은 Program에서 수행하는 기능을 모아 놓은 것을 의미한다. 수학 계산,데이터베이스 처리,사용자 인터페이스 구성 등이 Module의 좋은 예시이다. 이들 각각의 기능은 별도의 Module로 구성될 수 있다. 또한, 하나의 Module은 여러 개의 Component로 구성될 수 있다.

 

💾 < Component > 

"Program에서 기능을 수행하는 단위"를 의미한다. 예를 들어, 프로그램이 계산하는 기능을 가지고 있다면, 계산 기능은 계산 컴포넌트라 부를 수 있다.

 

이러한 Component는 다른 Component에 의존할 수 있으며, 또는 다른 Component에 의존성을 제공할 수 있다.

이러한 의존성 관계를 정의하고 관리하는 방법 중 하나가 DI(Dependency Injection)인 것이다.

 

Reference 1) : Wikipedia: Modular Programming

 

Modular programming - Wikipedia

From Wikipedia, the free encyclopedia Software design technique Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything neces

en.wikipedia.org

Reference 2) : Wikipedia: Software Component

 

 

Component-based software engineering - Wikipedia

From Wikipedia, the free encyclopedia Branch of software engineering An example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer's order, requires the card processing component to charge the customer

en.wikipedia.org

 

개발자는 종종 "Library"와 "Framework"라는 용어를 같은 의미로 사용한다. 그러나 차이가 있다.

🚀 < Library ? >

Library는 개발자가 이미 작성해놓은 코드 조각들로, 필요한 기능을 가져다 사용할 수 있게 도와준다.

예를 들어 Library는 IKEA에 가는 것과 같다. 이미 집이 있지만, 가구에 대한 약간의 도움이 필요해서. 다양한 물건을 고르고 선택할 수 있다.즉 내가 제어할 수 있다. 주로 Java의 'java.time' Package, React, jQuery가 있다. 

 

🚀 < FrameWork ? >

FrameWork는 Application의 기본적 구조를 제공한다. 마치 건물의 철골 구조를 세우는 것처럼. 이처럼 FrameWork는 개발의 방향을 정해주지만, 사용하기 위해서는 규칙을 따라야 한다. 예를 들면, Spring이나 Django와 같은 BackEnd FrameWork 혹은 Vue나 AngularJs 같은 FrontEnd FrameWork가 있다.

 

 

 

Reference : https://www.freecodecamp.org/news/the-difference-between-a-framework-and-a-library-bd133054023f/

 

The Difference Between a Framework and a Library

Developers often use the terms “library” and “framework” interchangeably. But there is a difference. Both frameworks and libraries are code written by someone else that is used to help solve common problems. For example, let’s say you have a prog

www.freecodecamp.org

 

'Developer 지식' 카테고리의 다른 글

Class와 객체의 개념(변수,배열,구조체,클래스)  (0) 2023.04.03
Difference that Module and Component  (0) 2023.04.03
Business logic  (0) 2023.04.02
Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02

비즈니스 로직이란 특정 비즈니스 분야에서 수행되는 사업 활동에 관한 규칙과 프로세스를 의미한다. 즉, 애플리케이션에서 구현되어야 할 기능들을 말하는 것이다.

예를 들어, 인터넷 쇼핑몰 애플리케이션에서는 상품 검색, 장바구니에 담기, 주문, 결제, 배송 등의 비즈니스 로직이 존재한다. 이러한 비즈니스 로직들은 애플리케이션의 핵심 기능을 구성하며, 제대로 구현되어야 애플리케이션이 원하는 대로 작동할 수 있다.

비즈니스 로직의 정확한 이해와 구현은 애플리케이션의 전반적인 품질과 성공에 결정적인 영향을 미친다. 앞으로의 프로젝트에서도 비즈니스 로직을 철저히 분석하고, 이를 바탕으로 견고한 애플리케이션을 만들어보려 한다.

'Developer 지식' 카테고리의 다른 글

Difference that Module and Component  (0) 2023.04.03
Library와 Framework의 차이점  (0) 2023.04.03
Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
객체(Object)  (0) 2023.04.02

도메인이란, 특정 분야에 관한 비즈니스 로직과 규칙을 담은 개념이다. 도메인은 애플리케이션의 비즈니스 로직을 구현하는 데 사용되며, 소프트웨어 개발 프로세스에서는 도메인 모델링을 통해 도메인을 정의한다.

예를 들어, 인터넷 쇼핑몰 프로젝트에서는 상품, 주문, 결제, 배송 등이 도메인이 될 수 있다. 이러한 도메인을 정확하게 이해하고 설계하는 것은 애플리케이션의 전반적인 품질과 성공 여부에 결정적인 영향을 미친다.

도메인 모델링을 통해 비즈니스 요구사항을 소프트웨어 설계에 반영할 수 있으며, 이를 바탕으로 개발자들은 애플리케이션의 핵심 기능을 구현할 수 있다. 이 과정에서 도메인 전문가와 개발자 간의 원활한 소통이 중요하다.

앞으로의 프로젝트에서도 도메인에 대한 이해를 바탕으로 더욱 견고한 애플리케이션을 구축해보고 싶다. 

'Developer 지식' 카테고리의 다른 글

Library와 Framework의 차이점  (0) 2023.04.03
Business logic  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
객체(Object)  (0) 2023.04.02
JAVA TDD  (0) 2023.04.02

Sample code in object and Instance.

//Object definition example code.
class Car {
    private String make;
    private String model;
    
    public Car(String make, String model) {
        this.make = make;
        this.model = model;
    }
    
    public String getMake() {
        return make;
    }
    
    public String getModel() {
        return model;
    }
}

// 인스턴스 생성
Car myCar = new Car("Toyota", "Camry");

// 인스턴스 속성 출력
System.out.println(myCar.getMake()); // Toyota
System.out.println(myCar.getModel()); // Camry

'Developer 지식' 카테고리의 다른 글

Business logic  (0) 2023.04.02
Domain  (0) 2023.04.02
객체(Object)  (0) 2023.04.02
JAVA TDD  (0) 2023.04.02
트러블 슈팅이란?  (0) 2023.04.02

객체(Object)

Objects can be represented through class.

Class는 객체의 속성(attribute)과 행위(behavior)를 Definition

객체는 클래스의 인스턴스(Instance), 각 객체는 자신만의 속성과 행위 가짐.

ex)Dog Class

Dog Class -> 품종, 색깔, 나이 attributes 혹은 먹다, 짖다, 꼬다 등의 행위 수행 가능.

ex2) Person Class

A Person class can have specific information such as name, age, and address

class Person {
  String name;
  int age;
  
  void introduce() {
    System.out.println("안녕하세요, 제 이름은 " + name + "이고, " 
   + age + "살 입니다.");
  }
}

// 클래스에서 객체 생성
Person person = new Person();
person.name = "John Doe";
person.age = 30;
person.introduce();

This code defined a 'Person' class.

It contains name and age variables and an include method.

The introduce method prints personal information. And create an object from the class, and set its variables to specific values. Finally, we call the object's introduce method to display the information.

'Developer 지식' 카테고리의 다른 글

Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
JAVA TDD  (0) 2023.04.02
트러블 슈팅이란?  (0) 2023.04.02
API가 뭘까? (Application Programing interface)  (0) 2022.08.01

TDD는 테스트 케이스를 먼저 작성한 다음, 그에 맞춰 실제 코드를 구현하는 개발 방식이다. 이 방법의 장점에 대해 알아보고 싶어서 조사해봤다.

먼저, TDD를 사용하면 코드의 기능을 빠르게 확인할 수 있다. 

테스트 케이스를 작성함으로써 개발자는 요구사항을 정확하게 이해하고 습득할 수 있다. 이는 코드를 작성하면서 기능을 점검하는 것보다 훨씬 효과적이다.

또한, TDD를 통해 버그와 오류를 최소화할 수 있다. 테스트 케이스를 미리 작성하고 이를 통과하는 코드를 작성함으로써, 문제가 발생할 여지가 적어진다. 이는 프로젝트의 전반적인 품질을 높여주는 결과를 가져온다.

TDD는 애플리케이션 개발에 있어 매우 유용한 방법론이며, 이를 통해 개발 프로세스를 더욱 효율적으로 만들 수 있다. 앞으로의 프로젝트에서도 TDD를 적극 활용하여 높은 품질의 코드를 작성해볼 생각이다.

'Developer 지식' 카테고리의 다른 글

Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
객체(Object)  (0) 2023.04.02
트러블 슈팅이란?  (0) 2023.04.02
API가 뭘까? (Application Programing interface)  (0) 2022.08.01

배탈이 났다.몸살로 이어졌다. 결국 병원가서 링거를 맞고 주말 내내 누워 있는 과정을 통해 몸상태를 복구하였다.

이 모든 과정을 컴퓨터로 옮겨서 보자면, "트러블 슈팅"

트러블슈팅이 개발과정에서 중요한 이유는

  • 프로젝트 진행중 필수적으로 나타나는 오류와 버그에 대해 전반적인 과정을 문서화를 통해 예방.
  • 문제해결 과정을 기록,상기 -> 추후 같은 문제 발생 시 신속 대처
  • 트러블슈팅 절차를 통해 계속되는 추가 질문을 답변하고 해결책 목록을 좁혀나가는 단계를 밟아나가거나 문제 해결에 도움이 될 해결책을 즉시 구현.

⛔트러블 슈팅의 기본적인 개념

가장 단순하고 빈도 높은 원인에서 가능성을 지워가는 것

이게 핵심이다.트러블 슈팅은 제거법의 개념을 기본으로 하고있다.pc가 멈췄어요 와 같은 트러블에 대해서는 전원의 on/off 여부, 전원플러그는 콘센트에 꽂혀있는가 와 같은 인과관계에서 하나씩 가능성을 제거해나간다.

⛔트러블 슈팅 방법

1. 문제 정의

  • 문제가 되는 동작 혹은 원인 확인ex) 배탈나버림

2. 사실 수집

  • 해당 문제에 대한 정보 수집
  • 문제를 재현하는 방법 수집ex) 배탈나게 한 음식에 대한 정보 수집

3. 원인추론

  • 확인된 사실을 통해 원인 추론ex) 아 고기때문에 배탈난거같다 많이먹었거든

4. 조사방법 결정

  • 증상과 추론 원인을 기반으로 어떤 순서로 문제를 해결할지 결정
  • 보통 가능성이 높은 원인을 우선적으로 조사ex) 고기를 얼마나 먹었는지 엄마한테 물어보기로 결정

5. 조사 방법 구현

  • 앞서 결정한 내용을 토대로 문제를 조사ex) 엄마 나 얼마나 먹었어? 한 5인분?

6. 결과 관찰

  • 조사 방법을 구현하고 그 결과를 기록
  • 만약 문제가 해결되지 않았다면 4번으로 돌아감ex) 아 5인분먹으면 배탈나는구나 이제 5인분말고 4인분까지 먹어야겟다

7. 문서 작성

  • 문제를 해결한 순서를 정리해 문서화함ex) 머리에 새겨넣는다

⛔적절한 트러블 슈팅을 실현하기 위해서

예시를 쉽게 들어서 잘 대처할 수 있다고 생각이 들 수도 있지만 실제 운용 측면에서 트러블 슈팅에는 몇 가지 과제가 있어 생각처럼 운용이 되지 않는 경우도 있다.

우선순위에 따라 어떤 대응을 해야하나

  • 개발운영팀에서 우선순위가 매우낮은 트러블이라도 문제가 발생하면 바로 대처해야된다. 우선순위가 매우 낮더라도 무시하지말고 우선도가 낮은 트러블에 대해 대처방안을 수립해야된다.대처 프로세스 체계화
  • 이슈가 생겼을때 해당 이슈를 한명만 처리할 수밖에 없다면 그 한명은 업무쏠림으로 다른 업무에 무리가 갈 수가 있다. 또는 인원부족으로 신입이나 경력이 짧은 직원이 대처해야된다면 이를 어찌 해결해야될까?
  • 이러한 상황을 피하기 위해 트러블 대응 업무를 체계화하고 매뉴얼로 문서화를 하여 표준화 하는 것이 중요하다. 그렇게 하면 누구라도 동일한 대응이 가능하여 원활하게 해결, 복구가 가능하다
  • ⛔정리
  • 개인적으로 개발이라는 분야는 트러블 슈팅을 통해 실력이 급상승할 수 있다는 생각을 가지고 있다. 처음 시작할때와 프로젝트를 시작하면서 겪었던 모든 오류와 과정을 몸소 겪으며 얻은 경험과 소스와 문서를 추후 다른 프로젝트를 진행하면서 생기는 오류에 대입해볼 수도 아니면 같은 오류일때 바로바로 대처가 가능하기 때문이다.
  • 파이썬 머신러닝 프로젝트를 진행하면서 환경세팅에만 2주가 걸렸다. 난생 처음해보는 분야이기에 분명 구글에 검색한대로 따라하고 환경변수 설정하고 install하라는 모든 행동을 다했지만 안되어서 멘탈이 박살나기 직전까지 하다가 결국 해결했는데 이는 절대 잊어버릴 수가 없다.
  • 면접에서 트러블슈팅 사례를 말해달라고 하면 당황하지말고 평소 개인 토이프로젝트나 프로젝트에 대한 트러블 슈팅에 대해 잘 숙지하고 정리를 해서 점수를 얻도록 하자.

'Developer 지식' 카테고리의 다른 글

Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
객체(Object)  (0) 2023.04.02
JAVA TDD  (0) 2023.04.02
API가 뭘까? (Application Programing interface)  (0) 2022.08.01

 

Application Programing interface

API의 정확한 의미는 Application Programing interface이다. 우리나라 말로 "응용 프로그램 프로그래밍 인터페이스"

초보자에게 있어서, API는 굉장히 이해하기 어렵다. 이유는 컴퓨터 공학 분야의 추상적인 개념 이기 때문일 것이다.

나 또한 API라는 것을 처음 들어보았을 때, 설명글을 읽었는데 무슨 말인지 이해 못 해서 한 두 번 정도 더 읽었던 기억이 있다.

그러나 이해하고 보니, API는 프로그래밍을 배우는 데 반드시 필요한 지식이었고, 개발할 때 매우 매우 자주 등장 하니, 꼭 알아 두어야 할 필요가 있다.. 이해하여 내 것으로 만들면, 개발의 폭도 넓어져서 개발자의 역량 또한 높아지니까 알아둔다고 손해 볼 건 없다!

 

API는 소프트웨어의 일부를 공개하여 다른 소프트웨어와 기능을 공유할 수 있도록 한 것이다.

소프트웨어의 일부를 WEB에 공개함으로써 누구나 외부에서 이용할 수 있게 된다.

이를 통해 자신의 소프트웨어에 다른 소프트웨어의 기능을 내장할 수 있게 되므로 애플리케이션 간에 연동할 수 있다.

 

API의 장점

1. 효율적으로 프로그래밍이 가능하다.

만들고 싶은 기능이 이미 API에 게시되어 있다면 동일한 프로그램을 하나를 직접 만들 필요가 없다. 

이를 통해 개발 시간을 대폭 단축할 수 있다.

또한 무료로 이용할 수 있으므로 개발 비용도 대폭 절감할 수 있고 효율적으로 애플리케이션을 제작할 수 있다.

그 밖에도, 툴이나 서비스를 사용하는 것으로 보다 앱 개발을 효율화할 수 있다.

2. 데이터를 보조 이용 가능하다.

API에서는 타사 데이터를 참고, 사용할 수도 있다. 같은 정보를 다양한 분야에서 활용하게 함으로써 정보를 분석하는 것이 용이해지고, 각 분야에 특화된 분석을 할 수 있다. 거기에서 고객의 경향과 특징을 발견함으로써 혁신이 태어나 새로운 비즈니스가 탄생할 수 있다.

3. 보안 향상

페이스북, 트위터, 구글의 API 키를 획득하면 자사 서비스에 SNS 로그인을 설정할 수 있다. 즉, 처음부터 회원 등록 시스템을 제작하지 않아도 Facebook, Twitter, Google의 보안 수준이 높은 시스템을 사용할 수 있어 자사의 서비스 보안을 향상할 수 있다. 다만, 어디까지나 API를 이용한 일례에 지나지 않으므로 주의.

 

 

API 활용 사례

 

LINE API

LINE에는 다음과 같은 API가 있다.

  • 채팅봇 개발
  • LINE 로그인 기능
  • IoT 개발
  • 음성 어시스턴트 개발
  • LINE 결제 기능
  • 소셜 버튼 · 알림 기능


이처럼 LINE은 웹 개발에 사용할 수 있는 것뿐만 아니라 IoT 개발 등 폭넓은 기능을 공개하고 있다. 

 

YouTubeAPI

YouTubeAPI는 동영상 실적을 높이기 위해 분석할 수 있는 기능을 추가할 수 있다. YouTubeAPI에서 할 수 있는 작업은 다음과 같다.

  • 동영상의 효과 측정을 할 수 있다.
  • 동영상 제어 가능.
  • 채널의 데이터를 일괄 취득할 수 있다.

 

 

 

 

Amazon API

Amazon의 API로 할 수 있는 일은 다음과 같다.

  • 1일 단위로의 판매액·소개료의 추이를 파악할 수 있다.
  • 상품의 최신 정보를 표시할 수 있다.

Amazon의 API는 이러한 제휴사에게 유용한 기능을 제공한다.

 

이 외에도, 공공데이터 Open API 서비스 등, 정말 무궁무진한 API들이 많으니, 공공데이터 API 활용법 등, 공부를 하는 것이 웹 개발에 아주 큰 도움이 될 것이라고 나는 확신한다!

'Developer 지식' 카테고리의 다른 글

Domain  (0) 2023.04.02
Sample code in object and Instance.  (0) 2023.04.02
객체(Object)  (0) 2023.04.02
JAVA TDD  (0) 2023.04.02
트러블 슈팅이란?  (0) 2023.04.02

+ Recent posts