본문 바로가기

반응형

분류 전체보기

(127)
[소프트웨어 공학] 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) 단계에서는 서비스의 본질이 무엇인지, 어떤 기능을 포함해야 하는지, 그리고 시스템을 개발하고 운영하는 데 있어서의 제약사항이 무엇인지를 명확하게 정의합니다. 요구사항 명세화를 통해 개발팀은 프로젝트의 기본 틀을 설정하고, 이는 이후의 디자인과 개발 과정 전반에 걸쳐 지침서 역할을 합니다. 만약 이 초기 단계에서 요구사항이 잘못 정의되면, 프로젝트의 나머지 부분도 잘못될 가능성이 높기 ..
[딥러닝] AI Winter과 Propagation 역전파 0. 딥러닝의 탄생 배경 딥러닝 연구자들의 궁극적인 꿈은 생각하는 기계를 만드는 것이었습니다. 그러다 보니 자연스럽게 뇌를 공부하게 되었습니다. 뇌에는 뉴런이라는 유닛이 단순 동작하면서도 굉장히 복잡한 기능을 수행할 수 있게 됩니다. 어떻게 이런 간단한 유닛이 복잡하게 연결되어 여러 가지 시너지를 만들 수 있었던 것일까요? 뉴런에는 값에 대한 '역치'라는 것이 있습니다. 뉴런에 입력되는 값이 역치 즉 기준치 이상이면 활성화되지만 낮다면 활성화되지 않습니다. 이런 모습을 본 딴 것이 바로 activation functions, 한글로 활성함수입니다. 뉴런에 입력되는 인풋을 x라고 표현한다면 뉴런 내의 weight가 x에 곱해진 값과 bias라는 편향이 더해져 결과 output y를 만듭니다. 이 아웃풋 y..
[소프트웨어 공학] Verification과 Validation의 차이 0. 소프트웨어 엔지니어링 소프트웨어 엔지니어링은 모든 개발 단계를 포괄하는 공학 분야로, 시스템의 명세화부터 유지보수에 이르기까지 전 과정을 아우릅니다. 이 분야는 조직 내에서 가장 적절한 이론을 선택하고 적용하여 문제를 해결하는 방법론을 제공합니다. 광범위하게 보면, 소프트웨어 엔지니어링은 다양한 학문적 요소를 종합한 학문이라고 할 수 있습니다. 개발자들은 소프트웨어를 신뢰성 있고, 경제적으로, 그리고 빠르게 개발할 필요가 있으며, 이 과정은 때로는 번거롭고 비용이 많이 들 수 있지만, 큰 규모의 프로젝트에서는 이러한 접근 방식이 타당합니다. 1. 소프트웨어 개발 과정 소프트웨어 개발 과정은 몇 가지 핵심 활동을 반드시 포함해야 합니다: a. 명세화(Software Specification): 이 단..
[소프트웨어 공학] 소프트웨어 종류(Type)와 고려해야 할 핵심 구성요소(Component) 1. 소프트웨어 종류 소프트웨어는 일반적으로 두 가지 주요 유형으로 분류합니다: 일반 소프트웨어(generic)와 맞춤형 소프트웨어(customized). 일반 소프트웨어는 대중적으로 널리 사용되며 시장에서 쉽게 구매할 수 있는 소프트웨어 상품입니다. 이러한 소프트웨어는 일반적인 문제를 해결하도록 설계되어 있어 다수의 사용자들에게 적합합니다. 반면, 맞춤형 소프트웨어는 특정 고객이나 조직의 독특한 요구를 충족시키기 위해 주문 제작되는 소프트웨어입니다. 이 구분이 필요한 이유는 설계 단계에서부터 각 종류마다 차별화된 접근 방식이 필요하기 때문입니다. 일반 소프트웨어는 다양한 시나리오에 적용될 수 있도록 유연성을 가지고 설계되어야 하며, 보편적인 솔루션을 제공해야 합니다. 반면, 맞춤형 소프트웨어는 특정 고..
[소프트웨어공학] 소프트웨어 공학 정의와 소프트웨어 비용 개론 0. 소프트웨어 공학이 필요한 이유 1968년 한 회의에서 처음으로 제안된 개념인 소프트웨어 공학이 등장했습니다. 그 당시 하드웨어의 기능은 급격히 발전하고 있었지만, 소프트웨어 개발은 상대적으로 지지부진한 상태였습니다. 이에 대한 해결책으로, 공학적 접근이 필요하다는 인식 하에 '소프트웨어 공학'이라는 용어가 도입되었습니다. 현재 우리가 사용하는 거의 모든 것이 소프트웨어에 의해 운영되고 있으며, 소프트웨어 자체도 다양한 타입으로 발전하였습니다. 소프트웨어 엔지니어링은 단순히 기술적인 문제뿐만 아니라 윤리적인 측면도 중요시되며, 잘못된 소프트웨어 설계는 조직이나 국가에 심각한 영향을 미칠 수 있습니다. 건축에서의 예를 들어보면, 일반적인 작은 주택이나 개집과 같은 간단한 구조물을 건축할 때는 고도의 공..

반응형