본문 바로가기

반응형

Software Engineering

(8)
프로토타입을 만들고 버리는 이유 소프트웨어 공학에서 프로토타입에 대한 내용이 있었다. 프로토타입은 제품 개발 초기 단계에서 구현되는 초기 버전을 의미하며, 주로 개념 증명이나 디자인 옵션(UI 포함)을 시연하는 데 사용됩니다. 이는 완성도가 높은 모델이 아닌, 개념이나 가능성을 보여주는 '더미' 모델로 간주할 수 있습니다. 프로토타입의 주요 목적 중 하나는 고객의 불분명한 요구사항을 명확히 파악하고 이를 검증하는 것입니다. 이 과정은 사용자 인터페이스(UI) 및 사용자 경험(UX) 디자인의 관점에서 설명될 수 있습니다. 개발 과정에서는 여러 디자인 옵션을 고려하여 시스템을 개발하게 되며, '백투백 테스트'와 같은 방법을 통해 비용을 절감하면서도 다양한 유스케이스를 효율적으로 검토할 수 있습니다. 테스트는 동일한 입력에 대해 여러 옵션에..
[소프트웨어 공학] 개발 프로세스 / Reuse-oriented model 소프트웨어 개발 분야에서는 다양한 개발 모델이 사용되지만, 가장 대표적인 세 가지 모델은 워터폴 모델(Waterfall Model), 점진적 개발(Incremental Development), 그리고 재사용 중심 개발(Reuse-oriented Software Engineering)입니다. 워터폴 모델은 가장 전통적인 소프트웨어 개발 방식으로, 프로젝트를 명확하게 정의된 여러 단계로 나누어 진행합니다. 이 모델은 요구사항 정의, 설계, 구현, 검증, 유지보수 등의 단계가 순차적으로 이루어지며, 각 단계는 이전 단계가 완전히 완료되어야만 다음 단계로 넘어갈 수 있는 엄격한 순서를 따릅니다. 워터폴 모델의 주된 장점은 그 구조가 명확하고 간단하여 관리하기 쉬우나, 변경 사항을 수용하기 어렵다는 단점도 있습니..
[소프트웨어 공학] Waterfall 모델과 Incremental Development 워터폴 모델(Waterfall model)은 소프트웨어 개발 과정에서 가장 오래되고 널리 사용되는 개발 프로세스 중 하나입니다. 이름에서 유추할 수 있듯이 한 방향으로 흐르는 폭포처럼 이 모델은 각 단계를 순차적으로 진행하는 것을 특징으로 합니다. 워터폴 모델의 단계는 기본적으로 4단계로 명화하게 구분할 수 있으며 이는 요구사항 정의(requirements definition), 시스템 및 소프트웨어 설계(system and software design), 구현 및 단위 테스트(implementation and unit testing), 통합 및 시스템 테스트(integration and system testing), 그리고 운영 및 유지보수(operation and maintenance) 가 있습니다...
[딥러닝] 비선형 함수 신경망은 복잡한 데이터 패턴을 학습할 수 있는 강력한 도구입니다. 선형 모델을 사용하여 입력 데이터를 변환하고, 활성화 함수를 통해 이를 비선형적으로 처리함으로써 다양한 문제에 적용할 수 있습니다. 이런 구조 덕분에 신경망은 이미지 인식, 음성 처리, 자연어 처리 등 다양한 분야에서 효과적으로 사용됩니다. 신경망(Neural Network)은 선형모델과 비선형함수를 결합하여 비선형모델을 생성하는 구조입니다. 이를 이해하기 위해서는 먼저 선형모델의 기본적인 구성을 파악할 필요가 있습니다. 선형모델은 입력 데이터 X와 가중치 행렬 W, 절편 b를 사용하여 출력 O를 생성합니다. 여기서 행렬 O는 데이터 X와 가중치 W의 행렬곱에 절편 b를 더한 값으로 표현됩니다. X(n * d)는 전체 데이터의 집합으로 각..
[소프트웨어 공학] Specification 명세화의 4단계 0. Specification 명세화에 대해 소프트웨어 개발 과정에는 Specification Development Validation Evolution 이 네 가지 단계가 포함되어 있습니다. 그 중 첫 번째인 Specification 명세화에 대해 이번 글에서 알아보려고 합니다. 요구사항 명세화(Specification) 단계에서는 서비스의 본질이 무엇인지, 어떤 기능을 포함해야 하는지, 그리고 시스템을 개발하고 운영하는 데 있어서의 제약사항이 무엇인지를 명확하게 정의합니다. 요구사항 명세화를 통해 개발팀은 프로젝트의 기본 틀을 설정하고, 이는 이후의 디자인과 개발 과정 전반에 걸쳐 지침서 역할을 합니다. 만약 이 초기 단계에서 요구사항이 잘못 정의되면, 프로젝트의 나머지 부분도 잘못될 가능성이 높기 ..
[소프트웨어 공학] Verification과 Validation의 차이 0. 소프트웨어 엔지니어링 소프트웨어 엔지니어링은 모든 개발 단계를 포괄하는 공학 분야로, 시스템의 명세화부터 유지보수에 이르기까지 전 과정을 아우릅니다. 이 분야는 조직 내에서 가장 적절한 이론을 선택하고 적용하여 문제를 해결하는 방법론을 제공합니다. 광범위하게 보면, 소프트웨어 엔지니어링은 다양한 학문적 요소를 종합한 학문이라고 할 수 있습니다. 개발자들은 소프트웨어를 신뢰성 있고, 경제적으로, 그리고 빠르게 개발할 필요가 있으며, 이 과정은 때로는 번거롭고 비용이 많이 들 수 있지만, 큰 규모의 프로젝트에서는 이러한 접근 방식이 타당합니다. 1. 소프트웨어 개발 과정 소프트웨어 개발 과정은 몇 가지 핵심 활동을 반드시 포함해야 합니다: a. 명세화(Software Specification): 이 단..
[소프트웨어 공학] 소프트웨어 종류(Type)와 고려해야 할 핵심 구성요소(Component) 1. 소프트웨어 종류 소프트웨어는 일반적으로 두 가지 주요 유형으로 분류합니다: 일반 소프트웨어(generic)와 맞춤형 소프트웨어(customized). 일반 소프트웨어는 대중적으로 널리 사용되며 시장에서 쉽게 구매할 수 있는 소프트웨어 상품입니다. 이러한 소프트웨어는 일반적인 문제를 해결하도록 설계되어 있어 다수의 사용자들에게 적합합니다. 반면, 맞춤형 소프트웨어는 특정 고객이나 조직의 독특한 요구를 충족시키기 위해 주문 제작되는 소프트웨어입니다. 이 구분이 필요한 이유는 설계 단계에서부터 각 종류마다 차별화된 접근 방식이 필요하기 때문입니다. 일반 소프트웨어는 다양한 시나리오에 적용될 수 있도록 유연성을 가지고 설계되어야 하며, 보편적인 솔루션을 제공해야 합니다. 반면, 맞춤형 소프트웨어는 특정 고..
[소프트웨어공학] 소프트웨어 공학 정의와 소프트웨어 비용 개론 0. 소프트웨어 공학이 필요한 이유 1968년 한 회의에서 처음으로 제안된 개념인 소프트웨어 공학이 등장했습니다. 그 당시 하드웨어의 기능은 급격히 발전하고 있었지만, 소프트웨어 개발은 상대적으로 지지부진한 상태였습니다. 이에 대한 해결책으로, 공학적 접근이 필요하다는 인식 하에 '소프트웨어 공학'이라는 용어가 도입되었습니다. 현재 우리가 사용하는 거의 모든 것이 소프트웨어에 의해 운영되고 있으며, 소프트웨어 자체도 다양한 타입으로 발전하였습니다. 소프트웨어 엔지니어링은 단순히 기술적인 문제뿐만 아니라 윤리적인 측면도 중요시되며, 잘못된 소프트웨어 설계는 조직이나 국가에 심각한 영향을 미칠 수 있습니다. 건축에서의 예를 들어보면, 일반적인 작은 주택이나 개집과 같은 간단한 구조물을 건축할 때는 고도의 공..

반응형