소프트웨어 고장 사례 화성 기후 관측 위성 결함 사례 MCO(Mars Climate Orbiter) 위성 화성의 대기 탐사를 목적으로 1998년 개발 화성 궤도에 진입하는 과정에서 통신 두절
부정확한 요구사항사용자 환경 이해 부족프로젝트 관리 기술 부족부족한 자원높은 사용자 기대치변경 관리 부족지원 관리 실패부정확한 프로젝트 계획
요구사항을 입력 받아 소프트웨어 시스템이 해야 할 기능이 무엇인지를 식별해가는 과정소프트웨어 분석을 위한 첫번째 활동UML의 유스 케이스 다이어그램을 이용하여 분석 결과를 표현
모듈화 소프트웨어 공학의 원리 중 가장 근간이 되는 개념 결합력 모듈 간의 의존성 관계, 결합력이 작을수록 좋은 설계 모듈간의 결합력을 최소화 할 때의 장점 시스템의 구송 요소 간에 결합이 느슨해짐 변경에 의한 파동 효과를 막을 수 있음 소프트웨어에 대한 이해도를 높임
사물의 대표적인 특징으로 대상물을 나타내는 것여러 클래스의 부모 클래스를 생성하거나 유사한 클래스를 묶어서 하나의 패키지로 표현하는데 추상화를 적용
체계적으로 정의된 절차를 기반으로 결함을 발견하기 위해 훈련된 엔지니어에 의해 수행되는 산출물의 동료 검토(Peer Review)
의미 있는 변수 이름을 사용, 줄 간격, 들여쓰기를 통해 가독성을 높임 코드의 기능과 목적을 설명하는 주석이 필요함 각 코드가 각자의 기능을 훌륭히 수행해야 함 중복 코드를 경계하고 한 가지 기능을 수행하도록 만들어야 함 현재와 미래의 사항을 모두 염두에 두어야 함
패턴 실설계에 존재하는 사물이나 개념에서 반복적으로 발생하는 형상을 추상화하여 정의한 것 장점 생산성 증가, 전문가 경험의 전달 및 학습 효과 솔루션에 대한 불필요한 논쟁 제거, 결과물의 품질 향상
DevOps 소개 사일로 기반 개발 방식 소프트웨어 개발의 각 단계가 종료된 후 다음 단계로 진행 각 단계 간 상호작용 부재
요구사항 개요 요구사항의 분류 기능적 요구사항 사용자의 업무 처리와 직접 관련되어 소프트웨어 시스템이 수행해야 하는 요구 내용을 의미 시스템이 해야 하는 것은 무엇인가? 시스템의 입력과 출력 데이터(Data)는 무엇이고, 그 형식은 어떻게 정의되는가?