본문 바로가기

학교 공부/소프트웨어공학

소프트웨어공학 L1 An Introduction to Software Engineering

소프트웨어 공학에 관한 FAQ
소프트웨어란?

컴퓨터 프로그램과 관련된 문서들 - 관련 문서, 라이브러리, 지원 웹사이트, 환경설정 데이터 포함

소프트웨어 제품

: 특정 고객을 위해 개발되거나 범용으로 개발

  • 제품 유형(제공방식 측면에서의 분류): 일반 제품 / 맞춤식 소프트웨어
좋은 소프트웨어의 특성은?
  • 유지보수성
    • 고객의 변화하는 요구 충족하도록 진화
  • 확실성, 보안성
    • 신뢰성, 보안성, 안전성 포함 - 장애 발생해도 물리적,경제적 피해X
    • 복구가능, 악의적 사용자 차단
  • 효율성
    • 시스템 자원 효율적으로 사용 - 응답성, 처리시간, 자원활용
  • 수용성
    • 설계목적의 사용자 유형이 수용가능해야 - 직관적 이해, 매뉴얼
‼️소프트웨어 공학이란?

시스템 명세화의 초기 단계부터 시스템 사용 이후 발생하는 유지보수까지 포함하는

소프트웨어 생산의 모든 관점과 관련한 공학적인 학문 분야
  • 1968 ‘software crisis’에서 첫 등장

    1830s 컴퓨터라는 개념 등장 by 찰스 베비지. 계산기 → 해석기관

    최초의 프로그래머가 알고리즘 작성

    2차 세계대전 애니그마 - 해석 위한 기기

    애니악(범용화)

    ⇒ 초반 소프트웨어는 하드웨어에 있는 번들수준으로, 개인 개발만 이뤄짐

    ⇒ 하드웨어 발달하며 개발 협업 필요해짐

    NATO 컨퍼런스

체계적, 조직적 접근 방식

채택 + 해결할 문제, 개발 제약 조건&사용가능 리소스에 따라

적절한 도구와 기술

이용 ⇒

비용효율&고품질

너무 간단한 프로그램에서는 배보다 배꼽이 커지기도

  • 제품 life cycle(신제품 출시 주기)단축
  • 급격한 가격 하락

⇒ 사용자 요구 증가.. 소프트웨어공학 기법 이용해서 효율적으로

소프트웨어공학 기본 활동에는 어떤 것이 있는가?

소프트웨어 명세화, 소프트웨어 개발, 소프트웨어 검증, 소프트웨어 진화

→ L3

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

: 일반적, 이상적 이론&방법에 집중

소프트웨어공학

: 유용한 SW 개발에 필요한 실제적(실용적) 문제

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

: 하드웨어, 소프트웨어, 정책, 프로세스 설계 모두 포함한 컴퓨터 기반 시스템 개발의 모든 관점 - 포괄적

소프트웨어공학

: 일반적인 프로세스의 일부에 속함

소프트웨어공학이 직면한 주요 도전 과제

증가하는 다양성, 빠른 인도(유지보수), 신뢰할 수 있는 솦웨 개발

소프트웨어공학의 비용

60% 가까이 개발비용, 40%이상 테스트비용

유지관리에 더 많은 비용

들어간다- 거의 80%

성능, 시스템 안정성, 시스템 유형 등 시스템 속성의 요구사항따라 다름

e.g. 속도가 중요 - 초기비용⬇️, 유지보수⬆️

안정성이 중요 - 초기비용⬆️ , 유지보수⬇️

최선의 소프트웨어 공학 기법과 방법

다양한 유형의 시스템 - 서로 다른 기법

보편적인 소프트웨어 기법은 존재하지 않는다

어플리케이션 유형 (내용 측면에서의 구분)
  • 독립형 어플리케이션 : 네트워크연결 불필요
  • 대화형 트랜잭션 기반 어플리케이션 : 원격 컴퓨터에서 실행 - 인터넷사이트, 전자상거래
  • 임베디드 제어 시스템 : 하드웨어 제어 관리 - 우주선, 항공모함, 세탁기 등
  • 일괄처리 시스템 : 대규모 데이터 처리 - 리눅스터미널
  • 엔터테인먼트 시스템 : 사용자의 즐거움 - 동영상, 음악, 책
  • 모델링 및 시뮬레이션 시스템 : 물리적 진행/상황 모델링 - UML, 블루스택?, 기상날씨예측
  • 데이터 수집, 분석 시스템 : 환경에서 데이터 수집, 처리 이해 다른 시스템으로 전달
  • 복합 시스템: 여러 다른 소프트웨어 시스템으로 구성 - ERD, 유레카(이화) 등
웹이 소프트웨어 공학에 가져온 변화
  • 소프트웨어 재사용 증가 기존 컴포넌트 및 시스템을 어떻게 재사용&업그레이드 할 것인가 고려
  • 점진적 애자일 개발 점진적 - 미리 요구사항 정의하는거 비실용적
  • 서비스지향 시스템 서비스 제공이 목적
  • 풍부한 인터페이스 AJAX, HTML5 등 다양한 언어 등장

 

대규모의 고도로 분산된 서비스 기반 시스템 개발

소프트웨어 산업에 변화를 준 모바일 기기용 앱 산업 탄생