본문 바로가기
Computer Science/소프트웨어공학

소프트웨어 공학의 중요성과 클라우드 컴퓨팅의 부상: 현대 소프트웨어 개발의 변화

by 큌 2023. 7. 19.
반응형

목차

  1. 소프트웨어 개발의 정의와 중요성
  2. 소프트웨어 공학의 역할
  3. 소프트웨어의 복잡성과 유지 관리
  4. 소프트웨어 개발의 차별화된 접근 방식
  5. 소프트웨어 제품의 두 가지 유형
    1. 일반 제품
    2. 맞춤형 소프트웨어
  6. 소프트웨어 품질의 중요성
  7. 소프트웨어 시스템 유형 간의 통합

현대 사회는 소프트웨어의 중요성이 강조되며, 다양한 분야에서 소프트웨어의 역할이 확대되고 있습니다. 국가 인프라, 산업, 엔터테인먼트 등 모든 영역에서 소프트웨어의 의존도가 높아지고 있으나, 소프트웨어 프로젝트 실패 사례도 빈번히 발생합니다. 이는 시스템 복잡성 증가와 소프트웨어 공학적 방법의 미사용에 기인하는 것으로, 소프트웨어 공학의 발전과 함께 더 나은 교육과 훈련이 필요함을 시사합니다. 1968년 소프트웨어 위기를 계기로 등장한 소프트웨어 공학은 구조화된 프로그래밍, 정보 숨기기, 객체 지향 개발 등을 통해 발전해왔으며, 이는 현대 소프트웨어 개발의 기초를 이룹니다.

인터넷 소프트웨어 공학의 발전

현대 사회는 소프트웨어 없이는 운영될 수 없습니다. 정부, 사회 및 국내외의 다양한 기업과 기관들은 소프트웨어의 기능에 크게 의존하고 있습니다. 이는 국가 인프라와 유틸리티의 제어에서부터 전기 제품의 작동에 이르기까지 모든 것에 해당됩니다. 산업 제조와 유통, 금융 시스템 역시 컴퓨터화의 영향을 받고 있습니다.

엔터테인먼트 분야의 소프트웨어 의존성

엔터테인먼트 분야, 특히 음악 산업, 컴퓨터 게임, 영화 및 텔레비전은 소프트웨어에 크게 의존하고 있습니다. 전 세계 인구의 75% 이상이 소프트웨어로 제어되는 휴대폰을 사용하고 있으며, 2016년까지 대부분의 휴대폰이 인터넷 사용이 가능할 것으로 예상됩니다.

소프트웨어 시스템의 특성

소프트웨어 시스템은 추상적이고 무형적이며, 물리적 법칙이나 제조 공정의 제약을 받지 않습니다. 그러나 이로 인해 소프트웨어 시스템은 복잡하며 이해하고 변경하기 어렵고 비용이 많이 들 수 있습니다.

소프트웨어 시스템의 다양성과 공학적 접근

소프트웨어 시스템은 다양합니다. 단순한 임베디드 시스템부터 복잡한 전 세계적인 정보 시스템에 이르기까지 그 범위는 넓습니다. 하지만 소프트웨어 공학의 보편적인 표기법이나 방법, 기술은 존재하지 않습니다. 예를 들어, 조직 정보 시스템을 개발하는 것과 과학적 도구를 위한 컨트롤러를 개발하는 것은 서로 크게 다르며, 이들은 또한 그래픽 집약적인 컴퓨터 게임과도 많은 차이가 있습니다. 이러한 모든 응용 프로그램들은 각기 다른 소프트웨어 공학 방법과 기술을 필요로 합니다.

소프트웨어 프로젝트 실패의 원인

아직도 소프트웨어 프로젝트 실패에 대한 보고가 빈번히 발생하고 있습니다. 소프트웨어 개발에 있어 현대적인 소프트웨어 엔지니어링 접근법이 부적절하다는 비판도 있지만, 대부분의 소프트웨어 실패는 주로 두 가지 주요 요인 때문입니다. 1. 시스템 복잡성의 증가 소프트웨어 엔지니어링의 기술이 발전함에 따라, 우리는 더 크고 복잡한 시스템을 구축할 수 있게 되었습니다. 이러한 시스템은 빠르게 구축되고 제공되어야 하며, 새로운 기능을 갖추어야 합니다. 그러나 이러한 복잡성은 새로운 소프트웨어 엔지니어링 기술의 개발을 요구합니다. 2. 소프트웨어 공학적 방법의 미사용 소프트웨어 공학적 방법과 기술을 사용하지 않고 프로그램을 개발하는 것은 쉽지만, 이로 인해 생성된 소프트웨어는 종종 더 비싸고 신뢰성이 떨어집니다. 많은 회사들이 소프트웨어 개발 과정에서 이러한 방법을 사용하지 않고 있으며, 이는 소프트웨어의 품질 문제로 이어집니다. 이를 해결하기 위해서는 더 나은 소프트웨어 공학 교육과 훈련이 필요합니다.

소프트웨어 공학의 발전

소프트웨어 공학의 개념은 1968년, 당시 '소프트웨어 위기'로 불리던 문제를 논의하기 위해 개최된 컨퍼런스에서 처음 제안되었습니다. 개별적인 프로그램 개발 접근법이 크고 복잡한 소프트웨어 시스템에 적합하지 않다는 사실이 명확해졌습니다. 이러한 접근법은 신뢰성이 떨어지고, 예상보다 비용이 많이 들며, 제공이 늦어지는 결과를 초래했습니다. 1970년대와 1980년대를 거쳐, 구조화된 프로그래밍, 정보 숨기기, 객체 지향 개발 등 다양한 새로운 소프트웨어 공학 기술과 방법이 개발되었습니다. 이러한 기술과 방법은 오늘날 소프트웨어 공학의 기초를 형성하고 있습니다.

반응형