코딩딩/CS
시스템 공학
전낙타
2023. 8. 30. 08:54
1. 학습 목표
- 시스템의 정의 및 고성요소에 대해 설명할 수 있다.
- 소프트웨어의 정의 및 특징에 대해 설명할 수 있다.
- 소프트웨어 공학의 발생 배경과 개념을 설명할 수 있다.
2. 학습 내용
시스템 공학
정의
- 시스템
- 어떤 목적과 기능을 수행하기 위해 유기적인 관계를 맺으며, 함께 작용하고, 서로 의존하는 요소들의 집합
- 각기 독자적인 목적을 가지고 있는 여러 구성요소로 이루어진 특정한 집합
- 예) 컴퓨터 시스템 : 하드웨어, 소프트웨어 등의 구성요소들이 서로 유기적으로 작용함
- 시스템 공학
- 시스템의 개발과 운용, 유지보수를 합리적으로 행하기 위한 사고방법, 절차, 조직 및 기법등을 총칭함
- 기술적 측면 : 시스템을 구성하는 물리적 요소의 적합성과 이의 효과적인 조합에 의한 효율의 극대화를 추구함
- 관리적 측면 : 시스템 개발에 관련된 업무가 제대로 이루어지도록 인원, 설비, 자재 등에 대한 계획과 통제를 행하는 관리기술을 의미함
- 시스템의 개발과 운용, 유지보수를 합리적으로 행하기 위한 사고방법, 절차, 조직 및 기법등을 총칭함
시스템 개발과 가치평가 기준
- 시스템 개발은 인간의 욕구와 사회적 필요성에 의해 시작
- 시스템의 가치는 여러가지 기준에 의해서 평가, 그 기준은 시스템의 목적에 따라 다름
- 일반적으로 인정되는 시스템의 가치평가 기준으로는 시간, 비용, 성능, 신뢰성, 안정성, 보전성이 있음
컴퓨터 시스템 공학
- 높은 수준에서 시스템의 기능들을 정의, 분석하여 하드웨어, 소프트웨어, 또는 사람을 비롯한 시스템의 구성요소에 할당하는 활동
- 시스템 개발의 단계
- 시스템 정의 - 사용자가 요구하는 목표와 시스템의 제약 조건 정의
- 시스템 구성요소 할당 - 시스템의 주요기능, 성능 제약조건, 설계제약조건, 인터페이스, 정보구조등을 할당
- 소프트웨어 개발 및 확장 - 기능과 성능을 제공하기 위한 소프트웨어 엔지니어들의 작업을 말함
시스템 구성요소
- 입력 - 처리할 데이터 처리방법 조건등을 시스템에 입력 (키보드,마우스)
- 처리 - 입력된 데이터를 처리하는것 (각종 알고리즘)
- 출력 - 처리된 결과를 출력하는 것 (프린터, 모니터)
- 제어 - 일련의 처리과정이 올바르게 진행되는지 감동
- 피드백 - 출력된 결과가 목표를 만족시키지 못할경우 반복처리 하는것
소프트웨어 개요
정의
- 사용자가 원하는 기능을 제공해주는 프로그램
- 원하는 정보를 알맞게 처리하도록 해주는 자료구조
- 프로그램의 사용에 도움을 주는 설명문서 등의 총칭
특징
- 개발과정이 복잡하고 표준화되어 있지 않아 이해와 관리가 어려움
- 하드웨어처럼 제작되지 않고 논리적 절차에 따라 개발됨
- 사용자의 요구나 환경변화에 따라 변형시킬 수 있음
- 마모되거나 소멸하지 않음
- 소프트웨어 생산물의 구조가 코드 속에 숨어있음
분류
- 기능에 의한 분류
- 응용 소프트웨어 - 사용자가 우너하는 목적에 맞게 개발된 소프트웨어 (엑셀, 게임프로그램)
- 시스템 소프트웨어 - 컴퓨터 하드웨어를 운영하기 위해 개발된 소프트웨 (운영체제나 관리시스템)
- 개발과정에 따른 분류
- 프로토타입 - 사용자의 요구사항을 분석할수 있도록 지원하는 견본품
- 프로젝트 산출물 - 아직 상품화되지 않은 소프트웨어
- 패키지 - 완성품
소프트웨어 위기
개념
- 소프트웨어의 생산성을 높일 수 있는 기술과 전문 인력이 절대적으로 필요한 반면 공급이 수요를 충족하지 못해서 소프트웨어에 대한 사용자들의 요구사항을 처리할 수 없는 문제가 발생하는 것
- 소프트웨어 전문가들이 늘어나 생산성이 높아졌지만, 사용자의 요구사항 및 품질에 대한 기대감이 높아 소프트웨어 위기 발생요인이 계속해서 발생
발생 요인
- 소프트웨어 규모의 증대와 복잡도에 따른 개발 비용 증가
- 프로젝트 관리기술의 부재
- 소프트웨어 개발기술에 대한 훈련 부족
- 소프트웨어 품질의 미흡
- 소프트웨어 생산성 저조
결과
- 유지보수의 어려움
- 성능, 신뢰성 부족
- 개발 기간 지연 및 개발 비용의 증가
- 개발 전문가 부족과 이로 인한 인건비 상승
소프트웨어 공학
개념
- 소프트웨어
- 사용자가 원하는 기능을 제공해주는 컴퓨터 프로그램
- 원하는 정보를 알맞게 처리하도록 해주는 자료구조
- 프로그램의 사용에 도움을 주는 설명문서 등
- 공학
- 과학적, 수학적 응용을 통해서 인간에게 유용한 것들을 만들기 위한 과정
- 소프트웨어 공학
- 공학적 원리에 의하여 소프트웨어를 개발하는 학문
- 소프트웨어 개발,운용,유지보수 및 폐기에 대한 체계적인 접근 방법
- 소프트웨어 제품의 체계적인 생산, 유지보수와 관련된 기술, 경영에 관한 학문
- 과학적인 지식을 컴퓨터 프로그램 설계와 제작에 실제 응용하는 것이며, 이를 개발, 운영하며 유지, 보수하는데 필요한 문서화 작성과정
목표
관련 프로젝트를 주어진 시간과 비용, 자원의 범위 내에서 최고 품질의 소프트웨어를 생산하는 것
기본 원칙
- 현대적인 프로그래밍 기술 적용
- 결과에 대한 명확한 기록 유지
- 지속적인 검증 시행
품질
- 좋은품질의 소프트웨어가 지닌 일반적인 특성
- 유지보수가 용이해야 함
- 사용하기 쉬워야 함
- 사용자가 원하는대로 정확히 동작해야 함
- 문서화가 잘 되어있어야 함
- 신뢰성이 높아야 하면 효율적이어야 함
- 연관된 소프트웨어 개발 시 재사용이 가능해야 함
- 잠재적인 에러가 가능한 적어야 함
- 적절한 사용자 인터페이스를 제공해야 함
- 여러 환경에서 동작될 수 있도록 이식성이 좋아야 함