소프트웨어의 중요성과 소프트웨어 실패, 좋은 소프트웨어의 필수적 특성

1 분 소요

정말 오랜만에 포스팅을 한다.

깃허브에는 계속에서 커밋을 하고 있는데 따로 포스팅을 하진 않았다.

이번엔 중간고사 겸해서 정리했던 소프트웨어 공학 개념을 정리하고자 한다.

소프트웨어 중요성과 특징

  1. 국가 기반 시설, 공익 사업을 컴퓨터 기반 시스템으로 제어
  2. 대부분의 전기 시스템은 컴퓨터와 제어 소프트웨어를 탑재
  3. 제조, 유통, 금융 등 분야의 컴퓨터화
  4. 소프트웨어 시스템은 추상적이며 무형이다. 1) 제품의 특성으로 인한 제약이 없으며, 물리적 법칙이나 제조공정으로부터 영향이 없다. 2) 물리적 제약이 없기 때문에, 소프트웨어 시스템이 극도로 복잡해진다. 이로 인해 이해하기 어려우며 변경하는데 많은 비용이 들게 된다.

다양한 종류의 소프트웨어 시스템

  1. 단순한 임베디드 시스템부터 복잡한 정보 시스템까지 다양한 소프트웨어 시스템이 존재한다.
  2. 소프트웨어 시스템의 종류에 ᄄᆞ라 다른 접근법이 필요하다.
  3. 소프트웨어 공학에는 보편적인 표기법이나 방법, 기법이 존재하지 않는다.

소프트웨어 제품 구분

  1. 일반 제품 (Generic) 1) 수평적 제품 (Horizontal) : 응용 분야에 관계 없이 사용되는 애플리케이션 2)수직적 제품 (Vertical) : 특정 응용 분야를 위한 애플리케이션

  2. 맞춤식 제품 (Customized, Bespoke) 1)특정 고객을 위해 해당 고객에 맞추어 개발하는 시스템

소프트웨어 실패

소프트웨어 실패란 무엇인가

  • 고객이 요구한 사항을 제대로 반영하지 못하는 경우
  • 주어진 예산을 초과하는 경우
  • 주어진 기간 안에 완성하지 못하는 경우

소프트웨어 실패의 2가지 요인

  1. 시스템 복잡도 증가
    • 시스템을 더 신속하게 공급해야 하며 더 크고 더 복잡한 시스템이 필요해졌기 때문이다.
  2. 소프트웨어 공학 방법론 사용의 실패
    • 소프트웨어 공학 방법과 기술을 사용하지 않을 시 소프트웨어가 안정성, 신뢰성이 부족하게 된다.

좋은 소프트웨어의 필수적 특성

  1. 수용성 (Acceptability)
    • 소프트웨어는 해당 유형의 사용자에 의해 수용될 수 있어야 한다.
    • 이해하기 쉽고, 사용하기 쉽고, 기존 시스템과 호환성 있어야 한다.
    • Understandable, Usable, Compatible
  2. 확실성, 보안성 (Dependability and Security)
    • (확실성) 시스템 장애시에 물리적 또는 경제적 손실이 없어야 한다.
    • (보안성) 악의적 사용자가 시스템에 접근하거나 피해를 줄 수 없어야 한다.
    • 신뢰성, 보안성, 안전성을 포함
    • Reliability, Security, Safety
  3. 효율성 (Efficiency)
    • 메모리나 CPU 타임 등의 시스템 자원을 낭비해서는 안된다.
    • 응답성과 처리시간 메모리 활용 등을 포함한다.
    • Responsiveness, Processing Time, Memory Utilization
  4. 유지보수성 (Maintainability)
    • 소프트웨어는 고객의 변경 요구에 맞도록 진화할 수 있게 작성되어야 한다.

비고

대략적으로 오늘의 포스팅을 요약해 보았다.

소프트웨어란? 컴퓨터 프로그램과 관련된 문서들, 특정 고객 및 일반 시장을 고려해서 소프트웨어 개발 가능
좋은 소프트웨어 특징 요구되는 기능과 성능을 사용자에게 제공해야 하고, 유지보수성, 확실성, 사용성이 좋아야 한다.

따로 한글 파일로 정리를 해뒀는데 이것은 이후에 기말고사까지 공부해서 정리한 자료와 합해서 올릴듯 하다.

댓글남기기