이론공부/시험공부

소프트웨어 공학 (3주차)

chobyeonggyu03 2024. 9. 13. 17:34
반응형

● 소프트웨어 공학에서의 기본 원칙들 (Fundamentals)

 

- 개발 프로세스: 소프트웨어는 잘 정의되고 이해되는 개발 프로세스를 활용하여 개발되어야 함

 

ex) SDLC ( Software Developer  Life cycles : 소프트웨어 개발 생명 주기),  Agile 방법론, DevOps 관행 등등의 개발 프로세스들이 존재

 

- 소프트웨어 품질: 신뢰성 (dependability) 와 성능(performance)는 모든 시스템에 필수적으로 보장되어야 하며, 다양한 조건에서도 안정적으로 좋은 퍼포먼스를 보여 신뢰성이 보장되어야함

 

- 요구공학:  '요구 공학'을 활용하여 사용자들의 요구사항들이 제대로 소프트웨어가 충족시키는 중인지 확인하고 관리할 수 있어야 하며, 변화하는 사용자들의 니즈들을 충족시키기 위해 지속적으로 업데이트 하며 발전시켜가야함

 

- 소프트웨어 재사용, 오픈소스 활용: 새로운 소프트웨 어를 개발할 때 새롭게 소프트웨어를 만드는 것보다 기존의 소프트웨어를 재사용하는 방법을 활용해야 함

 

 

(+ 위의 원칙들중에는 현업에서 많이 벗어나는 이론적인 원칙들도 존재함) 

 

 

 

 

 

 

 

● 웹 기반 소프트웨어 공학

- 현재 웹은 다릅 웹에서도 접근 가능하게 하여 클라우드 컴퓨팅 등의 형태로 다양한 애플리케이션들을 운영하는데 사용되고있음

 

 

- 웹 기반 시스템들의 특징 

 

1) 복잡한 분산시스템으로 구성: 복잡한 분산 시스템으로 이루어졌 있음

 

2) 소프트웨어의 재사용 : 웹기반 시스템을 설계할 대 기존에 존재하는 소프트웨어의 컴포넌트나 시스템들을 활용하여 개발할 수 있음

 

3) 증분적이고 민첩한 개발: 관리하기 쉬운 단위로 쪼개어 관리하여 민첩하고 유연하고 반복적인 업데이트를 가능하게 함

 

4) 서비스 지향적인 개발: 소프트웨어 공학적으로 설계된 서비스를 활용하여 독립적으로 실행되는 웹 서비스를 제공할 수 있게 함

 

5) 풍부한 인터페이스 제공: AJAX와 HTML 등의 웹기반 기술을 활용하여  웹 브라우저에 사용자 친화적인 풍부한 인터페시들들을 구축할 수 있게 함

 

 

 

 

 

 

● 좋은 소프트웨어 제품을 만들기 위한 질문들

 

 

1) 소프트웨어란 무엇인가?

- 소프트웨어란 컴퓨터 프로그램과 이와 관련된 문서들이며, 소프트웨어 제품들은 보편적인 시장이나 특정한 고객들을 위해 개발되어야 한다.

 

2) 좋은 소프트웨어의 속성들은 어떤 것들인가??

- 좋은 소프트웨어들은 사용자의 요구를 충족하는 필요한 기능들과 성능을 제공하고, 사용자들이 사용하기 쉽고, 믿을만하며, 관리하기 쉽게 만들어져야한다.

 

3) 소프트웨어 공학이란 무엇인가?

- 소프트웨어 공학이란  소프트웨어 제품 생산의 모든 측면을 다루는 학문이다.

 

4) 근본적인 소프트웨어 공학의 활동들에는 어떤 것들이 있는가?

- 소프트웨어 요구공학, 소프트웨어 개발, 소프트웨어 신회성, 소프트웨어 개발 등의 활동들로 이루어져 있다.

 

5) 소프트웨어 공학과 컴퓨터 사이언스의 차이점은 무엇인가?

- 컴퓨터 사이언스는 이론과 원칙에 초점이 맞춰져 있지만 소프트웨어 공학은 개발하는 것을 실제로 진행하는 것과 실질적인 소프트웨어를 제공하는 것에 초점이 맞추어진 학문이다.

 

 

 

 

6) 소프트웨어 공학과 시스템 공학의 차이점은 무엇인가?

- 시스템 공학은 하드웨어와 소프트웨어, 프로세스 엔지니어링을 포함한 시스템 개발의 모든 측면들을 다루는 것에 관련되어 있지만, 소프트웨어 공학은 프로세스들의 더 세부적인 부분들에 대해 다룬다. ( 시스템 공학보다 세부적인 과정을 다룸)

 

7) 소프트웨어 공학이 직면한 핵심 문제들은 어떤 것들인가?

- 점점 늘어가는 소프트웨어의 다양성을 관리하고 소프트웨어 제품을 제공하는데 걸리는 시간을 줄이고, 신뢰할만한 소프트웨어를 만드는 것 

 

8) 소프트웨어 공학의 코스트들에는 어떤 것들이 존재하는가?

- 소프트웨어를 개발하는데 들어가는 비용중 약60%는 소프트웨어로 구성되어있고, 나머지 40%는 이를 테스팅하는데 들어간다. 또한, 맞춤형 소프트웨어를 개발할때에는 소프트웨어 업데이트 비용이 종종 초기 개발비용을 초과하는 경우도 있다.

 

9) 최고의 소프트웨어 공학기술과 방법론들은 무엇인가?

- 소프트웨어 공학은 'no sliver bullet' 이라고 언급했듯이 하나의 보편적인 최고의 방법이 존재하지 않고, 어떤 소프트웨어를 개발하는지 그 목적성에 따라 최고의 솔루션이 매번 달라진다.

 

10) 소프트웨어 엔지니어링에 웹이 어떤 변화들을 일으켰는가 ?

- 고도로 분산된 서비스 기반 시스템의 개발을 가능하게 함으로써 소프트웨어 재사용을 높혔고, 이로인해 소프트웨어 서비스의 가용성을 증가시키고 프로그래밍 언어적인 측명에서의 큰 발전을 일으켰다.

 

 

 

반응형