[소프트웨어 공학] - 테스트 (Testing)
·
💻 Computer Science/소프트웨어 공학
테스트 (Testing) 소프트웨어 개발 과정 중 실수와 결함이 발생하는 것을 필연적인데, 이 실수와 결함을 낮추는 방법은 두 가지이다. 첫 번째는 처음부터 결함이 발생하지 않도록 방지하는 것, 두 번째는 유입된 결함을 식별하고 제거하는 것이다. 테스트는 소프트웨어에 결함이나 원치 않는 동작을 찾아내고 소프트웨어가 요구와 제약에 맞는지 검증하는 작업이다. 즉, 테스트 작업은 유입된 결합을 식별하고 제거하는데 초점을 둔다.버그, 오류, 결함, 고장 버그, 오류, 결함, 고장이라는 용어를 잘 구별하면 테스트 작업에 도움이 된다. 버그는 문제, 결함 등을 나타내는데 일반적으로 사용되는 용어이다.`오류(Error)`: 개발자가 잘못하여 설계나 코딩에서 실수한 것이다. 즉, 사람의 실수이다.`결함(Defect)..
[컴퓨터 네트워크] - 네트워크 보안 (Network Security)
·
💻 Computer Science/컴퓨터 네트워크
네트워크 보안 (Network Security) 정보 기술의 발전으로 수많은 데이터를 공유하면서 보안을 위협하는 사이버 범죄도 증가하고 있다. 네트워크가 개방되고 성능 및 시스템 간 연결성이 강화되면 이에 비례하여 취약성도 증대된다. 보안을 명확하게 경계를 구분하는 것은 어렵지만 크게 컴퓨터 보안과 네트워크 보안으로 구분된다.`컴퓨터 보안`: 컴퓨터 자체의 데이터를 보호한다.`네트워크 보안`: 컴퓨터 간 데이터를 안전하게 전송한다.네트워크 보안의 요구 사항 네트워크 보안의 요구 사항은 크게 “비밀성”, “무결성”, “가용성”이다.`비밀성(Privacy)`: 데이터의 소유자가 원하는 대로 비밀을 유지하는 것으로, 비밀성을 보장하는 방법으로는 “암호화”와 “접근 통제”가 있다.`무결성(Integrity)`:..
[컴퓨터 네트워크] - 네트워크 관리 (Network Management)
·
💻 Computer Science/컴퓨터 네트워크
네트워크 관리 (Network Management) 네트워크 관리란 제한된 인력과 비용을 활용하여 네트워크의 효율성과 생산성을 높일 수 있도록 복잡한 네트워크를 제어하는 일련의 과정으로, 네트워크에 분산된 각종 자원을 분배하고 관리하고 분석하며 평가하는 기능들이 포함된다. 네트워크 관리의 목적은 효율적으로 자원 사용을 극대화하고 서비스 품질의 가용성과 신뢰성을 최상의 상태로 유지하여 응답 시간을 단축하는 것이다. 또한 네트워크 관리를 통해 네트워크 모니터링, 트러블 슈팅, 유지보수 등을 능률적으로 수행할 수 있다.네트워크 관리 기능 OSI 표준에서는 효율적인 네트워크 관리를 위해 “장애 관리”, “구성 관리”, “성능 관리”, “계정 관리”, “보안 관리” 기능을 제공한다.장애 관리 (Fault Man..
[소프트웨어 공학] - 코딩 (Coding)
·
💻 Computer Science/소프트웨어 공학
코딩 작업 (Coding Work) 설계가 완성되면 코딩 작업이 시작된다. 모듈에 대한 원시 코드를 작성하고 문서화하는 단계이다. 코딩 작업은 프로그래밍을 의미하며, 단순히 설계한 기능을 구현하는 일을 넘어 가독성을 높이고 유지보수를 편하게 하는 관점으로도 작업해야 한다. 즉, 코딩 단계에서는 품질 향상을 위한 다각도의 노력이 필요하다.작업 과정 분석 단계, 설계 단계에서 완성된 작업물들을 가지고 코딩 단계에서는 다음의 순서를 통해 프로그래밍을 진행한다.원시코드를 같은 스타일로 만들기 위해 코딩 표준을 만든다.아키텍처 설계 결과 프레임워크 패키지와 응용 패키지를 결정한다. (프레임워크 패키지는 응용 패키지가 완성되기 전에 구현되어야 함)패키지 내의 각 클래스에 대해 요구 사항과 상세 결과를 반영하여 메서..
[소프트웨어 공학] - UI 설계 (User Interface Design)
·
💻 Computer Science/소프트웨어 공학
UI 기본 개념 (Concept of User Interface) UI 설계(User Interface Design, 사용자 인터페이스 설계)는 사용자가 제품을 쉽게 이해하고, 효과적으로 사용할 수 있도록 시각적이고 인터랙티브한 요소를 구성하는 작업이다. UI 구성 요소들은 사용자와 시스템 간의 정보를 교환하고 조정하는 수단이 되기에, 소프트웨어를 이해하기 쉽고 효율적으로 사용할 수 있도록 구성해야 한다.사용성 (Usability) UI 설계 결과는 소프트웨어의 비기능적 품질 중 “사용성”을 좌우한다. 이때, 사용성이란 일반적으로 시스템이 얼마나 사용하기 편한지를 나타내는 척도이다. 인간과 컴퓨터 상호 작용을 개선하기 위한 방법, 기술을 포함하는 사용의 용이성에 대한 연구를 설묭하는 용어로도 쓰인다. ..
[소프트웨어 공학] - 디자인 패턴 (Design Pattern)
·
💻 Computer Science/소프트웨어 공학
디자인 패턴 (Design Pattern) 디자인 패턴이란 아키텍처 설계 수준보다 낮은 수준의 설계 문제를 효과적으로 해결하기 위한 “재사용 가능한 솔루션”이다. 디자인 패턴이 적용되는 절차는 다음과 같다.요구 사항을 고려하여 아키텍처를 확정한다.아키텍처의 컴포넌트들을 구현하는 클래스의 역할과 동작을 결정한다.발생하는 설계 이슈에 대해 솔루션으로 적합한 디자인 패턴을 적용하고 개선시킨다.디자인 패턴의 혜택 디자인 패턴을 사용하면 누리게 되는 혜택은 다음과 같다.쉽게 재사용이 가능하다.설계 작업이 쉬워진다.설계 관련 지식이 정리된다.설계를 논의하기 위한 의사소통이 쉬워진다.객체지향 설계 원리를 잘 따르게 된다.디자인 패턴의 형식소프트웨어 디자인 패턴을 설명하는 일관되는 형식이 존재한다. 디자인 패턴을 서명..
[소프트웨어 공학] - 아키텍처 설계 (Architecture Design)
·
💻 Computer Science/소프트웨어 공학
아키텍처 개념 (Concept of Architecture) 아키텍처는 구성 요소와 구성 요소 간의 통신에 관한 것으로, 클래스 수준 이상의 그루핑, 역할, 인터페이스를 정의하는 작업이다. 아키텍처는 다양한 수준에서 구성 요소의 역할과 구성 요소 간의 관계에 집중한다. 소프트웨어 적용 분야에 따라 아키텍처 유형이 결정되고 스타일을 기초로 아키텍처의 뼈대를 구성하고 필요한 구성 요소들을 추가하며 배치한다. 소프트웨어 아키텍처는 소프트웨어 시스템에서의 높은 추상 수준의 구성 요소를 의미한다. 소프트웨어 시스템과 비기능적 품질 요구 사항을 충족시키기 위해 좋은 아키텍처를 구성하는 것이 중요하다.아키텍처 역할 아키텍처는 시스템의 구조를 확립하는 소프트웨어 개발에서 중심축으로, 소프트웨어 개발의 모든 단계에 영..
loading