[지식창고]/소프트웨어공학

[소프트웨어공학] Chapter2. 소프트웨어 공학 개요(1)

개발새발주발 2023. 3. 27. 12:34
728x90

1. 소프트웨어의 정의

 : 프로그램, 문서, 데이터 등을 중심으로 구성된느 집합이나 객체를 말함 

 

2. 소프트웨어 역할의 진화 

  • 1970s ~ 1980s 
    • 새로운 산업혁명 → 제 3의 물결
    • 정보 사회
    • 전자 정부
  • 1990s 
    • 권력 이동 
    • 지식의 민주화 
    • 세기 말 시간폭탄(2000년에 되기 전 여러가지 괴담, 가설 생성)
  • 2000s 
    • 보다 지능적인, 보다 유연한 
    • 새로운 형식의 과학 → 컴퓨터 시뮬레이션 (digital Twin, Metaverse), AI(딥러닝) 

Alvin Toffler(미래학자)의 제 4차 산업혁명 선언 

: 제 3의 물결, 권력 이동, 부의 미래 → "4차 산업혁명" 

 

** 앎의 진화

  • 오늘날 
    • 상호 이해와 소통
    • SNS, IoT
    • 쓰레기 정보/ 지식 ( Obsoledge → Obsolete + Knowledge ) 
  • 초대형 소프트웨어 업체 
    → 아마존 , 구글, 애플, UAM/ 자율 주행차 
  • 개개의 프로그래머에서 소프트웨어 전문가 팀으로 재편 

 

3. 소프트웨어의 본질적 문제와 현실 

 

문제점 

  • SW완성되기까지의 많은 시간
  • SW의 개발 비용
  • SW를 고객에게 전달 전 모든 에러를 찾지 못함
  • 개발된 프로그래밍 유지보수 시 많은 시간과 노력이 필요
  • SW를 개발하고 유지보수를 할 때 진척 정도를 측정하는 것의 어려움 

 

현실 

  1. SW is developed or engineered not maunfactured in the classical sense. 
    : 소프트웨어는 제조되지 않고 개발되고 엔지니어링 되지만 하드웨어와 유사한 점이 존재한다. 
  2. SW doesn't 'wear out'
    : 소프트웨어는 '닳아 없어지지 않는다.' 하지만 기능이 저하된다. 
    소프트웨어는 spare parts가 없다 ( → 하드웨어는 교체할 수 있는 부품이 있지만 SW는 없다 ! ) 
    소프트웨어 유지는 하드웨어 유지보다 더 복잡하다 

    → Bathtub curve
  3. 산업이 component-based(구성요소기반) 형식을 추구하지만 SW는 custom built(맞춤형 제작)이다.
    : 소프트웨어에서 구성요소는 여러 프로그램에서 재사용할 수 있도록 설계되고 구현되어야한다 

    → 구성요소는 여러 프로젝트에서 재사용될 수 있으므로 생산성을 높이고 비용을 절감하는데 도움을 준다 
    하드웨어에서 구성요소 재사용은 자연스럽다!
    소프트웨어에서는 구성요소 재사용이 최근에 들어서야 널리 적용되기 시작했다 ! 

** 욕조커브 

출처 : https://blog.opid.kr/474 

강의자료만 봐서 '욕조 커브'에 대한 개념이 다가오지 않아서 Chat GPT에게 물어보았다 .. 

인공지능 짱이다 .. 근데 슬푸다 나는 얘 못이겨 ~~ 

 

4. 소프트웨어 응용 분야 

- System S/W

   : 다른 프로그램을 지원하기 위해 작성된 프로그램의 모음 

  • 컴파일러, 편집기, 파일 관리 유틸리티 등 
  • 운영체제 구성 요소, 드라이버, 네트워킹 소프트웨어, 통신 처리기 등 


- Application S/W
   : 응용 소프트웨어는 비즈니스나 기술 데이터, 관리/ 기술 결정 등에 사용되는 소프트웨어 

  • 판매점 거래 처리, 실시간 제조 공정 제어 등이 포함
  • 특정한 업무나 작업을 처리하기 위해 설계되며 일반적으로 사용자에게 직접적인 가치를 제공


-Engineering/scientific S/W

: 주로 과학적 또는 엔지니어링적인 문제를 해결하기 위해 설계된 소프트웨어

  • 숫자를 계산하는 알고리즘 포함 
  • 천문학부터 화산학, 자동차 응력 분석, 스페이스 셔틀 궤도 역학, 분자 생물학, 자동화 제조 등 다양한 분야에서 사용 
  • 대규모 데이터 처리, 복잡한 시뮬레이션, 수치 해석 등에 사용


- Embedded S/W

: 제한적이고 특수한 기능을 구현하고 제어하는 데 사용 

  • ex . 전자레인지의 키패드 제어
  • 자동차의 디지털 기능(연료 제어, 대시보드 디스플레이, 브레이크 시스템 등)과 같이 중요한 기능과 제어 능력을 제공


- Product-line S/W

: 재고관리 제품과 같은 한정적이고 독특한 시장에서 적용되는 제품 라인 소프트웨어

반면 대중적인 소비자 시장에서는 워드 프로세싱, 스프레드시트, 컴퓨터 그래픽스, 멀티 미디어, 엔터테인먼트, 데이터베이스 관리, 개인 및 비즈니스 재무 애플리케이션과 같은 소프트웨어가 많이 사용



- Artificial intelligence S/W 

: 인공 지능 소프트웨어 

  • 로봇공학, 전문가 시스템, 패턴 인식, 인공 신경망, 정리 증명, 게임 이론, 딥러닝 모델(AlphaGo, chatGPT)과 같은 분야에서 사용


- Ubiqutious computing

  • 무선 네트워크
  • distributed computing( 여러 컴퓨터 또는 장치가 네트워크를 통해 연결되어 하나의 작업을 수행하는 컴퓨팅 모델)


- Web-application S/W

  • 가장 간단한 형식
  • sophisticated computing environments (복잡하고 고도화된 컴퓨팅 환경) 
  • 웹 어플리케이션이 최종 사용자에게 제공하는 기능 
    Standalones features(어플리케이션 자체가 가지고 있는 기능)
    Computing functions(어플리케이션이 수행하는 계산 기능)
    Content to the end user(최종 사용자에게 제공되는 콘텐츠 )
     
  • 데이터베이스, 비즈니스 어플리케이션

 

- Open source

: 소프트웨어의 소스 코드가 공개되어 있고 누구나 자유롭게 복사, 수정, 배포, 판매할 수 있는 소프트웨어 라이선스

  • Operating system, database, 개발환경
  • 고객이 로컬에서 필요한 부분을 수정하여 사용할 수있다. 
  • self-descriptive(소프트웨어 자체가 스스로 설명할 수 있는 특징) 


- The 'new economy' 

: 인터넷과 정보기술이 급속도로 발전함에 따라 새로운 경제활동이 등장하는 현상 

→ 소프트웨어 엔지니어들에게는 새로운 경제 환경에서 대량의 통신과 제품 분배를 가능하게 하는 애플리케이션을 개발하는 것이 중요한 과제임 ! 이러한 애플리케이션은 현재 형성 중인 개념을 사용하여 개발되어야한다 ~ ! 

 

5. 소프트웨어 본질의 변화 

- Web Apps 

  • 웹 기반 시스템과 응용 프로그래밍

- Mobile Apps 

  • 모바일 플랫폼 
    → iOS, 안드로이드, 윈도우 모바일
  • 모바일 웹 응용프로그램


- Cloud Computing

  • Front-end Service → 클라이언트 디바이스용 응용 SW
  • Back-end Service → 서버 관련 컴퓨팅 자원, 저장 및 관리, 미들웨어 포함 SW 

 

* 4차 산업혁명 신기술 분야 

IoT, AI, Robot, Auto-Driving, Digital Twin, Metaverse