(정보처리기사) 3장 소프트웨어 공학

<자료 흐름도의 구성요소>

  • 프로세스(Process): 자료를 변환시키는 시스템의 한 부분(처리과정)을 나타내고 처리, 기능,변환, 버블 이라고도 함. 원이나 둥근 사각형을 표시하고 그안에 프로세스 이름을 기입함.
  • 자료흐름(DataFlow): 자료의 이동(흐름)을 나타내며 ,화살표 위에 자료의 이름을 기입함
  • 자료저장소(Data Store): 시스템에서의 자료저장소(파일,데이터베이스)를 나타내며, 도형 안에 자료 저장소 이름을 기입함
  • 단말(Terminator): 시스템과 교신하는 외부 개체로, 입력 데이터가 만들어지고 출력 데이터를 받음(정보의 생산자와 소비자),이중선 도형안에 이름을 기입

<역공학(Reverse Engineering)>
  • 기존 소프트웨어를 분석하여 소프트웨어 개발과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 작업이다.
  • 정공학(일반적인 개발 단계)과는 반대방향으로 기존 코드를 복구하는 방법이다.
  • 대상 소프트웨어가 있어야 하며 이로부터 작업이 시작된다.
  • 기존 소프트웨어의 구성요소와 그 관계를 파악하여 설계도를 추출하거나,구현과는 독립적인 추상화된 표현을 만든다.
  • 코드 역공학: 코드->흐름도->자료구조도->자료 흐름도 순으로 재생함
  • 데이터 역공학:코드->자료 사전->개체 관게도 순으로 재생함
  • 역공학의 가장 간단하고 오래된 형태는 재문서화이다.
<정형 기술검토 (FTR)의 지침 사항>
  • 제품의 검토에만 집중하라
  • 문제 영역을 명확히 표현해라
  • 해결책이나 개선책에 대해서는 논하지 말아라
  • 참가자의 수를 제한하고 사전 준비를 강요하라.
  • 자원과 시간일정을 할당하라
  • 모든 검토자들을 위해 의미있는 훈련을 행하라.
  • 검토자들은 사전에 작성한 메모들을 공유하라.
  • 검토의 과정과 결과를 재검토하라.
<결합도의 종류(결합도가 낮은 것에서 강한 순서)>
  • 자료 결합도(Data Coupling): 모듈 간의 인터페이스가 자료 요소로만 구성 될 때의 결합도
  • 스탬프(검인)결합도(Stamp Coupling): 모듈간의 인터페이스로 배열이나 레코드등의 자료 구조가 전달 될 때의 결합도
  • 제어 결합도(Control Coupling): 한 모듈에서 다른모듈로 논리적인 흐름을 제어하는데 사용하는 제어 요소가 전달 될 때의결합도
  • 외부 결합도(External Coupling): 어떤 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 떄의 결합도
  • 공통(공유)결합도(Common Coupling): 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
  • 내용 결합도(Content Coupling): 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도.
<효과적인 모듈 설계방법>
  • 결합도는 줄이고 응집도는 높여서 모듈의 독립성을 높인다.
  • 모듈의 제어 영역 안에서 그 모듈의 영향 영역을 유지시킨다.
  • 복잡도와 중복성을 줄이고 일관성을 유지시킨다.
  • 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안된다.
  • 유지보수가 용이해야 한다.
  • 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해한다.
  • 하나의 입구와 하나의 출구를 갖도록 해야 한다.
  • 인덱스 번호나 기능 코드들이 전반적인 처리 논리 구조에 예기치 못한영향을 끼치지 않도록 모듈 인터페이스를 설계해야 한다.

<블랙박스시험과 화이트 박스시험>
* 블랙 박스 시험(Black Box Test)
  • 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 안전히 작동되는 것을 입증하는 검사로서,기능검사라고도 한다.
  • 부정확하거나 누락된 기능,인터페이스 오류, 자료구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류 등을 발견하기 위해 사용되며 테스트 과정의 후반부에 적용된다.
  • 소프트웨어 산물의 각 기능별로 적절한 정보 영역(입,출력)을 정하여 적합한 입력에 대한 출력의 정확성을 점검한다.
  • 블랙박스 테스트의 종류에는 동치 분할 검사, 경계 값 분석, 원인-효과 그래프 검사,오류 예측 검사, 비교 검사 등이있다.
------>>>>1. 동치 분할 검사(Equivalence Partitioning Testing):  입력자료에 초점을 맞추어 검사사례를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다.
2. 경계값 분석(Boundary Value Analysis): 입력자료에만  치중한 동치 분할 기법을 보완하기 위한 기법
3. 원인-효과 그래프 검사(Cause-effect graphing testing): 입력데이터간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석하여 효용성 높은 검사 사례를 선정하여 검사하는 기법
4. 오류 예측 검사(Fault based testing): 과거의 경험이나 확인자의 감각으로 검사하는 기법
5. 비교 검사(Comparison Testing): 여러 버전의 프로그램에 동일한 검사 자료를 제공하여 동일한 결과가 출력되는지 검사하는 기법

*화이트 박스 시험
  • 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 검사하여 검사사례를 설계하는 방법이다.
  • 설계된 절차에 초점을 둔 구조적 테스트로, 프로시저(절차)설계의 제어 구조를 사용하여 검사 사례를 설계하며, 테스트 과정의 초기에 적용한다.
  • 모듈안의 작동을 직접 관찰한다.
  • 원시 코드(모듈)의 모든 문장을 한 번 이상 수행함으로써 수행된다.
  • 프로그램의 제어구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어한다.
  • 각 조건에서의 참과 거짓의 모든 논리적 결정이 적어도 한 번 이상 실행된다.
  • 기초경로검사, 제어구조검사등이있다.
  • 1. 기초 경로 검사(Basic Path Testing): 대표적 화이트 박스 기법으로, 검사 사례 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주고 이 측정 결과는 실행 경로으 기초를 정의하는데 지침으로 사용됨
  • 2. 조건검사: 프로그램 모듈 내에 있는 논리적 조건을 검사하는 검사 사례 설계 기법
  • 3. 루프 검사: 프로그램의 반복구조에 초점을 맞춰 실시하는 검사 사례 기법
  • 4. 데이터 흐름 검시: 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 검사 사례 설계기법


<캡슐화의 특징>
  • 캡슐화된 객체의 세부 내용이 외부에 은폐(정보은닉)되어,변경이 발생 할때 오류의 파급효과가 적다.
  • 캡슐화된 객체들은 재사용이 용이하다.
  • 객체들간의 메시지를 주고받을 때 각 객체의 세부 내용은 알 필요없으므로 인터페이스가 단순해지고 , 객체 간의 결합도는 낮아진다.
<시스템의 구성요소>
  • 입력: 처리방법, 처리할 데이터,조건을 시스템에 투입하는 것
  • 처리(Process): 입력된 데이터를 처리방법과 조건에 따라 처리하는 것
  • 출력(Output): 처리된 결과를 시스템에서 산출하는 것
  • 제어(Control): 자료를 입력하여 출력될 때까지의 처리과정이 올바르게 진행되는지 감독하는 것
  • 피드백:출력된 결과가 예정된 목표를 만족시키지 못할 경ㅇ 목표 달서을 위해 반복 처리하는 것.
<나선형 모형>
  • 폭포수 모형과 프로토타입 모형의 장점에 위험분석 기능을 추가한 모형
  • 점진적으로 완벽한 최종 소프트웨어를 개발하는 것
  • 개발순서:
   1. 계획 및 정의
   2. 위험분석
   3. 공학적개발
   4. 고객평가

<소프트웨어 품질 목표>
  • 정확성(Correctness): 사용자의 요구 기능을 충족시키는 정도
  • 신뢰성(Reliability): 정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류없이 수행하는 정도
  • 효율성(Efficiency): 요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도
  • 무결성(Integrity): 허용되지 않는 사용이나 자료의 변경을 제어하는 정도
  • 사용용이성(usability): 사용에 필요한 노력을 최소화하고 쉽게 사용할 수 있는 정도
  • 유지보수성(Maintainability): 변경 및 오류사항의 교정에 대한 노력을 최소화 하는 정도
  • 유연성(Flexibility): 소프트웨어를 얼만큼 쉽게 수정할 수 있는가 정도
  • 시험역량(Testability): 의도된 기능을 수행하도록 보장하기 위해 프로그램을 시험할수 있는정도
  • 이식성(Portability): 다양한 하드웨어 환경에서도 운용가능하도록 쉽게 수정 될 수 있는 정도
  • 재사용성: 전체나 일부 소프트웨어를 다른 목적으로 사용할 수 있는가 정도
  • 상호운용성(Interoperability): 다른 소프트웨어와 정보를 교환할수 있는 정도

<럼바우의 분석기법>
  • 객체모델링(Object Modeling):  정보 모델링이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시하는 것, 가장 중요하며 선행되어야 할 모델링이다.
  • 동적 모델링: 상태 다이어 그램을 이용하여 시간의 흐름에 따른 객체들 사이의 제어흐름, 상호작용, 동작 순서등의 동적인 행위를 표현하는 모델링이다.객체나 클래스의 상태, 사건을 중심으로 다룬다.
  • 기능모델링: 자료흐름도를 이용하여 다수의 프로세스들간의 자료 흐름을 중심으로 처리과정을 표현한 모델링.어떤 데이터를 입력하여 어떤 결과를 구할 것인지를 표현하는 것.
<소프트웨어의 특징>
  • 상품성
  • 견고성: 일부 수정으로 소프트웨어 전체에 영향을 줄 수 있음
  • 복잡성: 개발과정이 복잡하고 비표준화되어 이해와 관리가 어려움
  • 순응성: 사용자의 요구나 환경변화에 적절히 변경할 수 있음
  • 비가시성: 소프트웨어 구조가 외관으로 나타나지 않고 코드속에 숨어있음
  • 비마모성
  • 비제조성
  • 비과학성: 소프트웨어 개발 자체는 수학적이거나 과학적인 것이 아니라 조직, 인력, 시간, 비용, 절차 등이 중심이 됨
<검증 검사(Validation Test)>
  • 소프트웨어가 사용자의 요구사항을 충족시키는 가에 중점을 두고 검사하는 방법
  • 통합검사가 끝난 후 전체가 하나의 소프트웨어로 통합되어 요구사항 명세서를 토대로 진행하며, 블랙박스 테스트 기법을 사용한다
  • 형상검사, 알파검사,베타검사등이있다.
<유지 보수의 유형>
  • 수정(Corrective)보수:=수리,교정, 정정,하자보수: 시스템을 운영하면서 검사 단계에서 발견하지 못한 오류를 찾아 수정하는 활동
  • 적응(Adaptive)보수=환경 적응,조정 보수: 소프트웨어의 수명 기간 중에 발생하는 환경의 변화(하드웨어, 운영체제 등)를 기존의 소프트웨어에 반영하기 위하여 수행하는 활동
  • 완전화(Perfective)보수=기능 개선, 기능 보수: 소프트웨어의 본래기능에 새로운 기능을 추가하거나 성능을 개선하기 위해 소프트웨어를 확장시키는 활동으로,유지 보수 활동중 가장 큰 업무 및 비용을 차지하는 활동
  • 예방(Preventive)보수: 미래에 유지보수를 용이하게 하거나 기능을 향상시키기 위해 소프트웨어를 변경하는 활동 
<자료 사전에서 사용되는 표기 기호>
  • '=': 자료의 정의    ~로 구성되어 있다.
  • '+': 자료의 연결    그리고(and)
  • '()': 자료의 생략    생략가능한 자료(Optional)
  • '[|]': 자료의 선택    또는(Or)
  • '{}': 자료의 반복    

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기