본문 바로가기

전체 글

(27)
Reuse software Software reuse software reuse 대부분의 공학 분야에서는 기존 구성 요소를 조합하여 시스템을 설계함 더 나은 소프트웨어를 더 빠르고 낮은 비용으로 개발하기 위해 체계적인 소프트웨어 재사용이 필요하다. 재사용 기반 소프트웨어 공학 시스템 재사용: 여러 응용 프로그램을 포함할 수 있는 완전한 시스템을 재사용 응용 프로그램 재사용: 응용 프로그램을 재사용 없이 다른 시스템에 통합 구성 요소 재사용: 서브 시스템에서 개별 객체까지 응용 프로그램의 구성 요소 재사용 객체 및 함수 재사용 재사용의 장점 빠른 개발: 개발 및 검증 시간을 줄일 수 있어 생산을 가속화할 수 있다. 전문가의 효율적인 사용: 전문가는 반복하지 않고 개발할 수 있게 됨 신뢰성 향상: 검증된 소프트웨어를 재사용하면 새로 ..
Reliability Engineering Reliability Engineering Reliability Engineering 고객들 신뢰성 있는 소프트웨어를 원한다. 의료 시스템, 통신 및 전력 시스템, 항공우주 시스템 등은 매우 높은 신뢰성 요구사항을 가지고 있다. Faults, errors and failures Human error or mistake: 인간의 행동으로 인해 오류 발생 System fault: 시스템의 특성으로, 시스템 오류로 이어질 수 있다. System error: 예상되지 않는 시스템 동작을 유발할 수 있는 잘못된 시스템 상태 System failures: 시스템이 사용자의 기대대로 서비스를 제공하지 못하는 상태 Faults and failures 실패는 일반적으로 시스템 오류로부터 비롯되는 결과이다. 그러나 결함이..
Safety engineering Safety engineering Safety 안전이란 시스템의 속성으로 인간의 부상이나 사망의 위험 없이 작동하며 시스템의 환경을 손상시키지 않는 능력 Software in safety-critical systems 소프트웨어의 동작은 전체 시스템의 안전성과 직접적으로 관련이 있다. 소프트웨어는 시스템 내 다른 안전 중요 구성 요소를 확인하고 모니터링하는 데 널리 사용된다. 예를 들어, 항공기 엔진 구성 요소는 소프트웨어에 의해 모니터링된다. 이 소프트웨어가 실패하면 사고를 초래할 수 있다. Safety and reliability 안전성과 신뢰성은 연관이 있지만 독립적인 개념이다. 일반적으로 신뢰성과 가용성은 안전성을 위한 필요 조건이지만 충분한 조건은 아니다. 신뢰성은 명세에 대한 준수도에 관련되지..
3주차 기록 동기와 비동기 개요 예외처리 관련해서 찾아보다가 동기와 비동기에 대한 개념이 나왔다. 이건 분명 전에 알았었는데 또 까먹었다.. 한 세번째 보는 것 같은데 그래서 이번에 확실히 짚고 넘어가고싶었다. 동기(Synchronous) 동기란? 동기는 동시에 일어난다는 뜻으로, 요청과 그 결과가 동시에 일어나는 것이다. 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. 작업이 순차적으로 실행된다. 하나의 작업이 완료될 때까지 블로킹 동작이 일어날 수 있어 다른 작업을 수행할 수 없다. 사용자가 데이터를 서버에 요청한다면 그 서버가 데이터 요청에 대한 응답을 사용자에게 리턴해주기 전까지 사용자는 다른 작업을 수행할 수 없다. 예시: 카페에서 아메리카노를 주문 후 메리카노를 받기 전까지 다른..
Dependable Systems Dependable Systems 시스템 신뢰성이란? 시스템의 신뢰성은 사용자가 해당 시스템에 가지는 신뢰의 정도 시스템이 사용자의 기대대로 작동하고 정상적인 사용에서 실패하지 않을 것이라는 확신을 갖는 정도 신뢰성, 가용성 및 보안이라는 관련된 시스템 속성 포함 신뢰성의 중요성 시스템 장애는 많은 사람들이 영향을 받을 수 있는 광범위한 영향을 미칠 수 있다. 시스템 장애로 인해 경제적 손실이나 물적 피해가 발생한 경우 비용이 매우 높을 수 있다. 정보 손실로 인해 복구 비용이 매우 높을 수 있다. 1. Dependability properties 주요 신뢰성 속성 Availability: 시스템이 정상적으로 작동하고 사용 가능한 상태로 유지되는 정도 Reliability: 시스템이 정상적으로 작동하고 ..
Software Evolution Software Evolution 소프트웨어 변경은 불가피한 일이다. 모든 조직에게 공통적으로 중요한 문제는 기존 소프트웨어 시스템에 대한 변경을 구현하고 관리하는 것이다. 미국의 개발자들은 시간의 35%를 디버깅에 할애할 정도로 디버깅에 많은 시간을 소비한다. 1. Evolution processes Change implementation 소프트웨어 개발 프로세스에서 변경 사항을 설계, 구현 및 테스트하는 개발 단계이다. 시스템 개정이 이루어지는 반복적인 작업이다. 중요한 차이점은 change implementation의 처음 단계에서 프로그램 이해 작업이 포함될 수 있다는 것이다. 특히 원래의 시스템 개발자가 변경 사항의 구현을 담당하지 않는 경우에는 더욱 중요 이해 단계에서는 프로그램의 구조, 기능..
Software Testing 1. Program testing 테스트는 오류의 존재는 밝힐 수 있지만, 오류의 부재를 보장하지는 않는다. 테스트는 정적 검증 기법을 포함하는 더 일반적인 소프트웨어 검증 프로세스의 일부이다. Program testing goals 개발자와 고객에게 소프트웨어가 요구 사항을 충족시키는지를 증명하는 것이다. custom software의 경우, 요구 사항 문서의 각 요구 사항에 대해 최소한 하나의 테스트가 있어야 한다. generic software의 경우, 제품 릴리스에 포함될 모든 시스템 기능과 이러한 기능의 조합에 대한 테스트가 있어야 한다. 소프트웨어의 동작이 부적절하거나 규격에 부합하지 않는 경우를 발견하기 위한 것이다. Validation testing: 요구 사항을 충족시키는 것을 증명, 성..
2주차 기록 DTO? 빌더패턴? 개요 DTO의 개념과 예시 코드를 보고 이게 뭔지는 대충 알겠는데 왜? 사용하는지는 모르겠다. 그리고 과제 해결을 위해 구현을 하다보니 Builder라는 것도 자주 보였다. 이 둘이 연관이 있는 것 같아 찾아보기로 했다. DTO DTO란? DTO란 Data Transfer Object의 약어로, 데이터 전송 객체를 의미한다. 여러 개 값을 한 번에 전송하거나 전달하는 등의 역할을 수행한다. DTO를 사용하는 이유 비즈니스 로직과 데이터 전송 로직을 분리할 수 있어, 객체 간의 결합도를 감소시킬 수 있고, 유지보수성을 향상시킬 수 있다. 표현 계층에 필요하지 않은 도메인 모델의 정보를 외부로 노출시키지 않아 캡슐화를 통해 보안을 강화할 수 있다. Builder 패턴 Builder 패턴이..