소프트웨어 공학의 모든 것 , 최은만 , 생능
1장 소개
연습문제 서술형
1. 소프트웨어가 다른 엔지니어링 결과물, 예를 들어 컴퓨터 하드웨어나 빌딩, 자동차 등과 비교하여 어떤 특징을 갖는가 (특징 비교)
소프트웨어는 다른 엔지니어링 결과물인 컴퓨터 하드웨어, 건물, 자동차 등과 비교할 때 여러 독특한 특징을 가지고 있다. 먼저, 소프트웨어는 물리적 제약이 거의 없는 비가시적이고 비물질적인 산출물이다. 이는 시간이 지나도 마모되지 않으며 물리적인 손상이 발생하지 않는다. 또한, 유연성이 높아 사용자 요구나 시스템 환경의 변화에 따라 손쉽게 수정하고 업데이트할 수 있다. 반면, 이러한 유연성으로 인해 변화가 빈번하여 개발과 유지보수가 복잡해지는 경향이 있다. 마지막으로, 소프트웨어는 복잡성이 높고 설계 및 개발 과정에서 인간의 논리적 오류에 취약하다는 특징을 지닌다.
2. 소프트웨어 위기 현상이란 무엇이며 소프트웨어 프로젝트에서 미숙한 경험으로 인하여 발생하는 여러 문제점은 무엇인가 (위기 현상과 문제점)
소프트웨어 위기 현상은 1960년대부터 대규모 소프트웨어 프로젝트가 실패하거나 예산과 일정이 크게 초과되는 문제가 빈번하게 발생하면서 제기되었다. 이는 소프트웨어의 복잡성과 개발 비용, 일정 추정의 어려움이 맞물려 나타난 현상이다. 소프트웨어 개발 경험이 미숙한 경우, 요구사항 정의의 오류, 설계 결함, 효율적이지 못한 코드 작성, 그리고 품질 관리 부족 등 여러 문제를 야기할 수 있다. 이러한 문제는 프로젝트가 지연되고 예산이 초과되며, 결과적으로 신뢰성이 낮고 유지보수가 어려운 소프트웨어로 이어질 수 있다.
3. 소프트웨어 공학은 궁극적인 목표는 무엇이며 소프트웨어 공학이 적용된 프로젝트에서는 어떤 작업이 이루어지나 (목표와 작업 내용)
소프트웨어 공학의 궁극적인 목표는 고품질의 소프트웨어를 효율적으로 개발하고 유지보수하는 것이다. 이를 위해 신뢰성, 효율성, 유지보수성, 확장성을 갖춘 소프트웨어를 제공하는 것이 중요하다. 소프트웨어 공학이 적용된 프로젝트에서는 요구사항 수집 및 분석, 시스템 설계, 구현, 테스트, 유지보수 작업이 체계적이고 반복적인 방식으로 이루어진다. 이 과정에서 체계적인 관리와 품질 보증 활동이 병행되며, 궁극적으로는 프로젝트의 성공률을 높이고 비용과 시간을 절감하는 데 기여한다.
4. 일반적인 소프트웨어 개발 프로세스의 작업을 나열하고 각 작업에 해야하는 일을 기술하라 (작업 단계와 수행 내용)
일반적인 소프트웨어 개발 프로세스는 다음과 같은 주요 작업 단계로 구성되며, 각 단계에서 구체적인 수행 작업이 요구된다.
- 요구사항 수집 및 분석: 고객과 이해 관계자의 요구를 수집하고 분석하여 소프트웨어가 해결해야 할 문제를 명확히 정의한다. 요구사항을 문서화하고, 이를 통해 기능적 및 비기능적 요구사항을 파악한다.
- 시스템 설계: 수집된 요구사항을 바탕으로 전체 시스템의 아키텍처를 설계한다. 시스템의 구조, 데이터 흐름, 모듈 간의 상호작용을 정의하여 소프트웨어의 골격을 잡는다.
- 구현 (코딩): 설계된 시스템을 실제 코드로 구현하는 단계이다. 각 모듈을 프로그래밍하고, 개발 표준과 코딩 규칙을 준수하여 효율적이고 유지보수 가능한 코드를 작성한다.
- 테스트: 구현된 코드가 요구사항에 맞게 작동하는지 확인하는 단계로, 단위 테스트, 통합 테스트, 시스템 테스트를 통해 결함을 발견하고 수정한다.
- 배포 및 유지보수: 최종 테스트를 통과한 소프트웨어를 고객에게 배포하고, 사용자 피드백을 통해 필요한 수정과 기능 개선을 지속적으로 수행한다.
5. 다음 결과물은 각각 어느 단계에서 작성되나 (결과물과 작성 단계)
- 사용자 매뉴얼 최종본: 배포 및 유지보수 단계
- 아키텍처 설계: 시스템 설계 단계
- SQA 계획: 요구사항 수집 및 분석 또는 초기 계획 단계
- 모듈 명세서: 상세 설계 단계
- 원시코드: 구현 단계
- 테스트 계획: 테스트 준비 단계 (또는 요구사항 수집 후)
- 상세 설계: 시스템 설계 후의 상세 설계 단계
- 비용 예측: 초기 계획 단계
- 프로젝트 계획: 초기 계획 단계
- 테스트 보고서: 테스트 단계
- 사용자 매뉴얼 초고: 시스템 설계 이후 작성 시작, 배포 전 완성
6. 프로젝트 관리에서 중요한 프로젝트에 영향을 주는 세 가지 제약 조건을 설명하라 (제약 조건 설명)
소프트웨어 프로젝트 관리에서 중요한 세 가지 제약 조건은 범위, 시간, 비용이다.
- 범위: 프로젝트가 수행해야 할 작업과 목표를 정의하는 제약으로, 범위가 확장될수록 추가적인 자원과 시간이 필요하다.
- 시간: 프로젝트가 완료되어야 할 기간을 의미하며, 일정 관리와 관련된 제약이다. 시간 제한을 지키지 못하면 비용이 증가하거나 품질이 저하될 수 있다.
- 비용: 프로젝트를 수행하는 데 필요한 예산으로, 예산 초과 시 프로젝트 진행이 어려워지며 자원의 할당과 효율성을 유지하는 것이 중요하다.
7. 소프트웨어 공학의 연구결과인 방법, 도구, 프로세스, 패러다임이 무엇인지 요리에 비유하여 설명하라 (비유 설명)
소프트웨어 공학의 연구 결과를 요리에 비유하면 다음과 같다.
- 방법: 요리 방법처럼, 특정 문제를 해결하기 위한 절차와 기술을 의미한다. 레시피와 같이 정확한 순서와 도구 사용 방법이 포함된다.
- 도구: 조리기구와 같은 도구는 요리를 쉽게 만들어주듯, 소프트웨어 개발 도구는 효율적이고 정확하게 작업을 수행할 수 있도록 돕는다.
- 프로세스: 요리의 전 과정인 조리 과정을 계획하고 관리하는 것처럼, 소프트웨어 프로세스는 전체 개발 과정의 흐름과 절차를 관리하는 체계이다.
- 패러다임: 요리의 철학이나 스타일에 해당하며, 예를 들어 프랑스 요리나 이탈리아 요리가 각기 다른 패러다임을 가지듯, 소프트웨어 공학에서도 절차적, 객체지향, 함수형 등 다양한 패러다임이 존재한다.
8. 소프트웨어는 결함이 많이 있을 수도 있고 고장은 매우 심각한 피해를 유발할 수 있다. 따라서 개발 작업과는 별도의 품질을 높이기 위해 어떤 활동을 하는지 구체적으로 설명하라 (품질 향상 활동 설명)
소프트웨어 품질을 높이기 위해 다양한 품질 보증 활동이 수행된다.
- 리뷰와 검사: 코드 리뷰, 디자인 리뷰 등을 통해 개발 과정에서 오류를 조기에 발견하고 수정한다.
- 정적 분석: 코드를 실행하지 않고 소스코드나 설계 문서를 분석하여 잠재적인 결함을 찾는다.
- 테스트: 단위 테스트, 통합 테스트, 시스템 테스트 등을 수행하여 소프트웨어가 요구사항에 맞게 작동하는지 검증하고, 결함을 발견하고 수정한다.
- 형상 관리: 소프트웨어의 변경 사항을 추적하고 관리하여 버전별로 일관성을 유지하고 결함을 방지한다.
- 문서화: 정확한 문서를 통해 개발, 유지보수, 테스트 작업을 체계적으로 수행할 수 있게 한다.
9. SWEBOK이란 무엇이며 V3.0에 담겨진 주요 지식 영역은 (SWEBOK 개요와 주요 지식 영역)
SWEBOK(Software Engineering Body of Knowledge)은 소프트웨어 공학의 지식 체계를 정리한 표준 문서로, 소프트웨어 개발, 유지보수, 관리 등에서 필수적인 지식 영역을 체계적으로 정리해놓은 문서이다. V3.0 버전에서는 소프트웨어 요구사항, 설계, 구축, 테스트, 유지보수, 소프트웨어 구성 관리, 소프트웨어 공학 프로세스, 소프트웨어 공학 관리, 소프트웨어 품질, 소프트웨어 엔지니어링 도구와 방법론, 컴퓨터 과학 기초 등 총 15개의 주요 지식 영역을 다룬다.
10. 소프트웨어 공학과 밀접하게 연관된 분야는 무엇이며 컴퓨터 과학과의 차이점은 무엇인가 (관련 분야와 차이점)
소프트웨어 공학과 밀접하게 연관된 분야는 컴퓨터 과학이다. 컴퓨터 과학은 알고리즘, 데이터 구조, 이론적 배경 등을 연구하여 기술적인 기반을 제공하는 반면, 소프트웨어 공학
은 이러한 이론을 바탕으로 실제 소프트웨어 시스템을 설계하고 구현하는 실용적 측면에 중점을 둔다. 컴퓨터 과학은 문제 해결의 원리를 탐구하는 학문이라면, 소프트웨어 공학은 효율적이고 품질 높은 소프트웨어를 개발하는 방법론과 관리 기법에 중점을 둔다.
'[ Computer Science ] > SW Engineering' 카테고리의 다른 글
[소프트웨어공학] 소프트웨어 아키텍처 패턴 (3) | 2024.11.20 |
---|---|
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 6장 서술형 (1) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 5장 서술형 (6) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 4장 서술형 (2) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 3장 서술형 (5) | 2024.10.28 |
[SW Engineering] 소프트웨어 공학의 모든 것 연습문제 2장 서술형 (1) | 2024.10.28 |