[소프트웨어 공학] - 코딩 (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) 아키텍처는 구성 요소와 구성 요소 간의 통신에 관한 것으로, 클래스 수준 이상의 그루핑, 역할, 인터페이스를 정의하는 작업이다. 아키텍처는 다양한 수준에서 구성 요소의 역할과 구성 요소 간의 관계에 집중한다. 소프트웨어 적용 분야에 따라 아키텍처 유형이 결정되고 스타일을 기초로 아키텍처의 뼈대를 구성하고 필요한 구성 요소들을 추가하며 배치한다. 소프트웨어 아키텍처는 소프트웨어 시스템에서의 높은 추상 수준의 구성 요소를 의미한다. 소프트웨어 시스템과 비기능적 품질 요구 사항을 충족시키기 위해 좋은 아키텍처를 구성하는 것이 중요하다.아키텍처 역할 아키텍처는 시스템의 구조를 확립하는 소프트웨어 개발에서 중심축으로, 소프트웨어 개발의 모든 단계에 영..
[소프트웨어 공학] - 객체지향 설계 기법 (Object-Oriented Design Principles)
·
💻 Computer Science/소프트웨어 공학
객체지향 개념 (Concept of Object-Oriented) 객체지향 프로그래밍(OOP)은 현실 세계를 프로그래밍에 반영하기 위한 패러다임이다. 객체지향의 핵심 개념들은 다음과 같다.객체와 클래스 (Object and Class) 객체와 클래스는 객체지향 시스템의 가장 기초가 되는 개념이다. 객체는 상태, 동작, 고유 식별자를 가지며 상태는 속성 값에 의해서 결정된다. 클래스는 공통 속성을 공유하는 객체 집합에 대한 정의이다. 주로 클래스는 붕어빵 틀에, 객체는 붕어빵에 비유한다.캡슐화 (Encapsulation) 캡슐화란 데이터와 기능을 하나로 모아 캡슐로 싼다는 것이다. 즉, 연관된 여러 항목을 모아 하나로 취급하는 것이다. 캡슐화는 속에 있는 항목에 대한 정보를 외부에 감추는 “정보 은닉”을 ..
[소프트웨어 공학] - 설계 원리 (Design Principles)
·
💻 Computer Science/소프트웨어 공학
설계 기본 원리 (Design Principles)설계는 “어떻게 실현할 것인가”를 구체적으로 결정하는 활동으로, 시스템의 논리 구성을 결정한다. 설계 작업은 기본 구조에 대한 설계와 모듈 내부의 설계(상세 설계)로 분류된다.`기본 구조 설계`: 아키텍쳐 설계로, 각 모듈의 역할과 인터페이스를 정의한다.`상세 설계`: 모듈 내부의 알고리즘, 데이터를 명세화한다.설계 작업을 위해서는 반드시 기초가 되는 개념을 정확히 이해하고 적용할 수 있어야 한다. 또한 설계 작업은 문제를 해결하며 솔루션을 구축해 나가는 높은 수준의 의사 결정 과정의 연속이다. 이를 위해서는 설계 원리를 숙지해야 하며 커뮤니케이션도 중요하다.품질 목표 (Quality Attributes) 사용자가 요구하는 기능을 만족하는 요구 분석 모델..
[소프트웨어 공학] - UML: 동적 모델링 다이어그램 (Dynamic Diagram)
·
💻 Computer Science/소프트웨어 공학
동적 모델링 다이어그램 (Dynamic Modeling Diagram) 동적 모델링은 소프트웨어가 실행될 때마다 변경될 수 있는 “동적 측면”을 모델링하는 것이다. 소프트웨어의 동적 측면은 시간의 함수로 이해할 수 있다. 동적 모델링 다이어그램은 정적인 클래스 다이어그램을 보완한다. 즉, 클래스 다이어그램은 소프트웨어의 정적 구조를 모델링하고, 여러 동적 다이어그램은 말그대로 동적 동작들을 모델링한다. 주로 시스템 전체 동작과 오퍼레이션을 모델링할 때 주로 동적 모델링 다이어그램을 사용한다. 대표적인 동적 모델링 다이어그램의 종류는 다음과 같다.다이어그램설명사용 시점시퀀스 다이어그램 (Sequence Diagram)시스템 내 객체 간의 메시지 교환 순서를 시간 흐름에 따라 표현한다.기능 구현, 시스템 ..
loading