본문 바로가기

공학

(11)
플래닝 포커와 프레젠톡 한개의 프로젝트 안에는 수많은 요구사항들이 존재한다. 프로젝트가 진행되면서 새로운 요구사항이 생기기도 하고, 어떤 요구사항은 다른 요구사항들에 묻혀 사라지기도 한다. 이렇게 한 프로젝트를 진행하기 위해 처리해야할 요구사항이 많다보니 개발팀은 요구사항중 중요한 요구사항을 우선적으로 개발해나가야 한다. ​ 하지만 어떤 요구사항이 중요한 요구사항인지 어떻게 알 수 있을까? 한 프로젝트에는 다양한 이해관계자들이 엮여있으며, 그들은 각각 다른 환경에서 살아오고 다른 분야에 종사하고 있는 사람들임으로 어떤 요구사항을 우선적으로 처리해야할지 서로 다른 생각을 가지고 있다. 그리고 프로젝트 전체를 위해서 어떤 요구사항이 좋은지 인지하고 있다고 해도 자신의 이익을 위해 다른 요구사항이 중요하다고 주장할 수도 있다. ​ ..
테스트의 원리 -2 지난번 글에서는 '완벽한 테스트는 불가능하다, (테스트는)개발 초기에 시작한다, 파레토법칙'에 대해 정리해보았다. 이 세가지 주제에 대해 공부하면서 테스팅도 복잡계에 속함을 알 수 있었고, 아무리 숙련된 전문가도 테스팅 환경에 대해 예측할 수 없음을 알 수 있었다. 사람은 복잡계에서 정확한 예측은 불가능하지만, 모든것을 예상하지 못한다는 것을 인지하면 역설적으로 무언가를 예측할 확률이 조금 더 올라가는듯 하다. ​ 이번에는 나머지 테스트 원리들을 정리하며 테스트에 대한 글을 마무리해보고자 한다. 나머지 원리들도 복잡계의 기본 원리를 떠올린다면 더 쉽게 이해할 수 있을 것이다. 이번에 핵심 주제는 '핵심이 뭔지 파악하자' 라고 요약할 수 있다. 속도보다 방향이 중요하다는 말이 있듯이, 개발에서도 방향을 잘..
테스트의 원리 -1 개인적인 일이든 회사 업무든 우리는 무언가를 만들 때가 있습니다. 그리고 이런 창작 활동은 처음에 계획한대로 진행되기 힘들기에 원하는대로 작업이 진행되고 있는지 테스트 진행이 필요합니다. 테스팅이 잘 진행되면 진행될수록 산출물의 품질과 신뢰도가 향상되고, 개인적으로도 원하는 작업물을 만들 확률이 크게 증가합니다. 이번에는 이런 테스팅 작업을 수행할 때의 일반적인 원리에 대해 정리하고 저의 경험과 생각을 덧붙여 글을 써보도록 하겠습니다. ​ 1. 완벽한 테스트는 불가능하다. - 테스팅은 결함이 존재함을 밝히는 것으로 결함이 없다는 것을 밝히는 것이 아니다. 결함이 전혀 발견되지 않은 경우라도 결함이 없다고 증명할 수는 없다. - 이 세상에 존재하는 모든 가능성을 테스팅하는 것은 가능하지 않다. ​ 아무리 ..
협업 도구 정리 협업을 하거나 다른사람과 프로젝트를 진행할 때 사용하면 좋은 도구들을 정리해 보았습니다. 필요한 툴을 하나씩 익히다 보면 앞으로 프로젝트를 진행하면서 소비될 시간, 노력, 돈을 크게 아낄 수 있을 것입니다. 취업의 가능성이 올라가는 것은 물론이고요! ​ 프로젝트 및 일정관리 -구글 캘린더: 간단하게 일정을 조회하고 관리할 수 있는 구글 캘린더입니다. ​ -분더리스트: '할 일 앱'으로 유명했던 분더리스트입니다. 현재 단독 서비스를 종료하고 마이크로 소프트의 '투 두'앱으로 병합되었습니다. 분더리스트(Wunderlist), 2020년 5월 서비스 종료 공식 발표 마이크로소프트에 합병되며 마이크로소프트 ToDo로 이전도구 공개내년 5월까지 동기화 기능 제공하며 데이터 이전 도구도 함께 제공 www.ilyow..
객체지향기법과 자판기 © nicsandman20, 출처 Unsplash 오늘은 붕어빵 기계에 이어 자판기로 객체기향기법에 대해 설명해보고자 한다. 지난번에는 현실 세계의 붕어빵 틀(개체)를 추상화하여 만든 객체로 효율적이게 붕어빵 기계를 만드는 예시를 통해 '상속, 다형성, 추상화'에 대한 개념을 알아보았다. 이번에는 자판기를 이용해서 객체지향 기법의 다른 원칙인 '캡슐화'와 '정보 은닉'에 대해서 설명해보고자 한다. ​ 일단 자판기를 어떻게 추상화해볼 수 있을지 생각해보자. 먼저 현실세계의 개체를 추상화하여 객체로 만들 때, 이러한 객체를 만드는 틀을 클래스라고 한다. 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다. 객체는 클래스에 정의된 대로 생성된다. 클래스는 현실세계의 자판기를 본따서 만든..
객체지향기법과 붕어빵 © mikesween, 출처 Pixabay 이번에는 가장 대중적인 프로그래밍 방법론인 객체지향 프로그래밍에 대해 알아보자. 객체지향 프로그래밍은 현실세계에 존재하는 개체를 기계의 부품처럼 하나의 객체로 만들어 기계적인 부품들을 조립하듯이 프로그래밍을 진행하는 기법을 이야기한다. ​ 개체와 객체를 이해하기 쉽게 비유해보자면 현실세계의 붕어빵 틀을 개체, 이 틀을 추상화하여 프로그래밍에 이용가능하게 바꾼것을 객체라 생각하면된다. 객체지향기법에서는 이렇게 설계한 붕어빵틀을 복사하거나 조금씩 변형하여 효율적으로 붕어빵기계를 제작한다. 한 붕어빵 기계에 5개의 틀이 필요하다고 할때, 이 5개를 하나하나 설계하여 제작하는 것이 아닌 한개의 틀만을 설계하여 간단하게 5개의 붕어빵 틀을 만드는 것이다. ​ 이렇게 객체..
아키텍처 패턴을 배우는 이유 © StockSnap, 출처 Pixabay 소프트웨어를 공부하는 사람들은 소프트웨어를 설계하는 가이드라고 할 수 있는 '아키텍처 패턴'을 배우게 된다. 여기서 패턴이란 특정문제에 대한 해법을 추상화 하고 그 안의 공통된 요인을 추출하여 정형화한 것을 의미한다. 즉, 특정 종류의 일을 해결하기 위한 방법을 간단하게 정리한 것 이라고도 할 수 있다. 하지만 이런 아키텍처 패턴을 배우지 않고도 프로젝트나 개발을 잘 진행하는 사람들도 있다. 그들은 개발도중에 특정 문제가 발생하면 자신만의 방법으로 문제를 해결해나가며 개발을 진행한다. 어떻게 보면 정해진 방법이 아니라 창의적인 방법을 사용하는 그들이 더 멋있어보일수도 있다. 아키텍처 패턴은 왜 배우는 것일까? ​ ​ 1.인수인계 능률 증가 모두가 같은 방식의 패..
광통신이론 1 스넬의 법칙 : N1sinθ1= N2sinθ2 ( N=굴절율 , θ=입사각, 굴절각 ) 굴절율 : 자유공간광속 / 물질광속 임계각 : θcritical = arcsin(n2/n1) dB : 10log(P/Pref) (P:현재 관심 에너지 ,Pref: 기준 에너지) 입사각을 구하는 방법 1.스넬의 법칙 이용 N1Sin(90- θcritical)=sin(입사각) (여기서 N1은 코어의 굴절율) 2.개구수 이용 입사각 : arcsin NA ▷입사각의 수용뿔 범위 밖의 입사광선이 들어오더라도, 클래딩과 공기층과의 굴절율 차로 전반사가 일어날 수 있다. 광섬유의 손실 1.흡수 광섬유 속에 수산기 이온과 금속찌꺼기에 의해 빛 에너지가 감쇠됨. 2.레일리 산란 (레일리 산란의 예 : 하늘) 전자기파가 파장보다 작은 ..