소프트웨어
소프트웨어(Software)의 개념
프로그램, 자료 구조, 문서
- 컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합인 프로그램과 프로그램의 수행에 필요한 절차, 규칙, 관련 문서 등을 총칭함
- 프로그램(Program) : 컴퓨터를 통해 일련의 작업을 처리하기 위한 명령어와 관련된 데이터의 집합을 의미
- 자료 구죠(Data Structure) : 컴퓨터 기억장치 내에 자료의 표현, 처리, 저장 방법 등을 총칭. 데이터 간의 논리적 관계나 처리 알고리즘을 의미
- 문서(Paper) : 소프트웨어를 개발함에 있어서 사용자 설명서, 소프트웨어 요구분석서, 평가서, 명세서, 프로젝트 계획서, 검사 계획서 등을 의미
소프트웨어의 특징
상품성, 복잡성, 변경 가능성, 복제성
- 상품성 : 소프트웨어를 개발하면 상품이 되어 판매가 됨
- 복잡성 : 개발하는 과정이 복잡하고 관리가 어려움
- 변경 가능성: 프로그램을 일부 수정하여 업그레이드 및 오류 수정 등을 할 수 있음
- 복제성 : 복제가 용이해 쉽게 복사, 유통이 가능함
시스템(System)의 개요와 기본 요소
- 시스템의 개요
- 컴퓨터로 처리 가능한 자료를 입력하고 저장, 처리, 가공해 출력할 수 있도록 설계/구현된 정보 체계를 의미
- 하나의 목적을 위해 다양한 요소가 유기적으로 결합된 것을 의미
- 기본 요소
- 입력, 처리, 출력, 제어, 피드백으로 구성
소프트웨어 위기(Software Crisis)
- 컴퓨터의 발달 과정에서 소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못해 사용자들의 요구사항을 감당할 수 없는 문제가 발생함을 의미
- 소프트웨어 위기의 원인
- 하드웨어 비용을 초과하는 개발 비용의 증가
- 개발 기간의 지연
- 개발 인력 부족 및 인건비 상승
- 성능 및 신뢰성 부족
- 유지보수의 어려움에 따른 엄청난 비용
소프트웨어 공학(Software Engineering)
소프트웨어 공학의 이해
- 경제적으로 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체계를 말함
- IEEE는 소프트웨어의 개발 운용, 유지보수 및 파기에 대한 체계적인 접근 방법이라 정의함
소프트웨어 공학의 기본 원칙
- 현대적인 프로그래밍 기술을 적용해야 함
- 신뢰성이 높아야 함
- 사용의 편리성과 유지보수성이 높아야 함
- 지속적인 검증 시행해야 함
- 결과에 대한 명확한 기록을 유지해야 함
- 사용자가 원하는 대로 동작해야 함
- 시스템의 안전성과 보안에 만전을 기함
- 최신 프로그램 언어, 최신 알고리즘 사용 현황을 확인함
- 소프트웨어 개발 비용을 최소화하도록 노력함
- 개발 단계와 소스 코드 등의 문서화를 통해 명확성을 유지하도록 함
공학적으로 좋은 소프트웨어의 조건
- 신뢰성이 높고 효율적이어야 하며, 사용자의 의도대로 동작해야 함
- 편리성 제공 및 잠재적 에러를 최소화해야 함
- 유지보수성이 용이해야 함
소프트웨어 공학 계층 구조
도구, 방법론, 프로세스
- 도구 : 프로세스와 방법을 처리하는 기능을 제공하는 것
- 방법론 : 소프트웨어를 설계하는데 기술적인 방법을 제공하는 것
- 프로세스 : 소프트웨어의 가장 기초가 되며 개발에 사용되는 방법론과 도구가 적용되는 순서를 의미
소프트웨어 품질
- 사용자의 요구대로 만들어져야 함
- 유지보수가 쉬워야 함
- 에러를 최소화해야 함
- 초반에 정한 비용에 맞춰 개발해야 함
- 정확한 결과가 도출되어야 함
- 원하는 시간에 원하는 기능을 수행할 수 있어야 함
소프트웨어 공학의 목표
- 소프트웨어의 생산성과 품질을 향상시킴
- 초소의 비용으로 단기간에 시스템에 적합한 소프트웨어를 개발하는 것이 소프트웨어 공학의 궁극적 목적임
소프트웨어 재공학(Software Reengineering)
소프트웨어 재공학의 개념
- 소프트웨어 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하려는 방법
- 현재의 시스템을 변경하거나 재구조화(Restructuring)하는 것
- 재구조화는 재공학의 한 유형으로 사용자의 요구사항이나 기술적 설계의 변경 없이 프로그램을 개선하는 것
- 소프트웨어 재공학 관점에서 가장 연관 깊은 유지보수 유형은 예방 유지보수(Preventive Maintenance) 임
재공학의 장점, 목표, 과정
장점 | 개발 시간 및 비용 감소, 품질 향상, 생산성 향상, 신뢰성 향상, 구축 방법에 대한 지식의 공유, 프로젝트 실패 위험 감소 |
목표 |
|
과정 | 분석(Analysis) → 구성(Restructuring) → 역공학(Reverse Engineering) → 이식(Migration) |
재공학의 과정
- 분석(Analysis) : 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고 재공학 대상을 선정하는 것
- 재구성(Restructuring) : 소프트웨어 구조를 향상시키기 위해 코드를 재구성하는 것
- 역공학(Reverse Engineering) : 원시 코드를 분석하여 소프트웨어 관계를 파악하고 기존 시스템의 설계 정보를 재발견하여 다시 제작하는 작업
- 이식(Migration) : 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
리팩토링(Refactoring)
- 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것을 의미
CASE (Computer Aided Software Engineering)
CASE
- 소프트웨어 개발 과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정을 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 작업
- 자료 흐름도 등의 다이어그램을 쉽게 작성하게 해주는 소프트웨어 도구
- 작업 과정 및 데이터 공유를 통해 작업자 간의 커뮤니케이션을 증대함
CASE가 제공하는 기능
- 개발을 신속하게 할 수 있고, 오류 수정이 쉬워 소프트웨어 품질이 향상됨
- 소프트웨어 생명주기의 전체 단계를 연결해 주고 자동화시켜 주는 통합된 도구를 제공해 주는 기술
- 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능 제공
- 소프트웨어 개발 단계의 표준화를 기할 수 있으며 자료 흐름도 작성 기능 제공
- 모델들 사이의 모순 검사 기능을 제공하며 다양한 소프트웨어 개발 모형 지원
- 원천 기술 : 구조적 기법, 프로토타이핑 기술, 정보저장소 기술
CASE 사용의 장점
- 소프트웨어 개발 기간 단축 및 개발 비용을 절약하여 소프트웨어 생산성을 향상시킴
- 자동화된 검사를 통해 소프트웨어 품질이 향상됨
- 프로그램의 유지보수가 간편해지고 소프트웨어 모듈의 재사용성이 향상됨
- 소프트웨어 개발 주기의 표준안 확립, 소프트웨어 개발 기법의 실용화, 문서화의 용이성 제공, 시스템 수정 및 유지보수 축소 등의 효과를 얻을 수 있음
CASE의 분류
- 상위(Upper) CASE : 요구분석 및 설계 단계 지원 (모델 간 모순 검사 가능, 모델 오류 검증 기능, 자료 흐름도 작성 기능)
- 하위(Lower) CASE : 소스 코드 작성, 테스트, 문서화 과정 지원
- 통합(Integrate) CASE : 소프트웨어 개발 주기 전체 과정 지원
요구사항 분석을 위한 CASE 도구
요구사항 분석을 위한 CASE
- 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구를 의미
- 표준화와 보고를 통한 문서화 품질 개선, 변경이 주는 영향 추적의 용이성, 명세에 대한 유지보수 비용 축소, 교차 참조도와 보고서를 통한 결함, 생략, 불일치 등의 발견 용이성 등의 특징을 가짐
- DB를 모두가 이용 가능하다는 점에서 분석자들 간의 적절한 조정 기능을 제공함
요구사항 분석을 위한 CASE 도구
- SADT(Structured Analysis and Design Technique)
- SoftTech 사에서 개발한 것으로 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위해 널리 이용되어 온 구조적 분석 및 설계 도구
- 구조적 요구분석을 하기 위해 블록 다이어그램을 채택한 자동화 도구
- SREM(Software Requirements Engineering Methodology) = RSL / REVS
- TRW 사가 우주국방시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 것
- RSL(Requirement Statement Language) : 요소, 속성, 관계, 구조들을 기술하는 요구사항 기술 언어
- REVS(Requirement Engineering and Validation System) : RSL로 기술된 요구사항들을 자동으로 분석하여 요구사항 분석 명세서를 출력하는 요구사항 분석기
- PSL / PSA
- 미시간 대학에서 개발한 것으로 PSL과 PSA를 사용하는 자동화 도구
728x90
반응형
'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글
요구사항 확인 기법 (0) | 2023.07.08 |
---|---|
요구사항 개발 (1) | 2023.07.07 |
현행 시스템 분석 (0) | 2023.07.07 |
SCRUM (0) | 2023.07.07 |
소프트웨어 개발 방법론 (0) | 2023.07.07 |