본문 바로가기

분류 전체보기154

SOLID 원칙 SOLID 원칙 좋은 객체지향 설계를 만들기 위한 기본 원칙들 SRP (단일 책임 원칙: Single Responsibility Principle) OCP (개방 폐쇄의 원칙: Open Close Principle) LSP (리스코프 치환 원칙: The Liskov Substitution Principle) ISP (인터페이스 분리의 원칙: Interface Segregation Principle) DIP (의존성 역전의 원칙: Dependency Inversion Principle) SRP 단일 책임 원칙 하나의 클래스가 하나의 기능만 가지고 있도록 설계 - 독립성 '하나의 변경 이유' 만을 갖도록 설계 "The Audience"(해당 클래스를 사용하려는 무언가) 찾기 가장 기본적이지만 가장 직접 구현.. 2021. 6. 13.
[소프트웨어공학] 형상 관리 - 형상 항목, 형상 식별자, 베이스라인 Github로 보기 형상 관리 형상 관리란 의미 소프트웨어 개발 산출물이 배치되어 있는 배열 정의 형상 항목을 식별하여 기능적 물리적 특성을 문서화 특성에 대한 변경을 제어 변경 처리 상태를 기록 및 보고 목적 프로젝트의 생명 주기 동안 제품의 무결성과 변경에 대한 추적성을 확보하기 위한 활동 형상 관리의 필요성 프로젝트에 내재된 문제점 요구사항의 변화가 많음 산출물에 대한 수정 결과가 관련자들에게 제대로 통보 되지 않음 동일한 산출물에 대해 개별적으로 작업을 함 하나의 산출물이 여러 개의 사본으로 존재하여 혼란을 초래 형상 관리의 필요성 소프트웨어의 특징으로 인해 발생할 수 있는 위험을 최소화하기 위해 비가시성, 변경 추적의 어려움, 관리 통제의 어려움, 많은 요구사항 변경 형상관리 활동 역할 및 책임.. 2021. 6. 3.
[소프트웨어공학] 검증과 확인 - 테스팅(화이트박스/블랙박스/기본경로) Github로 보기 검증과 확인 프로세스 검증과 확인 검증 올바른 제품을 생성하고 있는가 -> 요구사항 명세서 기반 판단 확인 제품이 올바르게 생성되고 있는가 고객이 의도한 요구사항에 따라 구현되었는지(명시되지 않은 것도 포함) 검증과 확인 작업은 실제로 구분하기 어려운 경우가 존재 방법과 종류 정적인 방벙 소프트웨어 개발 중에 생성되는 모든 산출물들에 대해 적용 가능 검토 - 코드리뷰 등 (인스펙션) (워크스루) 동적인 방법 소프트웨어 실행하여 결함을 찾아냄 대표적인 방법: 테스팅 Peer review란 동료 검토 절차 공지와 배포 준비 검토자는 에러 체크리스트로 산출물을 검토 검토 작성자, 진행자, 검토자들이 모여 산출물 검토 검토 보고서 작성 후속 조치 소프트웨어 테스팅 결함을 지칭하는 다양한 용어.. 2021. 6. 2.
주피터에 여러 파일 한 번에 넣기 - 압축 파일 이용 로컬에서 주피터를 사용하는 경우 주피터가아닌 다른 터미널이나 인터페이스로 파일을 업로드하면 되지만, aws 등에 원격 접속하는 경우에는 쉽지가 않습니다. 압축을 이용해 파일을 한 번에 업로드를 해보겠습니다. aws 환경에서 주피터 노트북으로 test, train, val로 구성된 파일 및 디렉토리를 업로드 해보겠습니다. 먼저, animal2.zip을 만듭니다. 1. animal.zip을 업로드하고, 압축을 풀 폴더를 생성한다. (사진에선 animal2.zip이라고함) 2. 리눅스 명령어를 수행할 파이썬 파일하나를 만든다 (커널 상관 없음) (new 터미널로해서 접근하기엔 경로를 잘 못 찾겠었음) 저는 animal2.zip이 있는 폴더에 terminal.py를 생성했습니다. 3. ! 로 리눅스 명령을 수행.. 2021. 5. 25.
[소프트웨어공학] 설계 2 - 객체 지향, 클래스 다이어그램, 시퀀스 다이어그램 Github로 보기 객체 지향 개념 객체란 특성(Attribute)과 행위(Behavior)를 가지고 있는 인지할 수 있는 개체(Entity) 특성: 해당 객체에 저장되어 있는 데이터 행위: 객체가 할 수 있는 일, 객체의 상태가 변하게 하는 원인을 제공 다른 객체와 구별할 수 있는 정체성(identity)를 가짐 클래스와 객체 클래스 여러 객체들의 공통된 속성을 나타내기 위한 대표적 구조 객체들이 내부적으로 어떠헥 구성되어 있는지 설명 객체 클래스의 실체(instance)라고도 함 각 객체 속성은 같지만 서로 독립적임 객체지향 방법의 특징 절차를 강조하는 구조적 방법은 데이터를 소홀히 하게됨 객체지향 방법의 특징 시스템을 구성하는 요소들은 객체로 시스템 개발의 복잡한 문제들을 캡슐화, 상속, 다형성 개.. 2021. 5. 17.
[심층학습] 합성곱 신경망 - 합성곱층, 풀링층, CNN 합성곱층 CNN의 구조 CNN의 주요 구성 요소: 합성곱층 (convolutional layer) receptable field 안에 있는 영역만 상위 레이어 유닛에 연결 레이어를 거칠 수록 저수준 특성에서 고수준 특성으로 조합해 나감 합성곱 연산 output image의 크기: floor((I - F + 2P) / S + 1) I: 입력 영상의 크기 F: 커널의 크기 S: 스트라이드 P: 패딩 convolution layer의 파라미터 수: w * h * ch * n + n 커널의 높이 * 넓이 * 채널 수 * 갯수 + bias 커널의 갯수와 output의 채널 수가 같음 풀링층 풀링 정보의 압축, 축소 보통 입력 채널 수 = 출력 채널 수 종류 max pooling: 강한 자극만 기억 average .. 2021. 5. 17.
[소프트웨어공학] 설계 1 - 추상화, 모듈화, 정보은닉, 응집력, 결합도 Github로 보기 상위 설계와 하위 설계 상위 설계 아키텍처 설계, 예비 설계라고 함 소프트웨어 구성 컴포넌트들 간의 관계로 구성된 시스템의 전체적인 구조 시스템 구조도, 외부 파일 및 DB 설계도, 화면 및 출력물 레이아웃 등을 포함 하위 설계 모듈 설계, 상세 설계라고 함 시스템의 각 구성 요소들의 내부 구조, 동적 행위 등을 결정 하위 설계 방법 절차기반(Procedure-Oriented), 자료위주(Data-Oriented), 객체지향(Object-Oriented) 설계 방법 설계 프로세스 좋은 설계란 요구사항 명세서의 모든 내용을 구현해야 함 구현 또는 테스트로 추적이 가능해야 함 유지 보수 시 변경이 용이해야 함 설계 방식 프로세스 지향 설계 (Process Oriented Design) 객.. 2021. 5. 11.
[백준] 1072: 게임 파이썬 리뷰 - 연산 오류, Y*100//X, int(Y/X*100) 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 풀이는 전형적인 이분탐색 문제입니다. 하지만 연산에 관한 문제 때문에 리뷰를 해보려합니다. 해당 문제에서 승률을 계산하는 방법은 두가지가 있습니다. 1. Y*100//X 2. int(Y/X*100) 해당 문제에서 2번을 이용해 연산을 하면 틀립니다. 간단한 예시는 29/50이 있습니다. 29/50*100=58.0 이어야 하는데, 파이썬 연산에서는 그렇지 않았습니다. 여기서 주목해야 할 것은 실수의 연산입니다. 실수의 연산은 부정확할 수가 있으므로 사용에 .. 2021. 5. 9.