ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정보처리기사[실기 핵심 정리] - 소프트웨어 공학
    용어 정리 2024. 3. 28. 17:53

    소프트웨어 공학의 3R

    소프트웨어 공학의 3R의 정의

    • 완성된 소프트웨어를 기반으로 하여 역공학,재공학,재사용을 통해 소프트웨어 생산성을 극대화 하는 기법

    역공학(Reverse Engineering) - 이미 개발된 시스템을 분석하여 요구분석서,설계서 등의 문서를 추출

    재공학(Re Engineering)         - 유지보수의 생산성을 통해 소프트웨어의 위기를 해결하기 위한 방법

    과정 설명
    분석(Analysis) 기존 소프트웨어의 명세서를 검토하여 재공학 대상을 선정
    재구성(Restructuring) 소프트웨어의 구조를 개선하기 위해 코드를 재구성

    소프트웨어의 외적인 기능은 변경되지 않음
    역공학(Reverse Engineering) 소프트웨어의 소스코드를 분석하여 설계 수준을 도출
    이관(Migration) 기존 소프트웨어를 다른 운영체제, 프레임워크 등에서 사용할 수 있도록 변환

     

    재사용(Reuse) - 이미 개발된 소프트웨어의 전체 또는 일부를 다시 사용하는 것

     

    재사용 범위

    - 함수와 객체 재사용 : 클래스나 함수 단위로 구현된 소스코드의 재사용

    - 컴포넌트 재사용 : 독립적인 소프트웨어 컴퍼넌트의 재사용

    - 애플리케이션 재사용 : 기존 애플리케이션 또는 그 일부를 새로운 소프트웨어 개발에 재사용

     

    재사용 방법

    1. 합성 중심(Composition Based, 블록구성)

    전자 칩과 같은 소프트웨어 부품, 즉 모듈을 만들어서 이를 조합하여 소프트웨어를 완성하는 방법

    2. 생성 중심(Generation Based, 패턴 구성)

    추상화된 형태의 명세를 구체화하여 프로그램을 만드는 방

    소프트웨어 개발 단계

    계획  - 요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수

    소프트웨어 개발 방법론

    1. 구조적 방법론(하향식)

    절차지향적인 소프트웨어 개발 방법론

    제한된 구조 안에서 코드를 생성하고 순차적으로 실행하는 방법

     

    구조적 방법론 기본 개발 과정

    요구사항 분석 - 구조적 분석 - 구조적 설계 - 구조적 프로그래

     

    구조적 방법론 구성요소

    데이터 흐름도(DFD), 자료사전(DD), 상태전이도(STD)

     

    2. 정보공학 방법론

    기업의 주요 분분을 계획,분석,설계,구축에 정형화된 기법들을 상호 연관성있게 통합하여 적용하는 방법론

    데이터 중심의 접근 방식

     

    정보공학 방법론 기본 개발 과정

    정보전략계획 수립단계 - 업무영역 분석단계 - 시스템 설계단계 - 시스템 구축단계

     

    3. 객체지향 개발 방법론(상향식)

    현실 세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)로 표현

    객체와 클래스 간의 관계를 식별하고 설계 모델로 변환

     

    객체지향 개발 방법론 특징

    캡슐화, 정보은닉, 상속,다형성,추상화

     

    객체지향 개발 방법론 개발과정

    분석,설계,구현을 객체 중심으로 수행

    전체 프로세스의 일관성 유지 및 재사용성 강조

     

    4. CBD(Component Based Development) 방법론

    재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합하여 애플리케이션 개발

    새로운 기능 추가가 용이한 확장성 제

     

    CBD 방법론 특징

    확장성, 생성성 및 품질 향상, 유지보수 비용 최소화

     

    5.애자일 방법론

    변화에 빠르고 유연하게 대응하는 개발 방식

    소프트웨어 개발을 민첩성과 효율성 강조

     

    애자일 방법론 종류

    XP (eXtreme Programming): 반복적이고 점진적인 개발을 강조

    SCRUM : 유연하고 생산적인 프로젝트 관리 방식

    FDD(Feature-Driven Development) : 기능 중심의 반복적 개발 방식

    Crystal 방법론 : 프로젝트의 크기와 중요도에 따라 방법론을 조정 

     

    소프트웨어 개발 모델

    1. 폭포수 모델(Waterfall Model)

    특징 설명
    순차적 접근 개발 과정이 계획, 분석, 설계, 구현, 테스트, 운영의 순서로 진행된다.
    단계별 검증 각 단계는 이전 단계가 완료된 후에 시작되며, 다음 단계로 넘어가기전에 검증을 거친다.
    병행 및 반복 진행의 부재 한번 시작된 단계는 이전 단계로 돌아가거나 병행 진행이 허용되지 않는다.
    경험 및 성공사례 소프트웨어 개발의 오래된 모델로, 다양한 성공 사례가 있다.
    요구사항 변경의 어려움 초기에 설정된 요구사항을 나중에 변경하기 어렵다.
    단계별 명확성 각 단계는 명확한 목표와 산출물을 가진다.
    고객 피드백의 부족 개발 과정 중 고객의 피드백을 적극적으로 받기 어렵다.
    유연성 부족 시장이나 기술을 변화에 빠르게 대응하기 어렵다.

     

    2. 프로토 타이핑 모델(Prototyping Model)

    • 고객이 요구하는 주요기능을 프로토타입으로 먼저 구현하는 모델이다.
    • 개발자는 프로토타입을 통해 소프트웨어의 모델을 만들어 요구사항을 명확히 한다.
    • 개발된 프로토타입은 폐기되거나 재사용될 수 있다.
    장점 1. 사용자의 요구사항을 충실히 반영할 수 있다.

    2. 사용자가 비교적 빠른 기간내에 결과물을 평가할 수 있다.

    3. 오류를 초기에 발견하고 수정할 수 있다.

    4. 요구사항 변경이 용이하다.
    단점 1. 최종적으로 더많은 시간과 비용이 소요될수 있다.

    2. 사용자가 프로토타입을 실제 제품으로 오해할 수 있다.

    3. 문서화 과정이 소홀해질 수 있다.

    4. 폐기되는 프로토타입에 대한 비용이 발생할수 있다.

     

    3. 나선형모델(Spiral Model)

    순서 : (계획 - 위험분석 - 개발 - 고객평가)반복

    • 폭포수 모델과 프로토타이핑 모델의 장점을 통합하고, 위험 분석을 추가하여 점증적으로 개발을 진행하는 모델
    • 프로젝트 수행시 발생할수 있는 위험을 관리하고 최소화하는 것을 목적으로 한다.
    • 대규모 프로젝트나 위험 부담이 큰 시스템 개발에 적합하다.
    장점 1. 위험 분석 과정을 통해 높은 위험성을 가진 프로젝트도 수행 가능하다.

    2. 고객의 요구사항을 더 상세하게 적용할 수 있다.
    단점 1. 반복 단계가 길어지면 프로젝트 관리가 어려워질수 있다.

    2. 개발 과정이 길어지면서 시간과 비용이 증가할 수 있다.

     

    4. RAD(Rapid Application Development)모델

    • 매우 빠른 개발 주기를 통해 소프트웨어를 신속하게 제공한다.
    • 고급 소프트웨어 개발 도구와 CASE도구를 활용하여 개발 효율성을 높인다.
    • 개발 과정에서 프로토타이핑을 중시하여 사용자 피드백을 신속하게 반영한다.
    장점 1. 짧은 개발 주기를 통해 빠른 시장 출시가 가능하다.

    2. 사용자 피드백을 신속하게 반영하여 사용자 중심의 소프트웨어 개발을 지원한다.

    3. 변경 사항에 대해 유연하게 대처할 수 있다.
    단점 1. 매우 큰 규모의 프로젝트에 적합하지 않다.

    2. 높은 수준의 개발 도구와 전문 인력이 필요하다.

     

    5. V 모형

    • 개발의 각 단계에서 검증과 테스트를 중점적으로 진행한다.
    • 개발단계마다 해당하는 테스트 단계가 있어 체계적인 품질관리가 가능하다.

    단위 테스트(정적,동적) - 통합 테스트(상향식,하향식) - 시스템 테스트(기능,비기능) - 인수 테스트(알파,베타)

    장점 1. 개발의 각 단계에서 체계적으로 테스트를 진행한다.

    2. 높은 신뢰성이 요구되는 시스템 개발에 적합하다.
    단점 1. 요구사항 변경에 대응하기 어렵다

    2. 초기 요구사항 분석의 오류가 프로젝트 전체에 영향을 미칠 수 있다.

     

    6. 4세대 기법(4th Generation Techniques)

    • 요구사항 명세서를 기반으로 소프트웨어 코드를 자동으로 생성한다.
    • 4세대 언어(4GL)와 같은 고급 프로그래밍 언어와 도구를 사용한다.
Designed by Tistory.