목록컴퓨터공학 전공 (23)
초보 개발자

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** 애자일 방법론에 대한 경험이 담긴 논문들 - 애자일 기법을 적용한다고 해서, 회사의 모든 개발자가 한 장소에서 daily standup 미팅을 하는 것은 아닐 것이다 - 여러 팀으로 구성되어 있고 각 팀이 애자일 기법을 적용하는 것. Choice of Software Development Methodologies (a) 연수익이 높은 기업에서는 Traditional, 즉 Waterfall 방법론을 사용하는 곳이 50% 이상이고, 연수익이 100M 이하인 기업은 Iterative나 Agile을 가장 많이 사용하는 것으로 나타난다. (b) 그러나 10000명 이상의 직원이 일하는 기업도 24.4%가 Agile을 사용하는 것을 보면..

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** 소프트웨어 프로젝트 관리 - cost estimation, metrics, development methodology 등을 알아야 한다. 개발팀의 역량이 아무리 좋아도 프로젝트 관리가 제대로 되지 않으면 성공할 확률이 떨어진다. 프로젝트 매니저가 배워야 할 교훈 프로젝트 시작 전, 계획은 필수이다. 계획을 기반으로 프로젝트가 잘 수행되고 있는지 알 수 있기 때문이다. 프로젝트를 진행하며 필요한 자료를 수집하고 분석하여 가능한 정략적으로 프로젝트의 상황을 확인해야 한다. 대부분의 프로젝트는 실제 계획과 다르게 진행되는 경우가 많다. 계획에서 틀어져도 성공적으로 관리할 수 있다. 프로젝트가 지연된다면 일정을 수정하고, 전체 조직과..
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** 하드웨어의 경우 Fault-Tolerence를 중복으로 비교적 쉽게 해결 가능하다. 그러나 소프트웨어/OS는 복잡해짐 TMR triple modular redundancy: single point failure를 피하는 것이 목표 Fault-Tolerence를 소프트웨어에도 적용해보자면...? 논리적인 오류 때문에 잘못된 결과가 나오더라도 이러한 한계를 극복하기 위해 시작 안전에 필수적인 기능을 담당하는 소프트웨어의 경우, 이는 필수적이다. Recovery Block primary alternative 블럭에 명시된 알고리즘 이용하여 계산 acceptance test 루틴을 이용해 결과값 검사 통과하면 그대로 씀 / 통과하지 ..
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** Theorem Proving Theorem prover: Coq, Isabelle, PVS 등 Theorem prover의 사용법을 배우고 실제로 쓰기 위한 진입장벽이 높다. Theorem prover를 사용하는 개인의 능력과 경험에 따라 증명의 성공 여부가 달라질 수 있다. Theorem prover도 소프트웨어이므로 오류가 있을 수 있음을 명심해야 한다. 장점: 상태 폭발의 문제에서 자유롭다. Model Checking 도달 가능한 모든 상태에 대해서 사용자가 검증하고자 하는 성질이 만족되는지를 자동적으로 분석한다. 장점: 사용이 쉽다. 증명과정 전체가 자동화되어 있다. 성공하면 true를 실패하면 반례를 출력한다 단점: ..
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** 정형검증 기법 소프트웨어 품질보증에서 테스팅의 한계를 보완해줄 수 있음 (모든 입력 확인 불가능) - equivalent partition: 입력값을 그룹으로 묶어서 임의의 값으로 테스팅 - boundary value analysis: 경계값을 테스트케이스로 사용하는 테스팅 정형기법: 정형명세 + 정형검증 symbolic execution, program proof/verification, model checking, program synthesis 높은 신뢰도를 요구하는 safety-critical 시스템, 보안이 중요한 시스템에서 사용 DAL의 catastrophic, EAL7에서는 정형기법의 적용이 필수이다. + EAL:..
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** Concrete + Symbolic testing 특정 branch를 수행할 수 있는 입력값 자동 생성 도구 활용 (SMT solver) 복잡한 소프트웨어를 테스팅할 수 있는 Concolic Testing Concolic 테스팅 기법과 이를 자동화하는 도구를 사용하는 것이 좋다. (CREST) 동작 원리: (1,1)부터 값을 주며 실행하고, 해당 상황에서 알게 된 지식을 바탕으로 값을 수정하며 반복 수행 (SMT solver 활용) 실제로 학생들이 테스팅해보면, statement coverage (57.3~78.3) / Branch Coverage (36.9~62.1)로 상당히 낮다. Concolic testing은? bran..

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** white box testing / structural testing 에서 쓰이는 개념 1. 테스팅 작업을 효과적으로 관리하기 위해서는 coverage 자동 툴이 필요하다. 2. coverage의 척도가 되는 기준을 이해하고, 여러 coverage 사이의 관계를 이해해야 한다. Coverage의 종류 Statement Coverage: 프로그램에 포함된 문장 중 얼마나 실행되었는지. 제일 약한 기준 Branch Coverage: 조건문을 비롯한 각종 분기 중 얼마나 많은 분기를 따라서 수행되었는지 coverage 값에는 측정되지 않지만, 숨겨진 branch가 있을 수 있다! Condition Coverage: 특정 분기문을 수..
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. ** 테스팅 작업을 통해서 소프트웨어에 오류가 있음을 보일 수는 있지만, 오류가 없다는 점은 보일 수 없다. - Dijkstra 테스팅 작업: 창조적인 파괴, 의도하지 않은 대로 작동하는 것을 확인하는 행위이다. 소프트웨어 테스팅의 현실적인 어려움 실제 사용되는 환경에서 테스팅하기 어려움 미사일 요격 시스템: 테스팅을 위해 전쟁을 할 수는 없음 모든 입력값의 범위 및 값의 조합에 대해 테스팅이 불가능함 자율주행 차량의 소프트웨어: 모든 상황을 테스팅하는 것은 불가능 글꼴 선택, 효과 선택 등의 워드프로세서 기능: 매우 많은 조합 + 배타적 관계 → 일부가 성공적이라고 다른 조합도 성공적일 거라 장담 불가능 소프트웨어의 오작동은 환경..