본문 바로가기

소프트웨어공학27

[소프트웨어공학] 5. Requirements Engineering (2) What is a Requirement? : 시스템이 수행해야 하는 작업 (시스템이 무엇을 해야 하는가?) 서비스, 제약사항에 대한 상위 수준의 추상적인 설명 ~ 세부적인 기능 사양에 이르기까지 다양하다. Types of Requirements : 요구사항을 작성 대상에 따라 구분한 것 사용자 요구사항: 고객을 위해 작성 시스템 요구사항: 시스템의 기능, 서비스, 운영 제약에 대해 보다 상세하게 설명한 구조화된 문서 Functinal and Non-functional Requirements : 요구사항을 내용에 따라 구분한 것 기능 요구사항 : 시스템이 제공해야 하는 서비스, 특정 입력에 대해 시스템이 반응하는 방식, 특정 상황에 시스템이 동작하는 방식을 기술한 것 비기능 요구사항 도메인 요구사항 Fun.. 2023. 10. 6.
[소프트웨어공학] 5. Requirements Engineering (1) Requirements engineering (요구 공학): 고객이 시스템에서 요구하는 서비스와 시스템의 운영, 개발에 대한 제약사항을 설정하는 과정시스템 요구사항: 요구 공학 프로세스에서 생성되는 시스템의 서비스 및 제약사항에 대한 설명 What is a requirement? (요구): 시스템이 수행해야 하는 작업 (시스템이 무엇을 해야 하는가?)서비스, 제약사항에 대한 상위 수준의 추상적인 설명 ~ 세부적인 기능 사양에 이르기까지 다양하다. Types of requirement▶ 사용자 요구사항 : 시스템이 사용자에게 제공해야 할 서비스와 동작상의 제약사항에 대해 자연어, 다이어그램으로 기록한 문장고객을 위해 작성한다. ▶ 시스템 요구사항 : 시스템의 기능, 서비스, 운영 제약에 대해 보다 상세하게.. 2023. 9. 27.
[소프트웨어공학] 4. Software Processes (2) Coping with change (변경에 대처하는 방법)▶ 모든 대규모 소프트웨어 프로젝트에서 변경은 불가피하다.비즈니스 변화 --> 새롭고 변경된 시스템 요구사항새로운 기술 --> 설계, 구현 개선에 대한 새로운 접근 가능성플랫폼 변경 --> 애플리케이션 변경 ▶ 변경 비용요구사항 재분석새로운 기능 구현수정에 대한 검증 Reducing the costs of rework ▶ 프로토타이핑 ▶ 점증적 인도 (incremental development process) Prototype system (프로토타입 시스템)▶ 프토토타입 : 제품의 아이디어를 시연하고, 디자인 선택 사항들을 시도해볼 수 있는 시스템의 초기 버전 (=/= 최종적인 결과물) ▶ 프로토타입 사용요구공학 프로세스: 시스템 요구사항 도출,.. 2023. 9. 21.
[소프트웨어공학] 4. Software Processes (1) The Software Process : 소프트웨어 시스템을 개발하기 위한 체계적인 활동들 - 많은 소프트웨어 프로세스가 존재한다. ▶ 반드시 포함되어야 하는 활동들: 명세화: 소프트웨어 시스템이 해야 할 일을 정의한다. 설계 및 구현: 시스템의 구조를 정의하고 구현한다. 검증: 소프트웨어가 고객이 원하는 것과 일치하는지 확인한다. 진화: 변화하는 고객의 요구를 만족시키기 위해 진화한다. ▶ 소프트웨어 프로세스 모델 : 소프트웨어 프로세스를 단순하게 나타낸 것 (추상화시켜 표현한 것) 폭포수 모델 -- 예) 기차/자동차 제어 모델 (요구사항이 명확하고, 변경되지 않는다.) 점증적 개발 -- 예) 여행 (사용자와 상호작용) 재사용 기반 소프트웨어 공학 모델 -- 예) 수강신청 시스템 개발 경험이 있는 사람.. 2023. 9. 21.
[소프트웨어공학] 3. Cost Estimation Estimation uncertainty --> 예측 범위가 점차 줄어든다. Estimation techniques 조직은 소프트웨어 노력, 비용을 추정해야 한다. 비용 추정에 사용할 수 있는 두 가지 유형의 기술: - 경험 기반 기법(Experience-based approaches): 관리자의 과거 프로젝트 경험, 애플리케이션 도메인을 근거로 추정 - 알고리즘 비용 모델(Algorithmic cost modeling): 제품 속성의 추정치(크기 등), 프로세스 특성, 참여한 직원들의 경험을 근거로 하는 공식적 접근법 1) Experience-based approaches : 과거 프로젝트 경험과, 이러한 프로젝트에서 소프트웨어 개발 활동에 들인 노력에 기반한 판단에 의존한다. --> But, 기술의 .. 2023. 9. 13.
[소프트웨어공학] 2. Project Planning Project planning (프로젝트 계획) : 계획 수립 --> 자원 획득 --> 실행 --> 모니터링 프로젝트 계획 : 작업을 여러 부분으로 나누어 팀 구성원에게 할당하고, 발생할 수 있는 문제를 예상하고, 해당 문제에 대한 잠정적 해결방안을 준비한다. 프로젝트 계획의 이용 - 프로젝트가 어떻게 진행될 것인가를 프로젝트 팀과 고객이 소통할 때 - 프로젝트 진행 상황을 평가할 때 Planning stages 제안 단계: 소프트웨어 시스템을 개발/공급하는 계약을 얻기 위해 입찰할 때 프로젝트 시작 단계 동안: 누가 프로젝트에서 일할 것인지, 프로젝트를 어떻게 작업들로 나눌 것인지, 자원을 어떻게 할당할 것인지 등에 대한 계획을 수립한다. 프로젝트 내내 주기적으로: 개발하는 동안 얻은 경험, 새로운 정.. 2023. 9. 12.
[소프트웨어공학] 1. An Introduction to Software Engineering 소프트웨어란 무엇인가? : 프로그램 자체뿐만 아니라, 모든 관련 문서들, 라이브러리, 지원 웹사이트, 이 프로그램을 유용하게 쓰는 데에 필요한 환경 설정 데이터도 포함한다. ▶ 소프트웨어 제품 유형 일반 제품(Generic product) 맞춤식 소프트웨어(Customized product) Cf) 임베디드 소프트웨어: 일반 제품(Generic product) --> 새로운 소프트웨어의 개발은 완전히 새롭게 개발을 하거나, 소프트웨어 시스템을 구성하거나, 기존 소프트웨어를 재사용하여 만들 수 있다. 좋은 소프트웨어의 필수적인 특성 유지보수성(maintainability): 고객의 변화하는 요구를 충족시킬 수 있도록 확실성과 보안성(dependability and security): 신뢰성, 보안성, 안전.. 2023. 9. 7.
[소프트웨어 공학] Ch2: 소프트웨어 프로세스 2.1 소프트웨어 프로세스 모델 : 소프트웨어 프로세스를 단순하게 나타낸 것 1) 폭포수 모델 요구사항 분석 및 정의 시스템/소프트웨어 설계 구현 및 단위 테스팅 통합과 시스템 테스팅 운영과 유지보수 원칙적으로 폭포수 모델에서 각 단계의 결과로 승인된 하나 또는 그 이상의 문서들이 나와야 한다. 그리고 이전 단계가 끝나기 전까지는 다음 단계를 시작하지 않는다. 자유로운 팀 커뮤니케이션이 가능하고 소프트웨어 요구사항이 빨리 변경되는 상황에서 폭포수 모델은 적합한 프로세스 모델이 아니다. 이러한 경우에는 반복적 개발 애자일 방법론이 더 적합하다. 2) 점층적 개발 : 점층적 개발의 아이디어는 초기 구현을 개발하고, 사용자와 다른 사람들로부터 피드백을 받아서, 여러 버전을 거쳐 소프트웨어를 진화시킴으로써 요구.. 2023. 8. 6.
[소프트웨어 공학] Ch1: 서론 1.1 전문적 소프트웨어 개발 ▶ 소프트웨어 공학에 관한 FAQ 소프트웨어란 무엇인가? : 컴퓨터 프로그램과 관련된 문서들. 특정 고객을 위하거나 일반적인 시장을 고려해서 소프트웨어 제품을 개발할 수 있다. 좋은 소프트웨어의 특성은 무엇인가? : 좋은 소프트웨어는 요구받은 기능과 성능을 사용자에게 제공해야 하고, 유지보수하기 좋고, 신뢰할 수 있으며, 사용하기 쉬워야 한다. 소프트웨어 공학은 무엇인가? : 소프트웨어 공학은 초기 구상 단계부터 운영과 유지보수까지 포함하는 소프트웨어 생산의 모든 관점과 관련한 공학적인 학문 분야이다. 소프트웨어 공학의 기본 활동에는 어떤 것들이 있는가? : 소프트웨어 명세화, 소프트웨어 개발, 소프트웨어 검증과 소프트웨어 진화 소프트웨어 공학 vs. 컴퓨터 과학 : 컴퓨터.. 2023. 8. 6.