cyphen156

Chapter2 소프트웨어와 자료구조 본문

컴퓨터공학/자료구조

Chapter2 소프트웨어와 자료구조

cyphen156 2021. 10. 16. 01:23

소프트웨어 생명주기

요구분석 -> 시스템 명세 -> 설계 -> 구현 -> 테스트 -> 유지보수

요구분석 

문제를 분석하고 개발할 소프트 웨어의 기능제약조건, 목표 등을 사용자와 함께 명확히 정의하는 단계

시스템 명세

시스템이 수행하는 내용 정의하는 단계

설계

시스템 명세 단계에서 정의한 기능을 실제 수행하기 위한 방법을 논리적으로 결정하는 단계

시스템 구조 설계 : 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계구조를 설계

프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차알고리즘을 설계

사용자 인터페이스 설계 : 사용자가 시스템을 이용하기 위해 보여지는 부분을 설계

하향식 설계 : 큰 틀을 설계한 뒤 세부적으로 쪼개어 나가면서 점차 구체적으로 설계하는 분할 정복 방식의 설계

상향식 설계 : 작은 단위의 문제를 먼저 해결한 후 이를 이용해 상위의 큰 단위의 문제를 해결하는 설계

객체지향 설계 : 하위단위의 문제해결도구를 객체화(Object) 하여 재사용하는 방법

구현

설계 단계에서 결정한 문제 해결 방법을 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계

구조화 프로그래밍

  - 지정문과 조건문, 반복문만을 사용하여 프로그램 작성

  - 구조가 명확하여 정확성검증과 테스트 및 유지보수가 편함

모듈러 프로그래밍

  - 여러개의 작은 모듈로 나누어 계층 관계로 구성하는 프로그램 작성

  - 모듈별로 갂각 따로 개발과 테스트 및 유지보수가 가능/모듈의 재사용

테스트

개발한 시스템의 실행 결과가 예상대로 출력되는지를 검사하고 평가하는 과정, 숨어잇는 오류를 찾아내 시스템의 완성도를 높임

  1. 단위테스트 : 시스템의 최소 구성요소가 되는 모듈에 대해 개별적으로 테스트
  2. 통합테스트 : 1단계를 통과한 모듈들을 연결하여 전체 시스템으로 완성한 후 통합적으로 시행하는 테스트
  3. 인수테스트 : 완성된 시스템을 인수하기 위해 실제 자료를 사용한 최종 테스트

유지 보수

시스템이 인수되고 설치된 후 일어나는 모든 행동

유지보수의 유형

  • 수정형 : 사용중에 발견된 프로그램의 오류 수정 작업
  • 적응형 : 환경적 변화에 적응시키기 위한 재조정 작업
  • 완전형 : 시스템 성능을 향상시키기 위한 개선 작업
  • 예방형 : 앞으로 발생할 지도 모르는 변경사항을 수용하기 위한 대비 작업

품질의 평가

  • 정확성
  • 유지 보수성
  • 무결성
  • 사용성

추상 자료형

추상화(Abstraction) = 크고 복잡한 문제를 필수적이고 중요한 특징만을 골라서 단순화시키는것 -> 무엇인가를 논리적으로 정의

구체화 -> 추상화된 자료를 실제적으로 표현

자료 : 프로그램의 처리 대상이 되는 모든것

연산 : 어떤 일을 처리하는 과정, 연산자에 의해 수행

자료형 : 처리할 자료의 집합과 자료에 대해 수행할 연산자의 집합

알고리즘?

문제 해결 방법을 추상화하여 논리적으로 기술해 놓은 것 

알고리즘의 조건

  • 입력 : 수행에 필요한 자료가 외부에서 입력으로 제공될 수 있어야 한다.
  • 출력 : 수행 후 하나 이상의 결과를 출력해야 한다.
  • 명확성 : 수행할 작업의 내용과 순서를 나타내는 명령어들은 명확하게 기술되어 있어야 한다.
  • 유한성 : 수행이 끝난 뒤에는 반드시 종료되어야 한다.
  • 효과성 : 모든 명령어들은 기본적이며 실행이 가능해야 한다.

알고리즘의 표현

  • 자연어를 통한 서술적 표현
  • 순서도(Flow Chart)를 이용한 도식화 표현
  • 프로그래밍 언어를 이용한 구체화 표현
  • 가상코드(Pseudo-Code)를 이용한 추상화 표현

가상코드

알고리즘 기술언어(ADL)를 사용하여 프로그래밍 언어의 형태와 유사하게 알고리즘을 표현

직접 실행 불가능 but 프로그래밍 언어로의 변환에 용이

성능분석

알고리즘의 성능 분석 방법

공간 복잡도 : 알고리즘을 프로그램으로 실행하여 완료하기까지 필요한 총 저장 공간량

                    고정 공간 + 가변 공간

시간 복잡도 : 알고리즘을 프로그램으로 실행햐여 완료하기까지의 총 소요시간, 실제 성능에 영향

                    컴파일 시간 + 실행 시간

                                                 컴퓨터의 성능 + 명령문의 실행 빈도수