본문 바로가기

소프트웨어 정보/소프트웨어공학

CASE(Computer Aided Software Engineering) 이번 포스팅에서는 CASE에 대하여 설명하도록 하겠습니다. CASE는 Computer Aided Software Engineering의 약자로 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정을 컴퓨터와 전용의 소프트웨어도구를 사용하여 자동화하는 작업을 의미합니다. 소프트웨어 생명 주기의 전체 단계를 연결시켜 주고 자동화시켜 주는 통합된 도구를 제공해 주는 기술로 개발 비용 절약되고 품질을 향상시키며 개발 기간을 감소시킵니다. 또한, 유지보수가 간편 간편하여 모듈의 재사용성이 향상된다는 특징이 있습니다. 도구와 방법론이 결합된 것으로 개발 단계의 표준화가 이루어지고 있다는 것의 특징도 있습니다. 단, CASE는 아직 표준화가 완전히 되지 않아서 각각의 CASE Tool끼리.. 더보기
소프트웨어 역공학 이번 포스팅에서는 소프트웨어 역공학에 대하여 설명하도록 하겠습니다. 소프트웨어 역공학이란 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 작업을 의미합니다. 위의 그림은 소프트웨어의 순공학과 역공학을 나타낸 것입니다. 요구사항 정의 -> 분석 -> 설계 -> 구현의 순서로 이루어진 순공학과 그의 역순서인 역공학을 간단하게 알 수 있습니다. 역공학은 주로 코드 상의 저보들을 추출하여 해석함으로 이전의 내용들을 복원할 수 있는데 이 과정을 통해 소프트웨어에 대한 다양한 통찰력을 기를 수 있다는 것이 특징입니다. 더보기
소프트웨어 재사용 이번 포스팅에서는 소프트웨어 재사용에 대하여 설명하도록 하겠습니다. 소프트웨어 재사용이란 말 그대로 만들어둔 소프트웨어 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 이용한다는 것으로 이미 만들어진 것을 사용한다는 것에 그 의미가 있습니다. 이미 만들어진 소프트웨어를 사용하므로써 개발 시간의 단축이나 품질의 향상을 가져올 수 있습니다. 이로인한 생산성 증가가 이루어지며 시스템 구축방법에 대한 지식이 공유 공유되는 현상이 일어나게 도비니다. 또한 시스템 명세, 설계, 코드 등의 문서 공유되는 현상이 일어나게 됩니다. 높은 재사용성을 위해서는 재사용하는 부품의 크기가 작아야 합니다. 컴퓨터를 예를 들면, 통채로 사용하는 원하기보다 하드웨어(마우스, 키보드, 하드디스크 등)을 따로따로 사용하는 것이 더 .. 더보기
소프트웨어 개발 방법론 - 객체지향 개발 방법론 이번 시간에는 소프트웨어 개발 방법론 중 객체지향 개발 방법론에 대하여 설명하도록 하겠습니다. 구조적 개발 방법론과 객체지향 개발 방법론의 장단점을 먼저 설명하도록 하겠습니다. 구조적 개발 방법론은 구조가 단순하여 이해와 수정하기 쉽고 정확하다는 장점이 있습니다. 하지만 객체지향과 비교하여 재사용성이 작고 유지보수가 어렵다는 단점이 있습니다. 객체지향 개발 방법론은 현실 세계를 프로그램에 반영한다는 특징이 있습니다. 장단점은 구조적 개발 방법론과 반대라고 이해하시면 됩니다. 객체란 현실 세계의 개체며 객체들 간의 상호작용은 메시지를 통해 이루어지는 것을 의미합니다 자료란 객체가 가지고 있는 상태를 의미하는데 속성, Attribute, 변수, 자료구조 등으로 불리기도 합니다. 함수란 객체의 자료처리 행위를.. 더보기
소프트웨어 개발 방법론 - 구조적 개발 방법론 이번 시간에는 소프트웨어 개발 방법론 중 구조적 개발 방법론에 대하여 설명하도록 하겠습니다. 소프트웨어 방법론이란 과거 경험을 토대로 성공적으로 평가되는 소프트웨어를 분석 및 설계방법들을 모아 하나의 개발 방법으로 정형화 한 것을 의미합니다. 소프트웨어 방법론은 구조적 개발 방법론과 소프트웨어 방법론으로 나눌 수 있습니다. 구조적 방법론은 위의 정의를 요구사항 분석 -> 설계 -> 구현 -> 검사 -> 디버깅 -> 유지보수의 순서로 정리할 수 있습니다. 요구사항 분석이란 구조적 분석 기법(도구)은 자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법을 의미합니다. 사용자 면접, 현재 사용중인 문서 검토, 설문 조사 등의 방법을 사용하는데 이는 분석가가 갖추어야 할 가장 중요한 능력입니다. 거시적 관점에.. 더보기
형상 관리 이번 시간에는 프로젝트 형상관리에 대하여 설명하도록 하겠습니다. 형상관리란 소프트웨어 개발 단계의 각 과정에서 만들어지는 프로그램, 문서, 데이터 등을 말하는 것입니다. 형상관리는 소프트웨어의 생산물을 확인한 후, 소프트웨어를 통제하고 변경 상태를 기록/보관하는 작업을 진행합니다. 관리 대상항목에는 정의 단계의 문서, 개발 단계의 문서, 개발 단계의 프로그램, 유지보수 단계의 변경사항 등이 포함됩니다. 더보기
위험 관리 이번 시간에는 프로젝트 위험 관리에 대하여 설명하도록 하겠습니다. 위험 관리란 프로젝트를 추진하는 과정에서 예상되는 각종 돌방상황을 미리 예상하고 이에 따른 적절한 대책을 수립하는 행동을 의미합니다. 위험을 식별한 후 분석 및 평가를 실시합니다. 이 때에는 위험표(위험의 내용, 종류, 발생 확률, 영향력 등을 포함)를 작성하는데 이 표를 통해서 직관적인 위험을 알 수 있게됩니다. 그 후에는 계획을 수립하고 위험 감시 및 조치를 실시합니다. 더보기
품질 관리 이번시간에는 품질 관리에 대하여 설명하도록 하겠습니다. 품질관리는 품질 정책, 목표 및 책임을 결정하여 프로젝트의 수행 필요성을 만족시키도록 하는 수행 조직의 모든 활동을 의미합니다. 관리 대상에는 정확성, 신뢰성, 이식성, 상호 운용성, 유지보수성, 효율성, 무결성, 사용 용이성, 유연성, 시험 용이성, 재사용성 등이 포함되는데 간단하게 설명하도록 하겠습니다. 정확성이란 사용자가 요구한 기능을 얼마나 충족하였는지를 의미합니다. 신뢰성이란 정확하고 일관된 결과가 얼마나 얻어지는지를 의미합니다. 이식성이란 다른 H/W환경에서도 돌아가는지를 의미합니다. 상호 운용성이란 다른 S/W와 정보를 주고받을 수 있는지를 의미합니다. 유지보수성이란 변경 시 드는 노력을 얼마나 최소화하였는지를 의미합니다. 효율성이란 기.. 더보기
일정 관리 이번 포스팅에서는 프로젝트 일정 관리에 대하여 설명하도록 하겠습니다. 일정 관리에서는 브룩스의 법칙이 중요합니다. 새로운 개발인력이 지연되는 프로젝트에 인력을 더 투입하면 오히려 늦어진다는 의미로 빠른시간안에 프로젝트가 완료될 수 없다는 이론입니다. 프로젝트 일정을 계획하는 기법에는 WBS(작업 분해방식), PERT/CPM, Gant Chart기법 등이 있는데 간단하게 설명하도록 하겠습니다. WBS란 Work breakdown structure의 약자로 프로젝트를 진행할 때, 업무사항을 분류 단위로 해서 일정을 관리하기 위한 문서를 의미합니다. 하나의 Task가 하나의 요소로 사용 되며, 일정관리를 할 때 프로젝트의 리더와 매니저가 전체 일정과 인력을 관리 할 때 손쉽게 할 수 있도록 도와줍니다. PER.. 더보기
비용 관리 비용 관리 이번 포스팅에서는 비용 관리에 대하여 설명하도록 하겠습니다. 비용은 프로젝트를 수행하기 위해 필요한 돈을 의미합니다. 이 비용을 결정하는 요소는 개발자의 능력이나 요구되는 신뢰도, 개발 제품의 복잡도 등이 있습니다. 비용을 정확하게 예측하기 위해서는 예측을 가능한 뒤로 미루는 방법(현실성 X)이 있을 수 있으며, 이미 수행된 유사한 프로젝트를 참고하는 방법도 있습니다. 또한, 진행하고자 하는 프로젝트를 작은 단위로 나누어 단위당 비용을 산정하는 방법이나 경험적 예측 모델을 사용하는 방법 등이 있습니다. 개발비용은 개발기간과 반비례합니다. 개발비용이 늘어나면 사람을 많이 쓰거나 능력이 좋은 개발자를 쓰는 방법 등으로 개발기간을 단축시킬 수 있습니다. 하지만 비용이 적다면 이런 방법을 사용할 수 .. 더보기