목록Development Diary (21)
Douglas' Space

1. 들어가면서 System Architecture는 Application Architecture와 같이 시스템을 구성하는 컴포넌트들의 정적인 구조만 표현하는 것이 아니라 이들 간의 관계, 즉 요구하는 기능을 실현하기 위한 상호 협업하는 행위를 포함해야 한다. 따라서 지금까지 설명한 설계 결정사항에 따라 설계한 정적인 Technology 및 Application Architecture 뿐만 아니라 각 CSCI 들이 어떻게 상호작용하여 System Analysis에서 정의한 기능, 즉 유스케이스를 수행하는 것인 가를 설계해야 한다. 이러한 행위를 설계한 모델을 System Behavior Model이라고 하며, 이 모델을 통해 각 CSCI의 인터페이스가 결정이 되어 수행할 기능이 각 CSCI 할당이 되어..

1. 들어가면서 Applcation Architectures는 System Architecture의 구성요소 중 Technology Architecture 위에 존재하여 궁극적인 문제 또는 서비스를 해결하는 Software Architecture의 상위 소프트웨어 구조를 의미합니다. 우리가 소프트웨어를 구분할 때 System Software대비하여 구분하는 Application Software에 대한 구조를 의미한다고도 할 수 있다. 이는 결국 System Analysis Model에서 모델링한 Function 들을 CSCI(Computer Software Configuration Item)로 변경하는 설계의 결과물로서 일반적으로는 Layered Architecture Pattern, Service-Or..

1. 들어가면서 Architecture(아키텍처)란 광의로 시스템의 설계 모델과 같은 동의어로 생각할 수 있습니다. 즉 시스템의 컴포넌트들을 식별하고, 이들간의 정적 및 동적 관계를 의미합니다. 그러나 일단 본 섹션에서는 시스템의 정적인 구조인 시스템 컴포넌트와 이들의 정적인 관계에 대해서 만으로 한정하여 설명하고자 합니다. 시스템의 컴포넌트는 크게 하드웨어와 소프트웨어로 구성되므로, 시스템의 아키텍처는 소프트웨어 컴포넌트들의 구조(Software Architecture Model)와 하드웨어 컴포넌트의 구조(Hardware Architecture Model)로 크게 구분될 수 있습니다. 여기에 소프트웨어 컴포넌트들이 각 컴퓨터 노드에 배치되는 Deployment Model로 시스템 구조를 완성할 수 있..

1. 들어가면서 System Design이란 시스템의 구성요소인 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 그리고 이들의 정적 및 동적 관계를 식별하는 것, 다시말해 설계 결정사항을 기획하고 이를 실행하는 것이라 할 수 있습니다. 당연히 설계를 위한 입력은 시스템의 분석모델들입니다. 다른 관점에서 표현하면 시스템의 기능을 하드웨어와 소프트웨어 컴포넌트로 변환하는 것이라고 할 수 있습니다. 따라서 이를 기능할당(Functional Allocation)이라고 합니다. 다시말해 컴포넌트를 식별한다는 것이 시스템의 컴포넌트들이 수행할 기능을 결정하는 것과 같다고 할 수 있습니다. 특히 소프트웨어 시스템의 경우는 모든 기능이 소프트웨어에 의해 수행되므로 소프트웨어 컴포넌트에 모든 기능이 할당되고, 하드웨어인 컴..

1. 들어가면서 미래의 시스템은 Ai기반의 시스템으로 발전할 것으로 예상됩니다. 왜냐 하면 앨런튜닝이 최초의 컴퓨터라는 튜링머신을 고안할 때 생각하는 컴퓨터를 상상하고 있었고 우리의 기술 개발은 계속적으로 사람이 수행하는 일을 대체하기 위해 발전시키고 있기 때문입니다. 다시 말해 인간이 수행하는 다양한 작업 뿐만 아니라 인간의 사고까지 흉내내는 기계를 생각한 것 같습니다. (이러한 미래의 시스템을 특별히 지능형 소프트웨어 시스템이라고 정의하겠습니다). 이러한 지능형 시스템이 기존의 시스템과 구별되는 것은 자동화(Automation)와 자율화(Autonomy)를 구별하는 것과 같다고 할 수 있습니다. 자동화는 반복적으로 수행하는 다양한 작업을 컴퓨터시스템 또는 기계적 시스템으로 대체하는 것을 의미하고, 자..

1. 들어가면서 컴퓨터를 개발하면서 인간의 지능을 닮은 기계를 만들려고 하였습니다. 따라서 인공지능은 컴퓨팅기술의 계속적인 연구과제였습니다. 인공지능의 연구는 크게 2가지의 분야로 나누어져 개발되었습니다. 한 분야는 지식을 표현하고 이 지식으로 부터 새로운 사실을 추론하는 기호주의 (Symbolism)이고, 다른 하나는 인간의 뇌를 모방한 인공신경망을 구성하여 학습하고 추론하고자 하는 연결주의(Connectionism)였습니다.1956년 다트머스대학에서 인지과학자, 수학자, 컴퓨터과학자들이 모여 인공지능이라는 용어를 처음 사용하면서 초창기에는 기호주의 인공지능이 전문가시스템(Expert System)으로 큰 성과를 거두었습니다. 그러나 인공지능이 곧 인간을 대체할 것이라고 많은 기대를 걸었지만 크게 발전..

1. 들어가면서 Ai기반 시스템은 단순히 지금의 딥러닝을 기반으로는 한계가 존재하기 때문에 인간 및 세상의 배경지식을 포함한 Contextual Knoledge Model을 포함하는 것으로 발전할 것으로 예상된다고 하였습니다. 이러한 관점에서는 딥러닝모델을 포함하여 도메인의 지식을 표현하는 지식표현이 매우 중요합니다. 이 두가지를 모두 고려하여 시스템을 분석하는 것은 기능적 및 비기능적 요구사항을 정의하는 것과 데이터 모델을 분석하고 정의하는 것의 확장 개념이라고 할 수 있습니다. 특별히 Ai기반 시스템의 분석이라고 해서 특별히 방법론적으로 달라지는 것은 없으며 추가적으로 고려할 사항이 증가하는 것이라고 할 수 있습니다. 2. ANN (Artificial Neural Net) 모델의 기능적 요구사항 분석..

1. 들어가면서 비기능적 요구사항은 품질 요구사항과 제약사항이라고 하였습니다. 따라서 비기능적 요구사항을 식별하기 위한 참조모델로서 시스템과/소프트웨어의 품질과 관련한 표준인 ISO/IEC 25000 시리즈의 품질모델을 기반으로 비기능 요구사항을 식별할 수 있습니다. ISO/IEC 25000 시리즈를 SQUARE(System and Software Quality Requirements and Evaluation)라고 하며, 크게 아래와 같이 5개의 시리즈로 구성되어 있으나 이글에서는 Quality Model Division에서 제시하는 품질모델에 대해 설명하고자 합니다. (AI를 위한 시스템을 위해 ISO/IEC 25059에서 25010에 대한 확장판을 정의하고 있습니다.) 2. Quality Model..

1. 들어가면서 Verification & Validation은 결론적으로 품질을 검증하고 확인하는 활동입니다. 그리고 이러한 품질특성에 따라서 Non-funcational requirements를 정의할 수 있습니다. 다시말해 Non-ufnctional requirements는 품질특성을 기반으로 정의되고, 이 품질특성을 만족하는가를 검증 및 확인하는 것이 Verification & Validation이라고 할 수 있습니다. 이러한 품질특성을 정의하고 측정하는 방법을 제시하고 있는 국제 표준이 ISO 25000, SQURE(System and Software Quality Requirements and Evaluation) 모델입니다. 이 표준에서 정의하는 품질종류는 크게 시스템의 궁극적인 최상위 요구..

1. 들어가면서 약어로 IV&V라는 단어를 많이 접했을 것입니다. Independent Verification & Validation의 약자입니다. 소프트웨어 시스템에서는 Verification을 '검증', Validation을 '확인'이라는 말로 번역하여 사용합니다. 이 V&V를 해석하는 것이 학문분야별로 다른 것 같습니다. IV&V는 독립적인 V&V라는 의미로서 V&V의 활동을 개발조직과 독립성을 갖고 수행해야 한다는 품질활동의 어떤 방법적인 면을 나타내고 있습니다. 칼과 방패는 서로 반대되는 개념의 무기입니다. 칼은 방패를 뚫을 수 있어야 하고, 방패는 칼을 방어해야 합니다. 우리가 시스템을 개발할 때 좋은 품질의 시스템을 개발해야 합니다. 그러나 개발하는 사람은 자기 개발하는 시스템의 결함이 존재..