소프트웨어(21)
-
🖋 애플리케이션 설계 #2 - 객체지향, 디자인패턴
👍 객체지향이란? 실 세계의 개체(Entity)를 "속성"과 "메서드"가 결합된 형태의 객체로 보고 구현대상을 객체와 객체들 간 관계로 모델링하는 방법 객체는 클래스의 인스턴스이며, 추상화, 상속, 다형성, 캡슐화, 정보은닉의 특징을 가진다. 🙌 추상화 객체를 모델링할 때 필요로 하는 만큼만 속성과 메서드를 추출해내는 것 모델에 무엇을 포함하고 무엇을 뺄 것인지 아는 것이 가장 중요 🙌 상속 상위 클래스의 속성과 행위를 하위 클래스가 그대로 이어받는 것 상속을 이용하면 구현이 편리해지고 유지보수가 용이 🙌 다형성 상속을 받으면서 자신만의 커스터마이징이 가능함 메소드 오버라이딩(로직수정), 메소드 오버로딩(파라미터에 따라 다른 동작시키기 ) 등이 있다. 🙌 캡슐화 객체가 자신의 동작 원리를 클래스라는 껍데..
2020.07.20 -
🖋 애플리케이션 설계 #1 - 공통모듈 설계
공통모듈의 개념을 설명하고, 공통모듈을 도출하고 분리해 낼 수 있다. 공통 모듈 설계를 위한 모듈화 원리를 이해할 수 있다. 모듈화 지표인 결합도와 응집도를 이해하고, 결합도의 최소화와 응집도의 최대화를 적용할 수 있다. 👍 공통모듈이란? 시스템을 구축할 때 여러 하위 시스템에서 공통으로 사용되는 모듈로, 클래스, 라이브러리(클래스의 묶음), 컴포넌트(라이브러리가 체계화된 형태의 소프트웨어로, 독립적으로 동작 가능), 프레임워크가 있다. 👊 클래스 공통모듈이 존재할 수 있는 가장 기본적인 형태 👊 라이브러리 여러 개의 클래스를 종합한 것 클라이언트 소프트웨어가 일방적으로 호출함 👊 컴포넌트 라이브러리가 체계화된 형태의 소프트웨어 독립적으로 동작하고 구현, 명세화, 패키지화, 배포가 가능하다 내/외부 인터..
2020.07.18 -
📝 화면 설계 #2 - UI 설계서와 UI 유용성, UI 시나리오
👊 용어정리 프로토타입 : 새로운 소프트웨어의 설계 또는 성능, 구현 및 운용가능성을 평가하거나 요구사항을 좀 더 잘 이해하기 위해 전체적인 기능을 간략한 형태로 구현한 시제품 인터랙션 : 사용자와 시스템을 연결하는 것이 UI라면, 인터랙션은 UI를 통해 시스템을 사용하는 일련의 상호작용을 말한다. 감성공학 : 개인의 경험을 통해 얻어지는 복합적인 감성을 과학적 측면으로 측정하고 분석하여 제품설계에 최대한 반영하는 공학기술 생체측정기술, 오감센서 및 감성처리기술, 감성디자인기술, 마이크로가공기술, 인간에 대한 적합성을 판단하고 새로운 감성을 창출하기 위한 기술 👍 UI 설계서 UI 설계서란 사용자의 요구사항을 바탕으로 UI설계를 구체화하여 작성하는 문서로, 상세 설계 전에 대표적인 화면 설계를 담당한다...
2020.07.18 -
📝 화면 설계 #1 - 소프트웨어 아키텍처
소프트웨어 설계의 종류와 소프트웨어 아키텍처의 개념, 활용도, 소프트웨어 품질특성 구분하기 응용소프트웨어 개발을 위한 UI 표준 및 지침에 의거하여 개발하고자 하는 응용소프트웨어에 적용될 UI 요구사항을 확인 UI 스토리보드의 개념과 작성순서 설명 👍 소프트웨어 아키텍처(구조)가 무엇이고 왜 필요한가? 최근 사용자가 요구하는 기능이 다양하고 고도화되면서 소프트웨어의 동작과 개발도 복잡해졌다. 따라서 복잡한 개발을 체계화하여 개발을 더 쉽게 하도록 기본 틀을 만들 필요가 생겼고, 그래서 소프트웨어를 구성하는 컴포넌트(기능)들의 상호작용 및 관계, 각각의 특성을 사전에 파악하여, 이들이 상호 유기적으로 결합하도록 하는 여러 가지 원칙들의 집합이 등장했고, 이를 "소프트웨어 아키텍처"라고 한다. 👊 소프트웨어..
2020.07.18 -
📐 소프트웨어 설계 - 현행 시스템 분석하기
✅ 용어정리 하드웨어 구성도 : 서버의 주요 사양과 수량, 이중화(백업)가 적용되어 있는지 여부를 명시 오픈소스 : 소스코드를 공개해 누구나 특별한 제한 없이 그 코드를 사용할 수 있는 소스나 소프트웨어 👍 현행시스템 파악이란? 내가 소프트웨어를 새로 개발하려면 현재 시스템이 어떻게 구성되어 있는지 먼저 파악해야 한다. 파악할 요소로는 하위시스템 구성요소, 제공기능, 연계요소, 적용 기술요소, 소프트웨어, 하드웨어, 네트워크 구성요소 등이 있다. 현행 시스템을 분석하면 현재 개발범위와 향후 개발될 시스템으로의 이행방향성을 알 수 있다. 개발하고자 하는 응용소프트웨어와 관련된 운영체제, DB관리시스템, 미들웨어 등 요구사항을 식별할 수 있다. 개발하고자 하는 응용소프트웨어에 적용될 목표시스템을 명확하고 구..
2020.07.16 -
🔐 소프트웨어 개발 보안 구축 #10 - 시간 및 상태
👍 시간 및 상태란? 시간 및 상태는 동시 수행을 지원하는 병렬처리 시스템이나 다수의 프로세스가 동작하는 환경에서, 시간과 실행 상태를 관리하여 시스템이 원활하게 동작되도록 하기 위한 보안검증항목을 말한다. 다음은 시간 및 상태의 점검 미비로 발생할 수 있는 보안약점이다. TOCTOU 경쟁조건 (Time Of Check, Time Of Use) ❗️ 검사시점과 사용시점의 격차를 고려하지 않고 코딩한다면, 사용이 가능했던 자원이 사용할 수 없게 되거나, 프로세스가 가진 자원 정보가 실제 자원 상태와 일치하지 않는 동기화 오류, 교착상태 등이 발생하는 현상 ✅ 코드 내에 동기화 구문을 사용하여 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성함으로써 방지. 단, 동기화 구문은 성능감소를 동반하기..
2020.07.14