2025/06/06 33

[소프트웨어 공학] 9. 코딩

기초여기서 단위 테스트와 QA의 차이점함수들의 기본적인 인풋과 아웃풋을 확인해 주는게 단위 테스트그걸 통합하면서 발현되어야 하는 기능들을 통합적으로 테스팅하는게 QA 자주 발생하는 오류 메모리 누수 Memory Leak메모리가 프리 되지 않고 프로그램에 계속 할당되는 현상 구체적으로, 힙 영역에 올린 후 내리지 않으면 해당 메모리 공간에 OS가 할당하지 않으므로 사용할 메모리가 없어지는 상황을 말한다. 예시로, java를 사용한다면 JVM GC가 가비지 콜렉팅을 하면서 free를 해주지만 그게 즉각적인 free는 아니기 때문에 시스템에 장애가 오는 경우가 있다고 하셨다.JVM과 GC에 대해 공부해 봐야겠다고 생각했는데 이번 방학때 꼭!! 해야겠다 중복된 free 선언free를 안하는것도 문제지만 2번..

[소프트웨어 공학] 8. UI 설계

UI로 사용자 경험을 이끌어 내는것이다. 사용성 (usability)라는 척도로 얼마나 사용하기 편한지를 나타낸다.사용성에 영향을 주는 요소는학습 용이성효율성기억 용이성낮은 오류율자신감과 만족? 개발자는 시스템 내부 동작을 알고 있기 때문에 조금의 불편함이 있어도 사용할 수 있지만, 사용자는 그렇지 않다. 즉 개발자 관점에서 UI를 만드는 것과 사용자 관점에서 UI를 만드는 것은 굉장히 다르다-> 디자인 씽킹 멘탈 모델현실 세계의 사물이나 과정이 어떻게 동작하는지에 대한 개인의 이해. 위에서 나왔던 사용자 관점, 개발자 관점에 대한 내용을 멘타 모델이라고 표현할 수 있겠다. 이를 해결하기 위해서많은 사람들의 인터뷰가 필요하다고 하셨다. UI 설계 원리교수님은 초, 중에서 배우는 도덕에 비유하셨다단순하..

[소프트웨어 공학] 7. 아키텍쳐와 패턴 (중요)

아키텍쳐 기초수많은 아키텍쳐가 있지만 학부생들 대부분은 원시 코드를 사용한다고 지적해 주셨다.그 이유에 대해 코딩 테스트를 비판하시며 시스템을 크게 가져가면서 넓게, 크게 봐야 하는데 그걸 테스트 하지 않기 때문이라고 하셨다. 특히 아키텍쳐에 대한 생각 없이 개발하는 사람들이 대체 1순위이다,, 라고 하셨다. 되게 공감되는 이야기이였다. 요즘 채용 프로세스에 과제가 포함되는게 좋은 점인 것 같다. 추가로 링크드인을 꼭 가입하라고 하셨다. 나도 링크드인을 통해 modular monoliths를 접했고 현 프로젝트에 접목하고 있는데 정말 이건 혁신이다. 브라운 형님 멋있다관심있으신 분들은 보시길https://www.youtube.com/watch?v=5OjqD-ow8GE&t=1s 레퍼런스가 많이 없어서 고..

[DB] RDS PostgreSQL pg_dump 트러블 슈팅

배경RDS DB를 로컬 sql 파일로 덤프해야 하는 상황!Copy codepg_dump: error: server version: 17.2; pg_dump version: 14.17 (Homebrew)pg_dump: error: aborting because of server version mismatch로컬과 RDS 환경 postgresql 버전이 불일치해서 버전을 변경해야 했다pg_upgrade항상 한번에 되는게 없다바이너리 파일 위치랑 data 위치에 주의해야한다.https://ivdl.co.za/2024/09/28/upgrading-from-postgresql-16-to-17-installed-with-homebrew-on-an-apple-silicon-mac/Copy codebrew instal..

SUMMARY 2025.06.06

[기계학습 심화] Neural Network2

HistoryAlexNet에 사용된 Layer들을 보면크게 4가지가 있고 가장 기초가 되며 중요한 Layer들이다.하나씩 알아보자Fully Connected Layer이름 그대로 모든 Input과 Output이 연결되어 있는 Layer이다.Fully Connected Layer에 들어가기 전 input값들은 1차원으로 변환하는 작업을 거친다.W(Weight)가 학습 대상이며200 * 200 이미지로 예시를 들면 output이 200 * 200 이라 했을때200 * 200 * 200 * 200 = 1,600,000,000 의 파라미터가 필요하다.(16억) (1.6 billion)이는 현대 컴퓨터 성능으로는 사실상 불가능한 학습 파라미터 개수이다.이를 개선하기 위해 Convolutional Layer가 등장..

[소프트웨어 공학] 결합도와 응집도 + α

결합도와 응집도 추가 예제롤 살펴보자기본형 (데이터 결합도)Copy codeclass Bill {// 주차 요금 청구서 모듈 (사용시간과 할인률을 인자로 받고 계산하여 주차요금 메소드를 호출) public static int getBillFee(int time, int discount) { double discountPercentage = discount / 100; // 메서드안에서 또 다른 메서드를 호출해 의존도가 있긴 하지만, 메서드에 단순 파라미터 데이터를 보내는 형태 return Fee.calculateFee(time) * discountPercentage; }}class Fee {// 주차 요금 계산 모듈 public static int calculat..

[소프트웨어 공학] 6. 설계 원리

INTRO요구 분석은 ‘무엇을 만들것인가’를 다루는 작업 설계는 ‘어떻게 실현할 것인가’를 구체적으로 결정하는 활동전통적인 설계 원리가장 중요한건 효율성, 단순성.그 외에도분화, 계층화모듈화추상화 등이 중요하다 뒤에서 보자추상화컴포넌트 구현에 대한 자세한 사항을 염려하지 않고 추상적인 수준으로 컴포넌트를 다루는 도구라고 할 수 있다.캡슐화추상화된 대상이 제공하는 서비스를 쉽게 접근하게 하는 개념.서비스를 수행하는 핵심만 노출시키고 어떻게 서비스를 제공하는지 자세한 것을 숨긴다.모듈화결합결합은 모듈간 서로 의존하는 정도를 뜻한다.좋은 소프트웨어는 낮을 결합력을 가진다. 모듈끼리 의존도, 결합이 강해지면 이해하기 어렵고 변경할때 많은 부분을 고쳐야 한다.모듈간 결합도는 1. 모듈간 인터페이스수 2. 각 인터..

[소프트웨어 공학] 5-2. 요구 모델링

INTRO복잡함을 잘 관리하기 위해 모델링을 하는 것이고,시각화해서 커뮤니케이션 하기 위해 모델링을 하는 것이다.즉 복잡한 시스템을 추상화 시키는 것이 핵심.UML객체지향적인 소프트웨어를 모델링하는 표준 그래픽 언어.정적 모델링UML에서 정적 모델링의 대표적인 표현으로 클래스 다이어그램을 사용한다.이는 객체들의 공통 구조와 동작들을 추상화 시킨 것으로 객체 지향 개념을 정확히 알고 있어야 한다.객체지향은 전 글 참조UML에서 클래스 메서드를 오퍼레이션이라고 표현하고메서드는 오펴레이션의 구현이다.관계는 연관, 상속, 의존, 구현 4가지로 나뉜다.클래스 다이어그램 관계 표현Harbor(항구)는 Boat가 정박해 있다는 의미로 연관되어 있기 때문에 연관관계.즉 항구가 있을때마다 보트 인스턴스가 있다는 의미.B..

[소프트웨어 공학] 5-1. 객체 지향

INTROPermalink뒤에서 나올 모델링에 대한 내용을 알기 위해 필요한 객체지향.공통 구조와 동작을 추상화 시키는게 정적 모델링인데, 그걸 하나의 클래스로 표현하기 때문에 이 개념이 중요하다고 한다.객체가 무엇인지, 어떤 연관관계 집합, 상속 다양성 관계가 있는지에 대한 이해가 필요하다.교수님 말씀대로라면 그걸 왜 하는지에 대한 이해가 특히 필요하며 여태까지 객체지향에서 배운 것은 그런걸 할 수 있다는 것이지 어느 상황에서 어떻게 효과적으로 쓸지에 대해 잘 모른다고 하셨다.이제 알아보자.객체지향Permalink객체, 클래스Permalink객체를 인스턴스라고 생각하면 된다.클래스라는 설계도로 만들어진 (실존하는) 객체.캡슐화Permalink정보 은닉은 보안이 핵심이라기 보다는 알 필요가 없는 정보를 ..