본문 바로가기
2023-2/소프트웨어 공학

1. 소프트웨어 공학

by 철없는민물장어 2023. 10. 22.
728x90
반응형

소프트웨어

컴퓨터 프로그램 + 관련 문서들을 소프트웨어라고 한다.

 

소프트웨어 제품은 Generic market: 다양한 고객에게, 또는 Custom: 특정 고객에 특화된 것일 수 있다.

 

소프트웨어의 특징

- 보이지 않는다.(invisibility)

- 고유한 복잡도는 줄어들 수 없다.(complexity)

- 인풋과 타이밍이 불확실하다.

- 새로운 것이 계속 생긴다.(changeability)

- 100%자동화가 아님

- 소통이 요구된다.

- 관리 이슈 발생

 

소프트웨어 엔지니어링은 효율적인 소프트웨어 생산의 복잡성의 모든 요소를 관리한다.

 

소프트웨어 프로그래밍 vs 소프트웨어 엔지니어링

소프트웨어 프로그래밍

- 혼자 개발

- 작은 사이즈

- 짧은 개발기간

- 개발에 포함되는 사항들(Architect = developer = manager = tester = customer = user)이 한명이거나 적음

- 특정 분야에서만 사용

- 아무것도 없는 상태에서 개발.(built from scratch)

 

소프트웨어 엔지니어링

- 팀, 여러명의 개발자들(numerous stakeholders)

- 복잡한 시스템

- 큰 사이즈의 sw 구성품(System families)

- 재사용을 고려(reuse)

- 다양한 사람들이 각자 역할에 맞게 협업

 

소프트웨어 위기(software crisis)

컴퓨터에 의한 계산 용량과 문제 복잡성이 급격히 증가함에 따라 발생

 

원인

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

40년이 지나면서 succeeded 비율이 증가하고 있다.

그러나 challenged와 Failed가 혁신적으로 감소되지는 않음.

소프트웨어가 점점 복잡해지고 사용자 요구도 다양해지고 있기 때문

 

인공지능 시대의 Software crisis

4차 산업혁명 시대 - 초연결,초융합,초지능, AI, BigData, AR,VR,MR, IoE ...

인공지능 소프트웨어의 범람

  • 인공지능을 기반으로 하는 다양한 학습 모델 출현
  • 다양한 기계학습 알고리즘 활용 증대
  • 인공지능과 기계학습 기반의 소프트웨어 개발 및 활용 증대

 

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

  • 기계학습 결과에 대한 정확성, 신뢰성, 안정성 등의 문제
  • 윤리 및 편향성 문제

Software Engineering에서의 4C

  • Complexity 복잡도
  • Change 변화
  • Cost 비용
  • Communication 소통

소프트웨어 개발과 유지에 영향을 미치는 주요 요인들

 

복잡도(Complexity):소프트웨어 사이즈. 4차산업혁명에서 복잡도는 계속해서 증가.

 

변화(Change): 요구사항, 디자인,코드, 사람 등의 변화.

Reliability(신뢰성)은 소프트웨어 품질 목표 중 주어진 시간동안 주어진 기능을 오류 없이 수행하는 정도.

하드웨어는 시간이 지나면 낡아서 실패율이 높아지고, 소프트웨어는 쭉 유지됨.

변화가 많이 발생할수록 Failure Rate는 증가함. 유지보수에 많은 힘이 들기 때문.

 

비용(Cost): 유지보수에서 가장 많은 비용 발생. 

 

소프트웨어 엔지니어링의 목표

제시간 안에, 에산 내에서 퀄리티 소프트웨어를 개발하는것

 

소통(Communication): 다른 개발자와의 소통이 필요.

 

Definitions of Software Engineering

소프트웨어의 개발, 운용, 유지보수와 같은 수명주기 전반을 체계적, 서술적, 정량적으로 다루는 활동의 총체적인 모임

 

principles of SE

  • 엄격성과 정형성: 소프트웨어 개발은 주어진 시간과 비용에서 명확하게 개발되어야함. 기술한 내용을 모두가 동일하게 해석할 수 있어야함.
  • 관심사의 분할: 복잡한 문제를 단순한 문제로 분리하여 적용
  • 모듈화: 독립적인 기능을 갖는 프로그램의 조각. 높은 응집력과 낮은 결합력을 갖는 sw구조 설계.
  • 추상화
  • 변경의 예측
  • 일반화: 다양한 플랫폼,환경을 지원
  • 점진성: 단계적이고 순차적으로 개발
  • 명세화

 

goal of SE

Produce quality software on time within budget that satisfies user's needs

(사용자의 요구를 만족시키는 품질 높은 소프트웨어를 제시간에 예산 내에 생산)

 

produce quality system and service

(품질 높은 시스템과 서비스를 생산)

 

eventually, make business profit through software

(결국 소프트웨어를 통해 비즈니스 이익을 창출)

 

정해진 사업예산과 계획된 일정 내에 품질 좋은 소프트웨어를 생산하여 이를 통해 클라이언트의 business propfit까지 창출할 수 있도록 도움주는것.

 

728x90
반응형

'2023-2 > 소프트웨어 공학' 카테고리의 다른 글

6. Implementation  (0) 2023.12.17
5. 설계  (0) 2023.12.17
4. 요구 사항 분석  (0) 2023.12.17
3. 프로젝트 관리  (0) 2023.10.23
2. 소프트웨어 개발 생명 주기  (0) 2023.10.23

댓글