본문 바로가기

3학년 1학기/소프트웨어공학

Software Engineering #1


-소프트웨어 공학(Software Engineering)이란?


공학(工學, engineering)이란 일반적으로 과학(科學, science)과 수학을 기초로 하여 구조나 기계, 생산 공정, 시스템 등을 생산에 합리적이고 체계적인 방법을 적용시키는 학문을 말한다. 이러한 공학적 원리에 의하여 소프트웨어를 개발하는 학문이 바로 소프트웨어공학(-工學, software engineering)이다. 즉 소프트웨어공학은 소프트웨어를 분석, 설계, 개발, 운영, 유지보수 등 개발수명주기 전반에 걸친 계획·개발·검사·보수·관리, 방법론 등을 연구하는 분야이며, 개발이전단계(pre-development process), 개발단계(development process), 개발이후 단계(post-development process)로 구분할 수 있다.

[네이버 지식백과] 소프트웨어공학 [Software Engineering] (공학 - 학문명백과, 형설출판사)은 네이버 지식백과 님의 말씀입니다.

쉽게 말하자면, 소프트웨어공학은 소프트웨어 프로그램의 모든 관점을 고려하는 공학적 규율을 말합니다.

는 별로 안쉬운데;; 일단 좀 더 공부를 하다보면 이해를 할거라고 굳게 믿습니다.

-소프트웨어 위기(Software crisis)란?


시스템의 대규모화에 따라 소프트웨어의 신뢰성 저하, 개발비의 증대, 계획의 지연 등의 현상이 현저하여 개발 계획의 수행을 매우 어렵게 만드는 상황을 이르는 용어. 1968년 북대서양조약기구(NATO)의 후원으로 개최된 가르미슈(Garmisch) 회의와 이듬해 로마 회의 이후에 ‘소프트웨어 공학’과 함께 유명해진 말이다.


[네이버 지식백과] 소프트웨어공학 [Software Engineering] (공학 - 학문명백과, 형설출판사)

은 네이버 지식백과님의 말씀입니다.


Difficulty of writing correct, understandable, and verifiable computer programs.

정확하고, 이해할 수 있고, 검증할수 있는 컴퓨터프로그램을 만들기 힘들다는거죠. 시스템의 대규모화, 그리고 소프트웨어 없이 돌아갈 수 없을 만큼 발전한 현재, 사람들의 요구, 즉 needs 는 증가하는 중이죠. 무한대에 수렴할 정도로요. 대규모 프로젝트들도 많이 생기기 때문에 

정확하고, 이해하기 쉽고, 검증할만한 프로그램을 만들기 힘듭니다.


정확하고? 대규모 프로젝트에 관해서는 여러 사람들이 함께 작업을 하기 때문에 A라는 사람의 코드에서 오류가 난다면 전체적인 부분에서도 에러가 있겠죠.


이해할 수 있고? 내가 짠다고 평생 내가 유지보수하냐? 그것 또 아니죠. 사실 저는 제가 2틀전에 짠 코드도 간만에 보면 이해를 못하는데;; 오픈소스 프로젝트와 남이 짠 코드가 이해하기 힘들다는 말을 많이 들어봤는데 그게 이뜻인가보네요.


검증할 수 있는? 사실 프로그램이 커지면서 디버깅도 힘들어지고 이게 100% 확실하게 맞는 솔루션인지 장담은 못하죠.


이것들이 바로 "소프트웨어 위기" 를 뜻할수 있겠네요.


-What are the attributes of good software?


● Maintainability

● Dependability

● Efficiency

● Acceptability

좋은 소프트웨어의 조건!


● Maintainability

언젠가는 기능 수정 요청 & 버그 수정 요청이 올겁니다. 네. 100%.

이게 바로 소프트웨어의 발전이죠. 항상 잘 유지보수 할수 있어야합니다.

● Dependability

신뢰할 수 있어야죠. 1+1 = 3인 프로그램을 만들면 안되니까 신뢰할 수 있을 만큼 정확하게 만들어야죠.

● Efficiency

시스템의 자원을 낭비하면 안됩니다. 효율적으로 짜야해요.

● Acceptability

유저들의 요구대로 짜야하고, 다른 프로그램만큼 경쟁력있어야하고 사용할수 있어야합니다.

'3학년 1학기 > 소프트웨어공학' 카테고리의 다른 글

abstract away 의 뜻  (0) 2014.06.17