본문 바로가기
728x90

Computer Science39

[CS] 결합도와 응집도 [CS] 결합도와 응집도 좋은 도구를 가지고 요리를 하는 방법은 너무나도 많다. 직접 화로에 고기를 굽는 방법도 있고, 스테인리스 팬에 고기를 튀기듯 굽는 방법도 있다. 그런데 멀쩡히 가스레인지가 있음에도, 화로를 피워서 그 위에 스테인리스 팬을 두고 고기를 굽는 것은 정말 비효율적인 방법이라고 할 수 있다. 도구를 올바르게 사용하는 법이 있듯, 객체 지향의 특성을 올바르게 사용하는 방법, 즉 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해나가는 방법이 있다. 많이 알려진 원칙은 SOLID(객체 지향 설계 5원칙)이다. 이것을 알아보기 이전에 결합도와 응집도를 먼저 알아보고자 한다. 다섯 가지의 원칙들도 결합도를 낮추고 응집도를 높이는 과정에서 모두 만들어진 것이라고 볼 수 있다. 그렇기 .. 2022. 7. 12.
[CS] 테스트와 TDD [CS] 테스트와 TDD 개발자의 필수 역량은? 기능을 빠르게 구현하는 것. 기능에 해당하는 테스트를 작성하는 것. 두 가지라고 할 수 있다. 빠르게 구현을 했다 하더라도, 그것이 신뢰가 없는 코드면 개발자는 쓸모 없는 에너지 드링크를 마시며 쓸모 없는 시간을 낭비한 것이라고 봐도 될 듯하다. 내가 쓸모 없는 시간을 보내지 않기 위해 나를 도와주는 것, 구현을 하고 나서 그것이 신뢰가 있는지를 확인해 볼 수 있는 것. 그것은 바로 '테스트 케이스'이다. 테스트란 무엇인가? 개발자 세상에서 테스트란, 소프트웨어 테스트를 말한다. 제품(함수, 특정기능, UI, 성능, API 스펙 등)이 예상하는 대로, 원하는 대로 동작 하는지 확인하는 것이다. 제품 또는 서비스의 품질을 확인하고 소프트웨어의 버그를 찾는 것.. 2022. 7. 9.
[CS] 객체지향 디자인패턴 [CS] 객체지향 디자인패턴 Java의 객체 지향을 공부하다 보면, 어떻게 객체 지향 프로그램을 잘 '설계'하고 개발해나갈 것인가를 고민하게 된다. 이 때 우리에게 답을 주는 것이 "객체 지향 디자인패턴"이다. 그림을 그리는 것 같은 디자인도 사람의 영감을 받아 어떤 디자인이나 기호, 캐릭터를 만들어내는 것 같지만, 그림을 그리는 디자인에도 일정한 패턴이 존재한다. 다른 말로 하면, '성공의 공식' 같은 것....! 마찬가지로 소프트웨어 설계 부분에서도 일정한 성공의 공식 패턴이 있다. 프로그램을 설계할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴을 의미한다. 디자인 패턴을 참고하여 개발을 할 경우 개발의 효율성과 유지보수성, 운용성 등의 품질이 높아지며, 프로그램의 최적화에 도움이 된다. 구성.. 2022. 7. 7.
[CS] 프로세스와 스레드 프로세스와 스레드 1. 프로세스의 개념 어떤 작업을 위해 실행할 수 있는 파일을 '프로그램'이라 한다. 그 프로그램이 컴퓨터에서 연속적으로 실행될 때, 그것을 프로세스라고 한다. 메모리에 올라와서 실행되고 있는 프로그램의 인스턴스를 가리키기도 한다. 프로세스는 CPU 시간, 운영되기 위해 필요한 주소공간, code-data-stack-heap의 구조로 된 독립된 메모리 영역을 자원으로 할당받는다. 여러 프로세스를 함께 돌리는 작업은 동시적, 병렬적, 또는 이 둘의 혼합으로 이루어 진다. 동시성은 프로세서 하나가 이거 조금 하고 이거 조금 하고 이거 조금 하고, 이렇게 여러 작업을 돌아가면서 일부분씩 진행하는 것이다. 이 과정이 빠르게 돌아가면 사람들은 이 프로세스들이 동시에 진행되는 것처럼 느낄 수 있다.. 2022. 7. 6.
[CS] 동기와 비동기의 개념 차이 [CS] 동기와 비동기의 개념 차이 우리는 이 개념어를 처음 들어보았을 수 있다. 하지만, 이 개념은 우리 일상속에 깊숙히 자리하고 있다. 평일 동안 열심히 일을 하거나 학교를 다니거나, 열심히 학원을 다니거나 해서 집안일에 소홀해져 집안이 엉망이 되었다고 하자. 주말을 맞이해서 우리는 집안을 원래대로 복구시켜 놓아야 한다. 밀린 빨래부터 널부러져 있는 옷가지, 수북히 쌓인 설거지 더미, 버리지 않아 초파리가 하나 둘 씩 생겨가고 있는 음식물 쓰레기 봉투, 방바닥에 널린 머리카락... 생각만 해도 3시간은 치워야 할 것 같다. 집안일은 어려운 것이 아니라 귀찮은 것이다. 그렇다면 귀찮은 일은 후딱 해치우고 다른 여가생활을 즐겨야 하지 않겠는가. 그럼 집안일을 시작해보자. 집안일을 빨리하고자 하는 사람은 .. 2022. 7. 5.
[C언어] call-by-reference vs call-by-value [C언어] call-by-reference vs call-by-value 정말 배우면 배울 수록 멱살을 잡고 흔들어 재끼고 싶은 C언어. 포인터 변수 / 포인터 상수 / 상수 포인터 등등등 무슨 비슷한 말은 많고 뜻은 전혀 다르고 처음들어보고... 하지만 살살살 알아가는 것이 공부의 재미 아니겠나... 이번 포스팅은 저번에 scanf를 다루다가 알게된 call-by 시리즈에 대해 알아보고자 한다. ✏️ call by value는 값에 의한 호출이라고 하며, ‘인자’로 받은 값을 ‘복사’하여 처리한다. ✏️ call by reference는 참조에 의한 호출이며, ‘인자’로 받은 값의 주소를 참조하여 직접 값에 영향을 준다. 그림으로 쉽게 보는 두 가지 개념 Call by value(값에 의한 호출) 실제.. 2022. 7. 4.
728x90