개인학습

    OAuth

    OAuth가 정의하는 4가지 Roles Resource Owner Protected Resource로 접근할 수 있는 entity를 말한다. 즉 보호된 자원 또는 데이터에 대한 소유자 혹은 사용자를 의미한다. 현재 프로그램을 개발중이고, OAuth를 해당 프로그램에 적용하는 중이라면, Resource Owner는 프로그램을 사용하는 유저라고 생각하면된다. Resource Server Server는 protected resource 를 호스팅하며 protected resource로의 접근을 돕는 역할을 한다. 트위터 서버가 사용자의 트윗과 프로필 정보와 같은 자원을 호스팅하는 것을 그 예시로 들 수 있다. Client protected resource request를 생성하며, 사용자 혹은 자원 소유자의 ..

    MVC 패턴

    MVC 패턴이란 MVC 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나를 의미한다. Model - View - Controller의 약자이며 기능 별로 코드를 분리하여 유지보수를 쉽게 하고 확장성과 재사용성을 강화할 수 있다는 장점을 가지고 있다. 각 모듈들의 상관관계를 그림으로 나타내면 아래와 같다. Model 모델은 `데이터를 저장, 검색, 업데이트`하고 변경 사항을 관리하는 역할을 한다. 일반적으로 `View나 Controller에 대한 직접적인 참조를 가지지 않아야` 한다. View `사용자의 인터페이스`를 담당하며, 데이터를 시작적으로 표현하는 기능을 한다. 사용자가 정보를 보고 상호작용을 하는 부분으로, 데이터를 `모델에서 가져와 표시`하는 역할을 한다. View는 `사용자가 입력한 ..

    Linear-time Temporal Logic guided Greybox Fuzzing 정리

    이 글은 Linear-time Temporal Logic guided Greybox Fuzzing 논문을 바탕으로 정리한 것입니다. Abstract 소프트웨어 모델 체킹 및 런타임 체킹은 소프트웨어 시스템의 시간적인 속성을 확인하기 위해 널리 사용되는 기술이다. 이러한 기술은 주로 '버그 찾기' 즉, 시간적인 속성 위반을 찾는 실제 응용에서 주로 사용된다. 이 논문은 선형 시간 시계열 논리, 즉 LTL 속성 위반을 찾기 위한 그레이박스 fuzzing framework에 대해 소개하고 있다.해당 프레임워크는 C/C++ 로 작성된 순차 프로그램과 LTL 속성을 입력으로 받는다. 이후 상태를 가진 소프트웨어 시스템에서 LTL 속성 위반 또는 counterexample trace를 찾는다. 하지만 이 자체로 검..

    (TIL) Model Checking

    이 게시글은 크티스텔 바이어의 Principles of Model Checking을 학습한 내용을 정리한 것입니다. 소프트웨어 검증의 필요성 소프트웨어를 개발할 때, 30~50%의 비용은 소프트웨어를 테스트하는데 소모된다. 그만큼, 소프트웨어가 버그가 없는지 확인하는 과정은 제품을 출시함에 있어 매우 중요한 과정이다. 왜냐하면, 소프트웨어에서 버그는 빨리 찾을 수록 미래에 발생할 수 있는 어마어마한 비용을 절감할 수 있기 때문이다. 실제로 소프트웨어의 결함을 고치는데 사용되는 비용은 maintenance 과정에서 버그픽스가 이루어질 경우 design phase에서에 비하여 약 500배의 비용이 소모된다고 한다. 이러한 비용적 측면에서, 소프트웨어를 미리 철저하게 검증하는 과정이 중요함은 너무나 명실상부하..