본문 바로가기
정보처리기사/어플리케이션개발

정보처리기사 실기- 알고리즘과 소프트웨어 개발

by boolean 2017. 4. 14.
728x90

정보처리기사 실기- 알고리즘과 소프트웨어 개발

소프트웨어 생명주기


소프트웨어가 필요에 의하여 만들어진 후 운영되기까지 전체 과정을 말한다.

소프트웨어 개발 활동은 소프트웨어 생명주기를 기반으로 이루어진다.

일반적인 소프트웨어 생명주기 8단계


개발 타당성
검토
개발 계획
수립
요구사항
분석
소프트웨어
설계
소프트웨어
구현
테스트 운용 유지보수

알고리즘 설계는 문제의 요구사항을 분석하여 소프트웨어를 설계하는 단계에 해당한다.
C나 JAVA와 같은 프로그래밍 언어를 선택하여 알고리즘에 대하여 codding(programming)을 하는 것은 소프트웨어를 구현하는 단계이다.

소프트웨어 관리
소프트웨어 관리 요구관리
요구관리 소프트웨어 개발이 이루어지기도 전에 고객의 요구가 불시에 바뀜으로 인하여 개발이 지연되거나 낭비되는 것을 예방하기 위하여 고객의 요구를 정확하게 추출하고 이를 문서화하여 고객과 개발자가 상호 동의하는 과정에 대한 관리
형상관리 소프트웨어를 개발하는 전체 과정에서나 유지보수 과정 중에서 발생하는 각종 산출물(소드 코드, 문서)들을 중심으로 시간흐름에 따라 시스템 형상을 만들어 가면서 소프트웨어 버전을 체계적으로 관리
유지관리 소프트웨어가 개발되어 고객이 사용하는 과정 중에서 변경 사항이 발생할 경우 이를 수용하여 소프트웨어를 수정함으로써 고객이 소프트웨어를 지속적으로 잘 사용하도록 하는 소프트웨어 관리
품질관리 개발된 소프트웨어가 원래의 개발 목적에 부합하여 요구를 만족하는지 검증

소프트웨어 품질관리(ISO 9216 기준)
품질 특성 품질관리 기준 질문
기능성(Functionality)
  • 고객이 요구하는 기능을 소프트웨어가 충분히 제공하고 있는가?
  • 제공하는 기능이 표준을 잘 지키며 보안이 잘 이루어지는가?
  • 사용성(Usability)
  • 소프트웨어를 고객이 사용하기에 어렵지 않은가?
  • 사용자 인터페이스에 일관성이 있고 기능 확장과 축소가 용이한가?
  • 신뢰성(Reliability)
  • 소프트웨어를 운용할 때 크고 작은 오류가 발생하지 않는가?
  • 오류 발생에서 즉시 회복할 수 있고 서비스 중단이 일어나지 않는가?
  • 유지보수성(Maintainability)
  • 소프트웨어 운영환경이 일부 변경되어도 지속적인 운영이 가능한가?
  • 소프트웨어 업그레이드가 꾸준히 제공되는가?
  • 이식성(Portability)
  • 기존 시스템에서 제거하여 다른 시스템으로 옮기는 것이 용이한가?
  • 시스템 환경을 바꾸어도 소프트웨어는 여전히 운용될 수 있는가?
  • 효율성(Efficiency)
  • 소프트웨어가 소비하는 컴퓨팅 자원이 효율적 인가?
  • 소프트웨어의 반응시간이 고객의 예상보다 느리지는 않은가?

  • 알고리즘의 효율성
    공간 효율성 (공간복잡도): 알고리즘을 실행하는 동안 알고리즘이 필요로하는 메모리 공간(컴퓨팅 자원)의 효율성을 말한다.
    시간 효율성 (시간 복잡도): 알고리즘을 실행하여 종료하기 까지 걸리는 시간의 효율성을 말한다.


    소프트웨어 아키텍쳐: 개발하려는 소프트웨어의 전체 골격에 대한 논리적인 구조라고 하며 어플리케이션 개발 모델 이라고도 한다. 


    MVC 구조

    구현하려는 전체 어플리케이션을

     Model 비즈니스 로직,

    View 프리젠테이션 로직,

    Control 사용자 인터페이스로 구분하여 개발하는 구조이다.

    MVC는 GUI를 사용하는 어플리케이션 개발 모델에서 많이 사용한다.


    Client/Server 구조

    C/S 구조는 서비스를 요구하는 클라이언트와 서비스를 제공하는 서버로 구성되며 네트워크 기반의 분산 소프트웨어  아키텍쳐에 주로 적용된다. 성형 구조와 비슷한 성격을 갖는다.


    다층(n-tier)구조

    C/S구조의 단점을 극복하기위해 클라이언트에 해당하는 최상위계층과 서버에 해당하는 최하위계층 사이에 비즈니스 로직을 전담하는 중간계층을 둠으로써 비즈니스 로직을 완전히 분리시켰다.


    저장소(Repository)구조

    소프트웨어 아키텍쳐가 다수의 서브 시스템들로 구성되어 있을 때, 특정한 서브 시스템에 공유 저장소를 두고 나머지 서브 시스템들이 이곳을 통해 데이터를 공유하며 효율적으로 관리하고 서비스를 제공하는 구조이다.



    댓글