An Introduction to Software Engineering

Song Chae Won·2023년 9월 6일
0

소프트웨어공학

목록 보기
1/1
post-thumbnail

소프트웨어란 무엇인가?

  • 프로그램 자체뿐만 아니라 모든 관련 문서들, 라이브러리, 지원 웹사이트와 이 프로그램을 유용하게 쓰는 데 필요한 환경 설정 데이터도 포함
  • 소프트웨어 제품은 특정 고객을 위해 개발되거나 범용으로 개발됨
  • 소프트웨어 제품 유형
    - 일반 제품
    • 독립형 시스템, 어떠한 고객이든 원하면 살 수 있도록 판매됨
    • EX) 그래픽 패키지와 프로젝트 관리 도구, CAD 프로그램과 같은 PC용 소프트웨어. 치과 기록 관리 시스템과 같이 특화된 마켓을 위한 소프트웨어도 포함
    - 맞춤식 소프트웨어
    • 특정 고객을 위해 해당 고객에게 맞추어 개발하는 시스템
    • 예– 전자기기 제어 시스템, 항공 관제 시스템 등

Q: 임베디드 소프트웨어는 어디에 포함될까? 임베디드 소프트웨어는 그냥 소프트웨어! 소프트웨어 중에 임베디드 되어있지 않은 소프트웨어는 없음

• 새로운 소프트웨어의 개발은 완전히 새롭게 개발을 하거나, 소프트웨어 시스템을 구성하거나, 기존 소프트웨어를 재사용하여 만들 수 있음

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

유지보수성 : 고객의 변화하는 요구를 충족시킬 수 있도록 진화하도록 만들어야한다. 소프트웨어 변경은 변화하는 비즈니스 환경에서 필수적인 요구이므로 매우 중요한 특성이다.
확실성과 보안성 : 확실성은 신뢰성, 보안성과 안전성을 포함하는 여러 특성을 내포한다. 확실성을 보장하는 SW는 시스템에 장애가 발생하더라도 물리적이거나 경제적인 피해를 야기해서는 안된다. 또한, 소프트웨어 보안을 통해 악의적인 사용자가 시스템에 접근하거나 피해를 주지 않도록 해야 한다.
효율성 : 소프트웨어는 메모리와 프로세서 사이클과 같은 시스템 자원을 낭비해서 사용하면 안 된다. 그러므로 효율성은 응답성, 처리 시간, 자원 활용 등을 포함한다.
수용성 : 소프트웨어는 설계한 목적에 부합하는 사용자 유형이 수용할 수 있어야 한다. 즉, 목표로 하는 사용자가 이해할 수도 있어야 하고, 사용하기 쉬워야 하며, 해당 사용자가 사용하는 다른 시스템과 호환도 되어야 한
다.

소프트웨어공학(Software Engineering)

소프트웨어 공학은 시스템 명세화의 초기 단계부터 시스템 사용 이후 발생하는 유지보수에 이르기까지 소프트웨어 생산의 모든 측면과 관련된 공학적 학문 분야

소프트웨어 엔지니어는 작업에 대해 체계적이고 조직적인 접근 방식을 채택하고 해결해야 할 문제, 개발 제약 조건 및 사용 가능한 리소스에 따라 적절한 도구와 기술을 사용해야 함

소프트웨어 공학은 고품질 소프트웨어 시스템의 비용 효율적인 개발에 중점을 둔 공학 분야

소프트웨어 공학과 컴퓨터 과학의 차이

• 컴퓨터 과학은 컴퓨터와 소프트웨어 시스템이 가지고 있는 이론과 방법을 다룸
• 소프트웨어 공학은 유용한 소프트웨어를 만드는데 필요한 실제적 문제를 다룸

소프트웨어 해결 방안이 필요한 크고 복잡한 문제에는 컴퓨터 과학의 이론이 잘 맞지 않을 수 있어 소프트웨어 엔지니어는 종종 임시 접근 방식(ad hoc
approaches)을 사용함

소프트웨어 개발 프로젝트가 실패하는 원인

• 소프트웨어 규모의 대형화 및 복잡화에 따른 개발 비용 증대
• 하드웨어 기술의 급진전으로 인한 소프트웨어 개발 기술의 상대적 부진
• 하드웨어 비용 대비 소프트웨어 가격 상승 폭 증가
• 소프트웨어 유지보수의 어려움과 개발 정체 현상 발생
• 소프트웨어 개발 프로젝트 기간 및 소요 예산에 대한 정확한 예측의 어려움
• 신기술에 대한 교육 및 훈련의 부족
• 사용자의 소프트웨어에 대한 기대치 증가
• 소프트웨어에 대한 사용자 요구사항의 빈번한 변경 및 반영

인공지능 시대의 소프트웨어 위기

4차 산업시대 : 초연결, 초융합, 초지능
지능 소프트웨어 개발의 남발

  • 응용 소프트웨어 개발에 너무 많은 인공지능 학습 알고리즘이 무분별하게 적용

지능 소프트웨어 사고 위험

  • 학습되지 않은 예외적인 상황이나 예상하지 못했던 환경에서 사고가 발생할 수 있음

소프트웨어 공학과 시스템 공학의 차이

  • 소프트웨어 공학은 시스템에 포함된 소프트웨어 인프라, 제어, 응용 프로그램 및 데이터베이스 개발과 관련되어 있음
  • 시스템 공학은 컴퓨터 기반 시스템 개발의 모든 관점을 다루므로 소프트웨어 뿐 아니라 하드웨어 개발, 정책과 프로세스 설계 및 시스템 설치 등을 모두 다루고 있음

애플리케이션 유형

  • 독립형 애플리케이션
    PC나 모바일 기기와 같은 개별 환경에서 동작하는 애플리케이션. 필요한 기능을 모두 가지고 있으며 네트워크 연결이 필요하지 않음.

  • 대화형 트랜잭션 기반 애플리케이션
    원격 컴퓨터에서 실행하는 애플리케이션으로 사용자의 컴퓨터나 모바일 기기 등을 이용해서 접근. 전자상거래 애플리케이션과 같은 웹 애플리케이션도 해당.

  • 임베디드 제어 시스템
    하드웨어 기기를 제어하고 관리하는 소프트웨어 제어 시스템. 시스템 유형 중 가장 많은 비중을 차지함

  • 일괄처리 시스템
    대규모로 데이터를 처리하도록 설계된 비즈니스 시스템. 많은 수의 개별 입력을 가공하여 각각에 해당하는 출력을 만들어냄

  • 엔터테인먼트 시스템
    사용자의 즐거움을 위해 개인적으로 사용하는 시스템

profile
@chhaewxn

0개의 댓글