hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
냉용수 분포
파키스탄 남서부 해안과 이란 남동부 해안에 인접한 오만만 북동부 가장자리를 따라 위치한 섭입대인 마크란 해구에서는 부가체(부가체)의 압축으로 인해 냉용수와 이화산이 형성되었다.
남중국해 북동부 대륙사면의 냉용수에서도 천연 알루미늄이 보고되었으며, Chen 등(2011)은 이것이 환원에 의해 테트라하이드록소알루민산염 Al(OH)4−에서 금속 알루미늄으로 세균에 의해 생성된 것이라는 기원설을 제안했다.
일본 해양연구개발기구(JAMSTEC)가 주로 일본 주변 심해 군집을 연구한다. 심해 6500, 카이코, 그리고 다른 그룹들이 많은 지역을 발견했다.
일본의 메탄 용출수 군집은 수반되는 지각 활동으로 인해 수렴판 지역을 따라 분포한다. 일본 해구, 난카이 해곡, 류큐 해구, 사가미만, 스루가만, 동해에서 많은 용출수가 발견되었다.
냉용수 군집의 구성원은 다모류, 라멜리브라키아, 이매패류, 솔레미대과, 홍합과의 바티모디오루스속, 티아시리대과, 베시코미다과의 칼립토게나속 등 과 또는 속 수준에서 다른 지역과 유사하다. 일본의 냉용수 종 중 다수는 고유종이다.
가고시마만에는 "다기리(tagiri, 끓는 것)"라고 불리는 메탄 가스 용출수가 있다. 그 주변에는 Lamellibrachia satsuma가 서식한다. 이 지역의 깊이는 80m에 불과하며, 이는 시보글리니대과가 서식하는 것으로 알려진 가장 얕은 지점이다. L. satsuma는 수족관에서 1기압에서 오랫동안 사육될 수 있다. 일본의 두 수족관에서 L. satsuma를 사육하고 전시하고 있다. 투명 비닐 튜브에 도입하여 관찰하는 방법이 개발되고 있다.
DSV 심해 6500은 남부 마리아나 전호에서 베시코미다과 조개 군집을 발견했다. 이들은 사문암에서 유래하는 메탄에 의존한다. 다른 화학합성 군집은 지각 내 유기물에서 유래하는 탄화수소에 의존할 것이지만, 이 군집은 맨틀에서 유래하는 무기물 메탄에 의존한다.
2011년, 일본 해구 주변 지역은 도호쿠 지방 태평양 해역 지진으로 피해를 입었다. 지진으로 인해 균열, 메탄 용출, 세균 매트가 생성된 것으로 추정된다.
뉴질랜드 본토 해안 근처에서는 일부 지역에서 메탄이 풍부한 유체의 냉용수에 의해 대륙붕 가장자리 불안정성이 증가하며, 이 역시 화학합성 동물군과 탄산염 결절을 지탱한다. 우점종은 시보글리니대과의 관벌레와 베시코미다과 및 홍합과(바티모디오루스속)의 이매패류이다. 많은 종이 고유종으로 보인다. 심해 저인망 어업은 냉용수 군집에 심각한 피해를 입혔고, 이러한 생태계는 위협받고 있다. 냉용수는 수심 2,000m까지 발견되며, 서식지의 지형적 및 화학적 복잡성은 아직 지도화되지 않았다. 이러한 미연구 또는 미탐사 생태계에서 신종 발견 규모는 높을 것으로 예상된다.
심해에서 COMARGE 프로젝트는 메탄 용출수 및 산소 최소 구역과 같은 복잡한 생태계를 통해 칠레 해안을 따라 그리고 가로지르는 생물 다양성 패턴을 연구했으며, 이러한 서식지 이질성이 지역 동물군의 생물 다양성 패턴에 영향을 미칠 수 있다고 보고했다. 용출수 동물군에는 루키니대과, 티아시리대과, 솔레미아과(Acharax sp.), 베시코미다과(Calyptogena gallardoi)의 이매패류와 다모류(Lamellibrachia sp. 및 다른 두 다모류 종)가 포함된다. 또한 칠레 해안의 산소 최소 구역 아래의 이러한 부드럽고 환원된 퇴적물에서는 다양한 대형 원핵생물(주로 티오플로카속 및 베기아토아속의 대형 다세포 필라멘트 "메가박테리아"와 다양한 표현형을 포함하는 "매크로박테리아"), 원생생물(섬모충류, 편모충류, 유공충류), 그리고 작은 후생동물(대부분 선형동물과 다모류)로 구성된 다양한 미생물 군집이 발견되었다. Gallardo 등(2007)은 이들 대부분의 메가 및 매크로 박테리아의 화학석영양 대사가 화석 발견, 특히 명백히 비연안 기원의 화석에 대한 대체 설명을 제공하며, 일부 화석의 남조류 기원에 대한 전통적인 가설을 수정해야 할 수도 있다고 주장한다.
냉용수(포크마크)는 캐나다 브리티시컬럼비아주 헤카테 해협의 수심 130m에서도 알려져 있다. 그곳에서 이례적인 동물군(냉용수에 대해서도 이례적임)이 발견되었는데, 이들 우점종은 바다달팽이 Fusitriton oregonensis, 말미잘 Metridium giganteum, 부착성 해면동물, 그리고 이매패류 Solemya reidi이다.
미국 태평양 연안의 화학합성 군집이 있는 냉용수(포크마크)는 몬터레이만, 캘리포니아의 몬터레이해저곡 바로 근처의 이화산에서 발생한다. 예를 들어, Calyptogena 조개 Calyptogena kilmeri 및 Calyptogena pacifica와 유공충 Spiroplectammina biformis가 발견되었다.
또한, 캘리포니아 남부 연안의 내부 캘리포니아 경계 지역에서 산 클레멘테 단층, 산 페드로 단층, 그리고 샌디에이고 해구 단층을 포함한 여러 단층계를 따라 용출수가 발견되었다. 산 페드로 단층과 샌디에이고 해구 단층을 따라 있는 용출수에서의 유체 흐름은 단층 내의 국지적인 제한적 굴곡에 의해 제어되는 것으로 보인다.
남극해에서 첫 번째 냉용수는 2005년에 보고되었다. 남극 심해에 대한 비교적 적은 조사 결과는 열수분출공, 냉용수, 이화산을 포함한 심해 서식지의 존재를 보여주었다. 남극 저서 심해 생물다양성 프로젝트 (ANDEEP) 탐사를 제외하고는 심해에서 이루어진 작업은 거의 없다. 아직 기술되지 않은 더 많은 종들이 기다리고 있다.
냉용수 탐지
특히 멕시코만 상부 대륙 경사면에서 지속적인 경험을 통해 관벌레 군집의 존재를 성공적으로 예측하는 능력이 계속 향상되고 있지만, 화학합성 군집은 지구물리학적 기술을 사용하여 직접적으로 신뢰성 있게 탐지할 수 없다. 화학합성 군집(과이마스 해분)이 존재할 수 있도록 하는 탄화수소 용출수는 지질학적 특성을 원격으로 탐지할 수 있는 방식으로 변경하지만, 활성 용출과 살아있는 군집의 존재가 동시에 발생하는 시간 규모는 항상 불확실하다. 알려진 퇴적물 변형에는 (1) 미소결절, 결절 또는 암석 덩어리 형태의 자생 탄산염 침전; (2) 가스 하이드레이트 형성; (3) 단단한 화학합성 유기체 잔해(예: 껍데기 조각 및 층)의 농축을 통한 퇴적물 구성 변경; (4) 간극 가스 기포 또는 탄화수소 형성; (5) 가스 분출에 의한 함몰 또는 포크마크 형성이 포함된다. 이러한 특징은 와이프아웃 구역(반사 없음), 단단한 바닥(강한 반사 반사), 밝은 지점(반사 강화 층), 또는 잔향 층(Behrens, 1988; Roberts and Neurauter, 1990)과 같은 음향 효과를 유발한다. 대부분의 군집 유형에 대한 잠재적 위치는 이러한 다양한 지구물리학적 변형의 신중한 해석을 통해 결정할 수 있지만, 현재까지 이 과정은 불완전하며 살아있는 군집의 확인에는 직접적인 시각적 기술이 필요하다.
냉용수 화석 기록
냉용수 퇴적물은 현생누대 지질 기록 전반에 걸쳐 발견되는데, 특히 중생대 후기와 신생대에 집중되어 있다. 주목할 만한 예로는 티베트의 페름기, 콜로라도주의 백악기 및 홋카이도의 백악기, 혼슈의 고진기, 이탈리아 북부의 신진기, 그리고 캘리포니아의 플라이스토세에서 발견된다. 이들 화석 냉용수는 (보존된 경우) 언덕 모양의 지형, 거친 결정질 탄산염, 그리고 풍부한 연체동물과 완족동물이 특징이다.
냉용수 환경 영향
냉용수 생태계와 그 군집이 오늘날 직면한 주요 위협은 해저 쓰레기, 화학 오염 물질, 그리고 기후 변화이다. 해저 쓰레기는 이전에는 없었던 단단한 기질을 제공하거나 퇴적물을 덮음으로써 서식지를 변화시키며, 이는 가스 교환을 방해하고 해저 유기체에 간섭한다. 지중해의 해양 쓰레기 연구에는 대륙붕, 경사면, 심해 평원에서의 해저 파편 조사도 포함된다. 대부분의 연구에서 플라스틱 품목은 유비쿼터스 사용과 낮은 분해성 때문에 쓰레기의 대부분을 차지했으며, 때로는 총량의 90% 이상을 차지하기도 했다.
무기와 폭탄도 바다에 버려져 공해 투기는 해저 오염에 기여한다. 저서 동물군에 대한 또 다른 주요 위협은 그물과 롱라인과 같은 잃어버린 어구의 존재인데, 이는 유령 어업에 기여하고 냉수 산호와 같은 취약한 생태계를 손상시킬 수 있다.
냉용수 환경 영향
잔류성 유기 오염 물질, 유독 금속(예: Hg, Cd, Pb, Ni), 방사성 화합물, 살충제, 제초제, 의약품과 같은 화학 오염 물질도 심해 퇴적물에 축적되고 있다. 지형(예: 해저협곡)과 수문학(예: 캐스케이딩 현상)은 이러한 화학 물질이 해안과 대륙붕에서 심해 분지로 운반 및 축적되는 데 주요한 역할을 하여 지역 동물군에 영향을 미친다. 최근 연구에서는 상업용 새우 Aristeus antennatus에서 상당한 수준의 다이옥신이, 중심해 및 심해 두족류에서 상당한 수준의 잔류성 유기 오염 물질이 검출되었다.
기후 변화로 인한 과정과 기후 변화는 캐스케이딩의 빈도와 강도에 영향을 미칠 것이며, 이는 저서 동물군에 미치는 영향은 아직 알려지지 않았다. 기후 변화의 또 다른 잠재적 영향은 표층수에서 해저로의 에너지 전달과 관련이 있다. 표층에서 햇빛 노출, 수온, 수괴의 주요 성층화 및 기타 효과에 따라 일차 생산량이 변화할 것이며, 이는 심해 해저까지의 먹이 사슬에 영향을 미쳐 유기물 유입의 양, 질, 시기 변화를 초래할 것이다. 상업 어업이 더 깊은 바다로 이동함에 따라, 이러한 모든 영향은 냉용수 및 심해 전반의 유기체 군집과 개체군에 영향을 미칠 것이다.
냉용수 각주
이 문서는 퍼블릭 도메인인 미국 정부 기관의 저작물 () 및 CC-BY-2.5인  및 CC-BY-3.0 텍스트()의 내용을 포함한다.
냉용수 더 읽어보기
Bright, M.; Plum, C.; Riavitz, L. A.; Nikolov, N.; Martínez Arbizu, P.; Cordes, E. E.; Gollner, S. (2010). 《Epizooic metazoan meiobenthos associated with tubeworm and mussel aggregations from cold seeps of the Northern Gulf of Mexico》. 《Deep-Sea Research Part II: Topical Studies in Oceanography》 57. 1982–1989쪽. Bibcode:2010DSRII..57.1982B. doi:10.1016/j.dsr2.2010.05.003. PMC 2995211. PMID 21264038.
냉용수 더 읽어보기
German, C. R.; Ramirez-Llodra, E.; Baker, M. C.; Tyler, P. A.; the ChEss Scientific Steering Committee (2011). 《Deep-Water Chemosynthetic Ecosystem Research during the Census of Marine Life Decade and Beyond: A Proposed Deep-Ocean Road Map》. 《PLoS ONE》 6. Bibcode:2011PLoSO...623259G. doi:10.1371/journal.pone.0023259. PMC 3150416. PMID 21829722.  지원되지 않는 변수 무시됨: |article-number= (도움말)
냉용수 더 읽어보기
Lloyd, K. G.; Albert, D. B.; Biddle, J. F.; Chanton, J. P.; Pizarro, O.; Teske, A. (2010). 《Spatial Structure and Activity of Sedimentary Microbial Communities Underlying a Beggiatoa spp. Mat in a Gulf of Mexico Hydrocarbon Seep》. 《PLoS ONE》 5. Bibcode:2010PLoSO...5.8738L. doi:10.1371/journal.pone.0008738. PMC 2806916. PMID 20090951.  지원되지 않는 변수 무시됨: |article-number= (도움말)
냉용수 더 읽어보기
Metaxas, A.; N. E. (2010). 《Do Larval Supply and Recruitment Vary among Chemosynthetic Environments of the Deep Sea?》. 《PLoS ONE》 5. Bibcode:2010PLoSO...511646M. doi:10.1371/journal.pone.0011646. PMC 2906503. PMID 20657831.  지원되지 않는 변수 무시됨: |article-number= (도움말)
Rodríguez, E.; Daly, M. (2010). 《Phylogenetic Relationships among Deep-Sea and Chemosynthetic Sea Anemones: Actinoscyphiidae and Actinostolidae (Actiniaria: Mesomyaria)》. 《PLoS ONE》 5. Bibcode:2010PLoSO...510958R. doi:10.1371/journal.pone.0010958. PMC 2881040. PMID 20532040.  지원되지 않는 변수 무시됨: |article-number= (도움말)
냉용수 더 읽어보기
Sibuet, M.; Olu, K. (1998). 《Biogeography, biodiversity and fluid dependence of deep-sea cold-seep communities at active and passive margins》. 《Deep-Sea Research Part II: Topical Studies in Oceanography》 45. 517–567쪽. Bibcode:1998DSRII..45..517S. doi:10.1016/S0967-0645(97)00074-X.
Vinn, O.; Hryniewicz, K; Little, C.T.S.; Nakrem, H.A. (2014). 《A Boreal serpulid fauna from Volgian-Ryazanian (latest Jurassic-earliest Cretaceous) shelf sediments and hydrocarbon seeps from Svalbard》. 《Geodiversitas》 36. 527–540쪽. doi:10.5252/g2014n4a2. S2CID 129587761. 2014년 1월 9일에 확인함.
Vinn, O.; Kupriyanova, E.K.; Kiel, S. (2013). 《Serpulids (Annelida, Polychaeta) at Cretaceous to modern hydrocarbon seeps: Ecological and evolutionary patterns》. 《Palaeogeography, Palaeoclimatology, Palaeoecology》 390. 35–41쪽. Bibcode:2013PPP...390...35V. doi:10.1016/j.palaeo.2012.08.003. 2014년 1월 9일에 확인함.
분산 인공지능
분산 인공지능(distributed artificial intelligence, DAI) 또는 탈중앙화 인공지능(Decentralized Artificial Intelligence)은 문제 해결을 위한 분산 솔루션 개발에 전념하는 인공지능 연구의 하위 분야이다. DAI는 다중 에이전트 시스템 분야와 밀접하게 관련되어 있으며 그 전신이다.
다중 에이전트 시스템과 분산 문제 해결은 두 가지 주요 DAI 접근 방식이다. 수많은 응용 프로그램과 도구가 있다.
분산 인공지능 정의
분산 인공지능(DAI)은 복잡한 학습, 계획 및 의사 결정 문제를 해결하기 위한 접근 방식이다. 이는 처치 곤란 병렬이므로 대규모 계산 및 컴퓨팅 리소스의 공간 분산을 활용할 수 있다. 이러한 속성은 매우 큰 자료 집합의 처리가 필요한 문제를 해결할 수 있게 한다. DAI 시스템은 분산된, 종종 매우 대규모로 분포된 자율 학습 처리 노드(에이전트)로 구성된다. DAI 노드는 독립적으로 작동할 수 있으며, 부분적인 솔루션은 노드 간의 통신을 통해 종종 비동기적으로 통합된다. 규모 덕분에 DAI 시스템은 견고하고 탄력적이며, 필연적으로 느슨하게 결합되어 있다. 또한 DAI 시스템은 문제 정의 또는 기본 데이터 세트의 변경 사항에 적응하도록 구축되어 재배포의 규모와 어려움으로 인한 변경 사항에 적응한다.
DAI 시스템은 밀접하게 결합되고 지리적으로 가까운 처리 노드를 갖는 모놀리식 또는 중앙 집중식 인공지능 시스템과 달리 모든 관련 데이터를 단일 위치에 집계할 필요가 없다. 따라서 DAI 시스템은 종종 매우 큰 데이터 세트의 하위 샘플 또는 해시된 인상에서 작동한다. 또한 원본 데이터 세트는 DAI 시스템 실행 과정에서 변경되거나 업데이트될 수 있다.
분산 인공지능 개발
1975년에 분산 인공지능은 지능형 에이전트의 상호 작용을 다루는 인공지능의 하위 분야로 등장했다. 분산 인공지능 시스템은 협력, 공존 또는 경쟁을 통해 상호 작용하는 에이전트라는 지능형 엔티티 그룹으로 구상되었다. DAI는 다중 에이전트 시스템과 분산 문제 해결로 분류된다. 다중 에이전트 시스템에서는 에이전트가 지식과 활동을 어떻게 조정하는지에 중점을 둔다. 분산 문제 해결에서는 문제가 어떻게 분해되고 솔루션이 합성되는지에 중점을 둔다.
분산 인공지능 목표
분산 인공지능의 목표는 추론, 계획, 학습 및 인공지능의 지각 문제를 해결하는 것이다. 특히 대규모 데이터가 필요한 경우, 문제를 자율 처리 노드(에이전트)에 분산하여 해결한다. 목표를 달성하기 위해 DAI는 다음을 필요로 한다.
지능을 분산하거나 다중 에이전트 시스템을 다루고 싶어 하는 많은 이유가 있다. DAI 연구의 주요 문제는 다음과 같다.
분산 인공지능 접근 방식
두 가지 유형의 DAI가 등장했다.
다중 에이전트 시스템에서 에이전트는 지식과 활동을 조정하고 조정 프로세스에 대해 추론한다. 에이전트는 물리적 또는 가상 엔티티로, 행동하고 환경을 인지하며 다른 에이전트와 통신할 수 있다. 에이전트는 자율적이며 목표를 달성하는 기술을 가지고 있다. 에이전트는 행동을 통해 환경의 상태를 변경한다. 여러 가지 다른 조정 기술이 있다.
DAI는 서브섬션 아키텍처와 유사한 AI에 대한 상향식 접근 방식과 AI의 전통적인 하향식 접근 방식을 적용할 수 있다. 또한 DAI는 창발의 수단이 될 수도 있다.
분산 AI의 과제는 다음과 같다.
분산 인공지능 응용 프로그램 및 도구
DAI가 적용된 분야는 다음과 같다.
DAI 도구 통합에는 다음이 포함된다.
분산 인공지능 에이전트
에이전트의 개념: 에이전트는 문제 해결을 위해 설계된 표준 경계와 인터페이스를 가진 개별 엔티티로 설명될 수 있다.
다중 에이전트의 개념: 다중 에이전트 시스템은 개별 에이전트가 해결할 수 없는 문제 해결을 위해 사회처럼 단일 엔티티로 작동하는 느슨하게 결합된 에이전트 네트워크로 정의된다.
DPS 및 MABS에서 사용되는 핵심 개념은 소프트웨어 에이전트라는 추상화이다. 에이전트는 환경을 이해하고 그에 따라 행동하는 가상(또는 물리적) 자율적 엔티티이다. 에이전트는 일반적으로 동일한 시스템 내의 다른 에이전트와 통신하여 단일 에이전트 혼자서는 달성할 수 없는 공통 목표를 달성할 수 있다. 이 통신 시스템은 에이전트 통신 언어를 사용한다.
유용한 첫 번째 분류는 에이전트를 다음으로 나누는 것이다.
에이전트가 내부적으로 어떻게 구성되는지 설명하는 잘 알려진 에이전트 아키텍처는 다음과 같다.
분산 인공지능 추가 자료
Hewitt, Carl; and Jeff Inman (November/December 1991). "DAI Betwixt and Between: From 'Intelligent Agents' to Open Systems Science" IEEE Transactions on Systems, Man, and Cybernetics. Volume: 21 Issue: 6, pps. 1409–1419.  ISSN 0018-9472
Grace, David; Zhang, Honggang (August 2012). Cognitive Communications: Distributed Artificial Intelligence(DAI), Regulatory Policy and Economics, Implementation. John Wiley & Sons Press. ISBN 978-1-119-95150-6
분산 인공지능 추가 자료
Trentesaux, Damien; Philippe, Pesin; Tahon, Christian (2000). 《Distributed artificial intelligence for FMS scheduling, control and design support》. 《Journal of Intelligent Manufacturing》 11. 573–589쪽. doi:10.1023/A:1026556507109. S2CID 36570655.
Vlassis, Nikos (2007). 《A Concise Introduction to Multiagent Systems and Distributed Artificial Intelligence》. San Rafael, CA: Morgan & Claypool Publishers. ISBN 978-1-59829-526-9.
신뢰성
시스템 공학에서 신뢰성(dependability)은 시스템의 가용성, 신뢰도, 유지보수성 및 경우에 따라 내구성, 안전 및 보안과 같은 기타 특성을 측정하는 척도이다. 실시간 컴퓨팅에서 신뢰성은 일정 기간 내에 신뢰할 수 있는 서비스를 제공하는 능력이다. 시스템이 공격이나 자연적인 고장에 노출되더라도 서비스 보증은 유지되어야 한다.
국제전기기술위원회 (IEC)는 기술위원회 TC 56을 통해 장비, 서비스 및 시스템의 수명 주기 전반에 걸쳐 신뢰성 평가 및 관리를 위한 체계적인 방법과 도구를 제공하는 국제 표준을 개발하고 유지한다. "신뢰할 수 있는 컴퓨팅 및 오류 허용"에 관한 IFIP 워킹 그룹 10.4는 이 분야의 기술 커뮤니티의 발전을 종합하는 역할을 하며, 결과를 전파하기 위해 매년 두 번의 워크숍을 개최한다.
신뢰성은 세 가지 요소로 나눌 수 있다.
신뢰성 역사
일부 출처에 따르면 이 단어는 1910년대 닷지 브라더스 자동차 인쇄 광고에서 만들어졌다고 한다. 그러나 이 단어는 그 이전부터 존재했으며, 옥스포드 영어사전은 1901년에 처음 사용된 것을 발견했다.
1960년대와 1970년대에 오류 허용 및 시스템 신뢰성에 대한 관심이 증가하면서 신뢰성은 신뢰성의 척도가 안전 및 무결성과 같은 추가적인 척도를 포함하게 되면서 [x]의 척도가 되었다. 1980년대 초, 장-클로드 라프리는 신뢰성 고유의 의미 확장을 포함하지 않고 오류 허용 및 시스템 신뢰성 연구를 포괄하는 용어로 신뢰성을 선택했다.
신뢰성 분야는 이러한 시작부터 신뢰할 수 있는 시스템 및 네트워크에 관한 국제 회의, 신뢰할 수 있는 분산 시스템 국제 심포지엄 및 소프트웨어 신뢰성 공학 국제 심포지엄과 같은 여러 저명한 국제 회의에 의해 육성되는 국제적으로 활발한 연구 분야로 발전해왔다.
전통적으로 시스템의 신뢰성은 가용성, 신뢰성, 유지보수성을 포함했지만 1980년대부터 안전과 보안이 신뢰성 측정에 추가되었다.
신뢰성 신뢰성의 요소
속성은 시스템의 품질이다. 이는 정성적 또는 정량적 측정값을 사용하여 전반적인 신뢰성을 결정하기 위해 평가될 수 있다. 아비제니스 외 는 다음 신뢰성 속성을 정의한다.
이러한 정의가 시사하듯이, 가용성과 신뢰성만이 직접 측정으로 정량화될 수 있는 반면 다른 것들은 더 주관적이다. 예를 들어 안전은 지표를 통해 직접 측정될 수 없지만, 신뢰 수준을 제공하기 위해 판단 정보를 적용해야 하는 주관적인 평가이며, 신뢰성은 시간에 따른 고장으로 측정될 수 있다.
기밀성, 즉 무단 정보 공개의 부재도 보안을 다룰 때 사용된다. 보안은 기밀성, 인티그리티, 가용성의 복합체이다. 보안은 때때로 속성으로 분류되기도 하지만 현재의 견해는 이를 신뢰성과 함께 묶어 신뢰성 및 보안이라는 복합 용어로 취급하는 것이다.
실제로 시스템의 기기에 보안 조치를 적용하면 일반적으로 외부에서 발생하는 오류의 수를 제한하여 신뢰성을 향상시킨다.
위협은 시스템에 영향을 미치고 신뢰성을 떨어뜨릴 수 있는 것들이다. 명확하게 이해해야 할 세 가지 주요 용어가 있다.
신뢰성 신뢰성의 요소
결함(Fault): 결함(역사적인 이유로 버그라고도 함)은 시스템의 결함이다. 시스템에 결함이 존재한다고 해서 항상 고장으로 이어지는 것은 아니다. 예를 들어 시스템에 결함이 포함되어 있더라도 입력 및 상태 조건으로 인해 이 결함이 실행되어 오류가 발생하지 않을 수 있다. 따라서 특정 결함은 고장으로 나타나지 않을 수 있다.
고장은 시스템 경계에서 기록된다는 점에 유의하는 것이 중요하다. 고장은 기본적으로 시스템 경계로 전파되어 관찰 가능한 오류이다.
결함, 오류 및 고장은 메커니즘에 따라 작동한다. 이 메커니즘은 때때로 결함-오류-고장 체인으로 알려져 있다. 일반적으로 결함이 활성화되면 오류(잘못된 상태)로 이어질 수 있으며, 오류로 인해 생성된 잘못된 상태는 또 다른 오류 또는 고장(시스템 경계에서 지정된 동작에서 관찰 가능한 편차)으로 이어질 수 있다.
신뢰성 신뢰성의 요소
결함이 활성화되면 오류가 생성된다. 오류는 결함과 동일하게 작동하여 추가 오류 조건을 생성할 수 있으므로 오류는 관찰 가능한 고장을 유발하지 않고 시스템 경계 내에서 여러 번 전파될 수 있다. 오류가 시스템 경계 밖으로 전파되면 고장이 발생했다고 말한다. 고장은 기본적으로 서비스가 사양을 충족하지 못한다고 말할 수 있는 지점이다. 한 서비스의 출력 데이터가 다른 서비스로 유입될 수 있으므로 한 서비스의 고장이 다른 서비스에 결함으로 전파될 수 있으며, 따라서 결함이 오류로 이어지고 고장으로 이어지고 오류로 이어지는 등의 체인이 형성될 수 있다.
결함-오류-체인의 메커니즘이 이해되면 이러한 체인을 끊고 시스템의 신뢰성을 높일 수 있는 수단을 구축할 수 있다.
현재까지 네 가지 수단이 확인되었다.
결함 방지는 시스템에 결함이 도입되는 것을 방지하는 것과 관련이 있다. 이는 개발 방법론과 좋은 구현 기술을 사용하여 달성할 수 있다.
결함 제거는 개발 중 제거와 사용 중 제거라는 두 가지 하위 범주로 나눌 수 있다.
개발 중 제거는 시스템이 생산에 들어가기 전에 결함을 감지하고 제거할 수 있도록 검증을 필요로 한다. 시스템이 생산에 들어가면 고장을 기록하고 유지보수 주기를 통해 고장을 제거하기 위한 시스템이 필요하다.
결함 예측은 발생할 가능성이 있는 결함을 예측하여 제거하거나 그 영향을 회피할 수 있도록 한다.
결함 허용은 결함이 있는 상황에서도 시스템이 필요한 서비스를 제공할 수 있도록 메커니즘을 마련하는 것과 관련이 있으며, 서비스 수준이 저하될 수도 있다.
신뢰성 수단은 시스템 최종 사용자에게 보이는 고장의 수를 줄이는 것을 목표로 한다.
결함이 나타나거나 지속되는 방식에 따라 다음과 같이 분류된다.
신뢰성 정보 시스템의 신뢰성 및 생존성
신뢰성에 관한 일부 연구에서는 구조화된 정보 시스템을 사용한다(예: SOA 포함). 이는 속성 생존성을 도입하여 정보 시스템이 마스킹 불가능한 고장 후에 유지하거나 재개하는 저하된 서비스를 고려하기 위함이다.
현재 프레임워크의 유연성은 시스템 아키텍트가 사용 가능한 안전한 리소스의 초점을 가장 중요한 서비스를 지원하도록 재구성 메커니즘을 활성화하도록 장려하며, 실패 방지 시스템을 구축하기 위해 과도하게 프로비저닝하는 대신 이를 활용한다.
네트워크 정보 시스템의 일반화와 함께 사용자 경험에 더 큰 중요성을 부여하기 위해 접근성이 도입되었다.
성능 수준을 고려하기 위해 성능성 측정은 "지정된 기간 동안 결함이 있는 상황에서 객체 시스템이 얼마나 잘 작동하는지 정량화"하는 것으로 정의된다.
네트워크 스케줄러
네트워크 스케줄러(network scheduler)는 패킷 스케줄러(packet scheduler), 큐잉 규율(queueing discipline, qdisc), 또는 큐잉 알고리즘(queueing algorithm)이라고도 불리며, 패킷 교환 통신 네트워크의 노드에 있는 아비터이다. 이는 프로토콜 스택과 네트워크 인터페이스 컨트롤러의 송수신 큐에서 네트워크 패킷의 시퀀스를 관리한다. 여러 운영체제에서 사용할 수 있는 다양한 네트워크 스케줄러가 있으며, 이들은 기존의 많은 스케줄링 알고리즘을 구현한다.
네트워크 스케줄러 로직은 다음으로 전달할 네트워크 패킷을 결정한다. 네트워크 스케줄러는 네트워크 패킷을 전송될 때까지 임시로 저장하는 큐잉 시스템과 연결되어 있다. 시스템은 단일 또는 다수의 큐를 가질 수 있으며, 이 경우 각 큐는 하나의 흐름, 트래픽 분류, 또는 우선순위의 패킷을 보관할 수 있다.
어떤 경우에는 시스템의 제약 내에서 모든 전송을 스케줄링하는 것이 불가능할 수도 있다. 이러한 경우 네트워크 스케줄러는 어떤 트래픽을 전달하고 어떤 것을 삭제할지 결정하는 역할을 한다.
네트워크 스케줄러 용어 및 책임
네트워크 스케줄러는 특정 네트워크 트래픽 제어 이니셔티브를 구현하는 데 책임이 있을 수 있다. 네트워크 트래픽 제어는 네트워크 혼잡, 지연 및 패킷 손실을 줄이는 것을 목표로 하는 모든 조치를 포괄하는 용어이다. 특히, 액티브 큐 관리 (AQM)는 과도한 네트워크 혼잡을 방지하기 위한 더 큰 목표를 달성하기 위해 대기 중인 네트워크 패킷을 선택적으로 삭제하는 것이다. 스케줄러는 삭제할 패킷을 선택해야 한다. 트래픽 셰이핑은 패킷이 버스트로 대기열에 있을 때 전송을 지연시켜 트래픽 흐름의 대역폭 요구 사항을 부드럽게 한다. 스케줄러는 전송되는 패킷의 타이밍을 결정한다. QoS는 서비스 클래스(차등화 서비스) 또는 예약된 연결(통합 서비스)을 기반으로 트래픽에 우선순위를 부여하는 것이다.
네트워크 스케줄러 알고리즘
시간이 지남에 따라 많은 네트워크 큐잉 규율이 개발되었다. 이들 각각은 다양한 송수신 버퍼 내에서 네트워크 패킷의 특정 재정렬 또는 삭제를 제공한다.
큐잉 규율은 특정 클래스의 네트워크 패킷에 대한 지연을 줄이는 것과 같이 다양한 네트워킹 조건을 보상하려는 시도로 일반적으로 사용되며, 주로 QoS 조치의 일부로 사용된다.
클래스 기반 큐잉 규율은 나무의 가지처럼 작동하는 클래스를 생성할 수 있게 한다. 그런 다음 패킷을 각 클래스로 필터링하는 규칙을 설정할 수 있다. 각 클래스는 그 자체로 다른 클래스 기반 또는 클래스리스 큐잉 규율을 할당받을 수 있다. 클래스리스 큐잉 규율은 더 많은 큐잉 규율을 추가하는 것을 허용하지 않는다.
네트워크 트래픽 관리에 적합한 알고리즘의 예시는 다음과 같다.
위에 제시된 몇 가지는 리눅스 커널 모듈로 구현되었으며 자유롭게 이용 가능하다.
네트워크 스케줄러 버퍼블로트
버퍼블로트는 패킷 교환 네트워크에서 과도한 패킷 버퍼링으로 인해 높은 지연과 패킷 지연 변화가 발생하는 현상이다. 버퍼블로트는 불필요하게 높은 버퍼링 백로그를 피하기 위해 패킷을 전략적으로 삭제하는 네트워크 스케줄러로 해결할 수 있다. 예를 들어 CoDel, FQ-CoDel, 무작위 조기 검출 등이 있다.
네트워크 스케줄러 구현
리눅스 커널 패킷 스케줄러는 리눅스 커널의 네트워크 스택의 필수적인 부분이며 모든 NIC의 송수신 링 버퍼를 관리한다.
패킷 스케줄러는 tc (트래픽 제어의 약어)라는 유틸리티를 사용하여 구성된다. 기본 큐잉 규율로서 패킷 스케줄러는 pfifo_fast라고 불리는 선입 선출 구현을 사용하지만, systemd는 버전 217부터 기본 큐잉 규율을 fq_codel로 변경했다.
Ifconfig 및 ip 유틸리티를 통해 시스템 관리자는 각 장치에 대해 이더넷 프레임 수 기준으로 크기에 관계없이 버퍼 크기 txqueuelen 및 rxqueuelen을 별도로 구성할 수 있다. 리눅스 커널의 네트워크 스택에는 네트워크 스케줄러가 관리하지 않는 다른 버퍼들이 포함되어 있다.
버클리 패킷 필터 필터는 패킷 스케줄러의 분류기에 첨부될 수 있다. 2015년 리눅스 커널 버전 4.1에서 도입된 eBPF 기능은 고전적인 BPF 프로그래밍 가능한 분류기를 eBPF로 확장한다. 이들은 LLVM eBPF 백엔드를 사용하여 컴파일하고 tc 유틸리티를 사용하여 실행 중인 커널에 로드할 수 있다.
네트워크 스케줄러 구현
ALTQ는 BSD를 위한 네트워크 스케줄러 구현이다. OpenBSD 버전 5.5부터 ALTQ는 HFSC 스케줄러로 대체되었다.
통신 네트워크의 스케줄러는 패킷 우선순위, 타이밍, 자원 분배를 포함한 자원 할당을 관리한다. 고급 구현은 현대 네트워크 구성의 복잡성을 해결하기 위해 인공지능을 increasingly 활용한다. 예를 들어, 셀 프리 네트워크에서는 다수의 무선 장치(RU)와 사용자 장비(UE) 간의 상호작용을 효율적으로 처리하기 위해 지도 신경망(NN) 기반 스케줄러가 도입되었다. 이 접근 방식은 계산 복잡성을 줄이면서 지연 시간, 처리량 및 자원 할당을 최적화하여 5G 이후 네트워크를 위한 유망한 솔루션이 되고 있다.
소프트웨어 구축
소프트웨어 구축(software construction)은 코딩과 통합을 통해 작동하는 소프트웨어를 만드는 과정이다. 이 과정에는 단위 및 통합 테스트가 포함되지만, 시스템 테스트와 같은 높은 수준의 테스트는 포함되지 않는다.
구축은 소프트웨어 개발 수명 주기의 한 측면이며, 다른 활동과 분리된 활동으로서 구축에 대한 다양한 초점을 가진 여러 소프트웨어 개발 프로세스 모델에 통합된다. 폭포수 모델에서 소프트웨어 개발 노력은 구축을 시작하기 위한 전제 조건인 요구사항 분석, 설계, 계획을 포함하는 순차적인 단계로 구성된다. 스크럼, 진화적 프로토타이핑 또는 익스트림 프로그래밍과 같은 반복적 모델에서는 구축이 다른 활동과 동시에 또는 겹쳐서 발생하는 활동이다.
소프트웨어 구축
구축 계획에는 구성 요소가 생성되고 통합되는 순서, 소프트웨어 품질 관리 프로세스, 팀 및 개발자에게 작업 할당을 정의하는 것이 포함될 수 있다.
프로젝트 관리를 용이하게 하기 위해 개발된 코드의 양, 수정된 코드, 재사용된 코드, 파괴된 코드, 코드 복잡성, 코드 검사 통계, 오류 수정 및 발견률, 투입된 노력 등 수많은 구축 측면을 측정할 수 있다. 이러한 측정은 품질 보장 및 프로세스 개선과 같은 측면에 유용할 수 있다.
소프트웨어 구축 활동
구축에는 많은 활동이 포함된다.
다음은 코딩 활동의 몇 가지 주요 측면이다.
명명
각 식별자에 대한 이름 선택. 한 연구에 따르면 변수 이름이 10자에서 16자 사이일 때 프로그램 디버깅에 필요한 노력이 최소화된다.
로직
문 및 루틴으로 구성
응집력이 높은 루틴은 응집력이 낮은 루틴보다 오류 발생률이 낮은 것으로 입증되었다. 450개 루틴에 대한 연구에 따르면 응집력이 높은 루틴의 50%는 오류가 없었지만, 응집력이 낮은 루틴의 18%만이 오류가 없었다. 다른 450개 루틴에 대한 또 다른 연구에 따르면 결합도 대비 응집도 비율이 가장 높은 루틴은 가장 낮은 루틴보다 오류가 7배 많고 수정 비용이 20배 더 많이 드는 것으로 나타났다.
연구에서 루틴 크기와 오류 발생률 간의 상관 관계에 대한 확실한 결과는 나오지 않았지만, 한 연구에서는 143줄 미만의 코드 라인을 가진 루틴이 더 큰 루틴보다 수정 비용이 2.4배 적게 드는 것으로 나타났다. 또 다른 연구에서는 루틴이 평균 100~150줄의 코드일 때 코드를 가장 적게 변경해야 한다고 밝혔다. 또 다른 연구에서는 루틴의 크기와 관계없이 구조적 복잡성과 데이터 양이 오류와 관련이 있음을 발견했다.
소프트웨어 구축 활동
모듈성
코드를 클래스, 패키지 및 기타 구조로 구성하고 리팩터링한다. 포함을 고려할 때 클래스의 최대 데이터 멤버 수는 7±2를 초과해서는 안 된다. 연구에 따르면 이 숫자는 사람이 다른 작업을 수행하면서 기억할 수 있는 이산 항목의 수이다. 상속을 고려할 때 상속 트리의 수준 수는 제한해야 한다. 깊은 상속 트리는 오류 발생률 증가와 유의미하게 관련이 있는 것으로 밝혀졌다. 클래스에 있는 루틴의 수는 가능한 한 적게 유지해야 한다. C++ 프로그램에 대한 연구에서 루틴 수와 오류 수 사이에 연관성이 발견되었다. NASA의 한 연구에 따르면 코드를 잘 구성된 클래스에 넣으면 기능 설계를 사용하여 개발된 코드에 비해 코드 재사용성이 두 배로 늘어날 수 있다.
오류 처리
계획된 오류와 계획되지 않은 오류 및 예외를 처리하기 위한 로직 인코딩.
자원 관리
쓰레드 또는 데이터베이스 락을 포함하여 배타적 메커니즘 및 직렬 재사용 자원 접근의 규율을 통해 연산 자원 사용을 관리한다.
보안
버퍼 오버런 및 배열 인덱스 오버플로와 같은 코드 수준의 보안 침해 방지.
최적화
최적화와 동시에 조기 최적화를 피한다.
문서화
소프트웨어 구축 활동
주석으로 코드에 포함된 것과 외부 문서로 작성된 것 모두.
통합은 별도로 구성된 부분을 결합하는 것이다. 고려 사항에는 구성 요소가 통합될 순서 계획, 소프트웨어의 임시 버전을 지원하는 스캐폴딩 생성, 구성 요소가 통합되기 전에 수행되는 테스트 및 품질 작업 정도 결정, 임시 버전이 테스트되는 프로젝트의 시점 결정 등이 포함된다.
테스트는 코드에 잘못된 로직이 삽입된 시점과 탐지된 시점 사이의 시간을 줄일 수 있다. 어떤 경우에는 코드가 작성된 후에 테스트가 수행되지만, 테스트 우선 프로그래밍에서는 코드를 작성하기 전에 테스트 케이스를 생성한다. 구축에는 최소 두 가지 형태의 테스트가 포함되며, 종종 코드를 작성한 개발자가 수행한다. 유닛 테스트 및 통합 테스트.
소프트웨어 재사용은 라이브러리를 만들고 사용하는 것 이상을 포함한다. 소프트웨어 수명 주기에 재사용 프로세스 및 활동을 통합하여 재사용 관행을 공식화해야 한다. 코딩 및 테스트 중 소프트웨어 구축에서 재사용과 관련된 작업에는 다음이 포함될 수 있다. 재사용 가능한 코드 선택, 코드 또는 테스트 재사용성 평가, 재사용 지표 보고.
소프트웨어를 구축할 때 품질을 보장하기 위한 기술은 다음과 같다.
소프트웨어 구축 활동
테스트
한 연구에 따르면 유닛 테스트와 통합 테스트의 평균 결함 감지율은 각각 30%와 35%이다.
소프트웨어 검사
소프트웨어 구축 활동
소프트웨어 검사에 관해서는 한 연구에서 공식 코드 검사의 평균 결함 감지율이 60%인 것으로 나타났다. 결함 발견 비용에 관해서는 코드 읽기가 테스트보다 시간당 80% 더 많은 결함을 감지한다는 연구 결과가 있다. 또 다른 연구에서는 테스트를 사용하여 설계 결함을 감지하는 것이 검사를 사용하는 것보다 6배 더 많은 비용이 든다는 것을 보여주었다. IBM의 한 연구에서는 코드 검사를 통해 결함을 찾는 데 3.5시간이 걸렸지만, 테스트를 통해서는 15~25시간이 걸렸다. 마이크로소프트는 코드 검사를 사용하여 결함을 찾고 수정하는 데 3시간이 걸리고 테스트를 사용하여 결함을 찾고 수정하는 데 12시간이 걸린다는 것을 발견했다. 70만 줄의 프로그램에서 코드 검토가 테스트보다 여러 배 더 비용 효율적이라는 보고가 있다. 연구에 따르면 검사는 비공식적인 검토 관행보다 코드 1000줄당 결함 수를 20%~30% 줄이고 생산성을 약 20% 증가시킨다. 공식 검사는 일반적으로 프로젝트 예산의 10%~15%를 차지하며 전체 프로젝트 비용을 줄일 것이다. 연구자들은 공식 검사에 2~3명 이상의 검토자를 두는 것이 발견되는 결함 수를 증가시키지는 않지만, 결과는 검사되는 자료의 종류에 따라 달라지는 것으로 보인다.
소프트웨어 구축 활동
기술 검토
기술 검토에 관해서는 한 연구에서 비공식 코드 검토 및 데스크 검사의 평균 결함 감지율이 각각 25%와 40%인 것으로 나타났다. 워크스루는 결함 감지율이 20%~40%였지만, 특히 프로젝트 압력이 증가할 때 비용이 많이 드는 것으로 나타났다. NASA는 코드 읽기가 시간당 3.3개의 결함을 감지하는 반면, 테스트는 시간당 1.8개의 결함을 감지한다는 것을 발견했다. 또한 다양한 종류의 테스트보다 프로젝트 수명 동안 20%~60% 더 많은 오류를 발견한다. 검토 회의에 대한 13개 검토 연구에서 결함의 90%가 검토 회의 준비 과정에서 발견되었고 회의 중에는 약 10%만이 발견되었다.
정적 분석
정적 분석 (IEEE1028)에 관해서는 높은 결함 감지율을 달성하기 위해 이러한 기술을 조합하여 사용해야 한다는 연구 결과가 있다. 다른 연구에서는 다른 사람들이 다른 결함을 찾는 경향이 있다는 것을 보여주었다. 한 연구에서는 익스트림 프로그래밍의 페어 프로그래밍, 데스크 검사, 유닛 테스트, 통합 테스트, 회귀 테스트와 같은 관행이 90%의 결함 감지율을 달성할 수 있다는 것을 발견했다. 숙련된 프로그래머가 참여한 실험에서는 테스트를 통해 15개 오류 중 평균 5개(최대 9개)의 오류를 찾을 수 있었다.
오류의 80%는 프로젝트 클래스와 루틴의 20%에 집중되는 경향이 있다. 오류의 50%는 프로젝트 클래스의 5%에서 발견된다. IBM은 IMS 시스템에서 425개 클래스 중 31개만 수리하거나 다시 작성함으로써 고객 보고 결함을 10분의 1로 줄이고 유지보수 예산을 45% 줄일 수 있었다. 프로젝트 루틴의 약 20%가 개발 비용의 80%를 차지한다. IBM의 고전적인 연구에 따르면 OS/360의 몇몇 오류 발생률이 높은 루틴이 가장 비싼 엔터티였다. 이 루틴은 코드 1000줄당 약 50개의 결함을 가지고 있었고, 이를 수정하는 데 전체 시스템을 개발하는 데 드는 비용의 10배가 들었다.
소프트웨어 설계의 예상치 못한 격차를 설명하기 위해 구축 중에 설계 수정이 이루어질 수 있다.
소프트웨어 구축 언어
구축에 사용되는 언어 유형은 다음과 같다.
3년 이상 사용한 언어로 작업하는 프로그래머는 해당 언어에 새로 익숙해진 동등한 경험의 프로그래머보다 약 30% 더 생산적이다. C++, 자바, 스몰토크, 비주얼 베이직과 같은 고수준 언어는 어셈블리 및 C와 같은 저수준 언어보다 생산성, 신뢰성, 단순성, 이해도 면에서 5~15배 더 우수하다. 동등한 코드는 저수준 언어보다 고수준 언어로 구현하는 데 더 적은 줄이 필요한 것으로 나타났다.
소프트웨어 구축 모범적 실천 방안
많은 요소가 소프트웨어 품질에 기여하고 총 소유 비용을 최소화한다.
프로그래밍 복잡성을 최소화하는 것은 주로 복잡한 정보를 효과적으로 처리할 수 있는 사람들의 제한된 능력에 의해 좌우된다. 복잡성은 구축 중심 품질 기술을 통해 줄일 수 있다.
변경을 예측하는 것은 개발자가 확장 가능한 소프트웨어 – 즉, 내재된 설계를 방해하지 않고 개선될 수 있는 코드를 구축하는 데 도움이 된다.
25년 이상의 연구에 따르면 재작업 비용은 요구사항을 처음부터 올바르게 파악하는 것보다 10배에서 100배(소규모 프로젝트의 경우 5배에서 10배) 더 비쌀 수 있다. 평균 프로젝트에서 개발 중에 요구사항의 25%가 변경된다는 점을 고려할 때 재작업 비용을 줄여야 할 필요성이 변경 예측의 필요성을 명확히 한다.
검증을 위한 구축은 개발자가 쉽게 결함을 찾아낼 수 있고 독립적인 테스트 및 운영 활동 중에도 결함을 찾아낼 수 있도록 소프트웨어를 구축하는 것을 의미한다. 검증을 위한 구축을 지원하는 특정 기술에는 코드 검토를 지원하기 위한 코딩 표준 준수, 유닛 테스트, 코드를 자동화된 테스트를 지원하도록 구성, 복잡하거나 이해하기 어려운 언어 구조의 제한된 사용 등이 있다.
소프트웨어 구축 모범적 실천 방안
정보 은닉은 대규모 프로그램에서 유용한 설계 기술로 입증되었으며, 수정이 4배 더 쉬워졌다. 낮은 팬아웃은 연구자들이 유익하다고 밝힌 설계 특성 중 하나이다.
소프트웨어 재사용은 상당한 생산성, 품질 및 비용 이점을 실현할 수 있다. 주요 이점은 기존 소프트웨어 자산을 재사용함으로써 달성되며, 재사용은 미래 재사용을 위해 설계된 소프트웨어를 생성함으로써 지원된다.
건축 문제에 직접적인 영향을 미치는 표준(국제 조직에서 만든 외부 표준이든 회사 차원에서 만든 내부 표준이든)은 다음과 같다.
데이터 추상화는 구현 세부 정보를 숨기면서 정보의 의미와 유사한 형태로 정보를 나타내는 소스 코드의 특성이다. 학술 연구에 따르면 데이터 추상화는 함수형 프로그램보다 프로그램을 약 30% 더 쉽게 이해할 수 있게 한다.
객체 지향 언어는 데이터 추상화, 캡슐화, 모듈성, 상속, 다형성, 반영과 같이 프로그램의 유연성과 적응성을 높이는 일련의 런타임 메커니즘을 지원한다.
소프트웨어 구축 모범적 실천 방안
방어적 프로그래밍은 잘못된 입력으로 인해 루틴이 손상되지 않도록 보호하는 것이다. 어설션은 프로그램의 런타임 검사를 허용하는 프로그램에 배치된 실행 가능한 프레디케이트이다. 계약에 의한 설계는 각 루틴에 선행 조건과 후행 조건을 포함하는 개발 접근 방식이다.
오류 처리란 프로그램 실행 시 발생할 수 있는 오류 조건에 대한 코딩 관행을 말한다. 예외 처리는 예외 발생, 즉 프로그램 실행의 정상적인 흐름을 변경하는 특수 조건을 처리하도록 설계된 프로그래밍 언어 구성 또는 하드웨어 메커니즘이다. 결함 허용은 오류를 감지하고 가능하다면 복구하거나 복구가 불가능할 경우 그 영향을 억제하여 소프트웨어 신뢰성을 높이는 기술 모음이다.
소프트웨어 구축 코딩 관점
상태 기반 프로그래밍은 유한 상태 기계를 사용하여 논리를 구현하는 것으로 구성된다.
테이블 기반 논리는 테이블로 형식화된 정보를 사용하여 실행을 구동한다.
런타임 구성은 프로그램이 실행되는 동안 변수 값과 프로그램 설정을 바인딩하는 기술로, 일반적으로 구성 파일을 업데이트하고 읽어서 수행된다.
국제화와 지역화는 여러 로캘을 지원하고 다양한 로캘을 지원하기 위해 프로그램을 준비하는 활동이다.
프로그래밍 팀
프로그래밍 팀(programming team)은 컴퓨터 소프트웨어를 개발하거나 유지보수하는 사람들로 구성된 팀이다. 이들은 여러 방식으로 조직될 수 있지만, 비자아적 프로그래밍 팀과 수석 프로그래머 팀이 일반적인 구조였다.
프로그래밍 팀 설명
프로그래밍 팀은 개발하거나 유지보수하는 사람들로 구성된다.
프로그래밍 팀 프로그래밍 팀 구조
프로그래밍 팀은 여러 방식으로 조직될 수 있지만, 비자아적 프로그래밍 팀과 수석 프로그래머 팀이 일반적으로 사용되는 두 가지 공통 구조이다. 프로그래밍 팀 구조를 선택할 때 주요 결정 요인은 일반적으로 어려움, 규모, 기간, 모듈성, 신뢰성, 시간 및 사회성을 포함한다.
매릴린 만테이에 따르면, 분산된 프로그래밍 팀에 속한 개인들은 더 높은 직무 만족도를 보고한다. 비자아적 프로그래밍 팀은 10명 이하의 프로그래머로 구성된 그룹을 포함한다. 코드는 그룹 구성원들 사이에서 교환되고 목표가 설정된다. 리더십은 특정 시간 동안 필요한 요구 사항과 능력에 따라 그룹 내에서 순환된다. 비자아적 팀의 구조 부족은 대규모 프로젝트에서 효율성, 효과성 및 오류 감지의 약점으로 이어질 수 있다. 비자아적 프로그래밍 팀은 매우 복잡한 작업에 가장 적합하다.
프로그래밍 팀 프로그래밍 팀 구조
수석 프로그래머 팀은 일반적으로 수석 프로그래머, 선임 프로그래머 및 프로그램 사서로 구성된 3인 팀을 포함한다. 필요한 경우 추가 프로그래머와 분석가가 팀에 추가된다. 이 구조의 약점은 팀 구성원 간의 의사소통 부족, 작업 협력 및 복잡한 작업 완료가 포함된다. 수석 프로그래머 팀은 팀 내 정보 흐름이 제한되므로 더 간단하고 명확한 작업에 가장 적합하다. 이 팀 구조에서 일하는 개인들은 일반적으로 낮은 업무 의욕을 보고한다.
두 명의 프로그래머가 하나의 워크스테이션에서 함께 작업하는 개발 기법이다.
팀 전체가 같은 시간, 같은 공간에서 같은 컴퓨터로 같은 작업을 하는 소프트웨어 개발 접근 방식이다.
프로그래밍 팀 프로그래밍 모델
프로그래밍 모델은 소프트웨어 개발 팀이 이러한 다양한 방법론을 사용하여 프로젝트를 개발, 배포 및 테스트할 수 있도록 한다.
이러한 두 가지 프로그래밍 모델 전체에서 팀 구성원은 일반적으로 매일 5~15분간의 스탠드업 회의에 참여한다. 전통적으로 팀의 각 구성원은 일어서서 이전 스탠드업 회의 이후에 작업한 내용, 다음 스탠드업 회의까지 작업할 내용, 그리고 진행을 방해하는 요소(종종 "블로커"라고 알려짐)가 있는지 여부를 말한다.
더 전통적인 접근 방식으로 알려진  폭포수 모델은 선형적인 생산 모델이다. 이 방법론의 이벤트 순서는 다음과 같다.
각 단계는 소프트웨어 개발 프로세스 동안 명확하게 구분되며, 일반적으로 다음 단계가 시작되기 전에 각 단계가 완료된다.
이 모델을 사용하는 프로그래밍 팀은 개발 프로세스 초기에 프로젝트를 설계할 수 있어, 팀이 지속적으로 설계를 반복하는 대신 작업의 대부분 동안 코딩 및 테스트에 집중할 수 있다. 이는 또한 팀이 모든 소프트웨어 산출물을 완전히 이해할 수 있도록 완전히 그리고 더 신중하게 설계할 수 있게 한다.
프로그래밍 팀 프로그래밍 모델
애자일 개발 모델은 이전 폭포수 모델보다 개발에 대한 더 팀 기반의 접근 방식이다. 팀은 "스프린트"라고 불리는 단계로 작업을 분할하는 빠른 납품/배포 방식으로 작업한다. 스프린트는 일반적으로 각 팀/팀 구성원에게 주어진 2주간의 계획된 소프트웨어 산출물로 정의된다.
각 스프린트 후에 작업의 우선순위가 재조정되고 이전 스프린트에서 얻은 정보는 향후 스프린트 계획에 사용된다. 스프린트 작업이 완료되면 프로그래밍 팀에 의해 검토 및 평가될 수 있으며, 다음 반복(예: 다음 스프린트)을 위해 다시 보내지거나 완료되면 종료된다.
애자일 선언문의 일반적인 원칙은 다음과 같다.
확률 컴퓨팅
확률 컴퓨팅 또는 확률적 컴퓨팅(stochastic computing)은 연속적인 값을 임의의 비트 스트림으로 표현하는 기술 집합이다. 복잡한 계산은 스트림에 대한 간단한 비트별 연산을 통해 수행될 수 있다. 확률 컴퓨팅은 확률적 알고리즘 연구와는 구별된다.