1과목 소프트 웨어 구축 - 소프트웨어 공학이란?
목차
* 정보처리기사 실기에서는 이론보다 프로그램밍언어를 해석하는 문제가 더 많은 비율(40%~50%) 출제 됩니다.
아래 내용들은 꼼꼼히 보시기보다 편하게 읽어가며 용어나 개념이 익숙해지도록 하시면 좋습니다.
소프트웨어 공학(Software Engineering)
소프트 웨어 공학의 정의
소프트웨어 위기를 극복하고 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
소프트웨어 개발에 적요오디는 방법, 도구, 이론 포괄적으로 다룬다.
소프트웨어는 왜 위기인가?
소프트웨어 특성에 대한 이해 부족
적절한 소프트웨어 관리 방법론의 부재
프로그래밍에만 치중하고 올바른 설계를 등한시함
소프트웨어 개발에 대한 전문적 교육 부족
작업 일정과 비용 추정의 부정확성
위기의 결과는?
개발인력 부족 및 인건비 상승
개발 기간 및 비용의 증가
소프트웨어 공학의 3R
제공학, 역공학, 재사용을 꼭 기억하는 것이 좋다.
역공학(Reverse Engineering)
- 이미 개발된 시스템을 분석하여, 요구분석서, 설계 등의 문서를 추출하는 작업
- 역으로 문서를 산출해내는 것이 중요한 포인트.
- 일반적인 개발단계는 요구-분석-설계 식으로 진행되면, 역공학은 이걸 반대로 진행하는 것이다.
- 왜냐하면, 이미 만들어진 소프트웨어를 활용하고자 하는데, 코드 외에 아무런 정보가 없을 수 있기 때문이다.
- 에를 들면, 구글 통합 검색 사이트를 재활용하고자 하는데
- Case도구의 사용을 용이하게 한다. case도구는 ppt와 같은 것도 포함된다.
- *Case 도구는 상위(분석, 설계), 하위(구현, 테스트)로 구분 됨.
- 계 분 설(상위CASE) 구 테(하위CASE) 유
재공학(Re-Engineering)
재공학(Re-Engineering)은 기존의 시스템, 소프트웨어, 또는 프로세스를 분석하고, 이를 새로운 형태나 구조로 변형하는 과정을 말합니다. 재공학은 기존 시스템이나 소프트웨어의 성능을 향상시키거나 새로운 요구 사항을 충족시키기 위해 수행될 수 있습니다.
- 유지보수의 생산성을 토애 소프트웨어의 위기를 해결하기 위한 방법
- 소프트웨어의 유지보수성과 품질 향상
- 유지보수
- 예방
- 향상
- 적응
- 수정
- 재공학 과정(분재역이)
- 분석: 먼저, 기존 시스템 또는 소프트웨어의 명세서나 코드를 검토하여 현재 상태를 파악합니다. 이를 통해 시스템이나 소프트웨어의 동작 방식과 구성 요소를 이해할 수 있습니다.
- 재구성: 분석한 내용을 기반으로, 시스템이나 소프트웨어를 어떻게 변경하거나 구성할지에 대한 계획을 수립합니다. 이는 기존의 기능을 유지하면서도 새로운 요구 사항을 수용할 수 있는 새로운 설계를 의미할 수 있습니다.
- 역공학: 소프트웨어의 경우, 소스 코드를 분석하여 시스템의 설계 수준을 파악합니다. 이는 소프트웨어의 내부 동작을 이해하고 변경할 필요가 있는 부분을 식별하는 데 도움이 됩니다.
- 이관: 재구성한 시스템 또는 소프트웨어를 다른 운영 체제나 환경으로 이동시키는 과정입니다. 이는 호환성 문제를 해결하고, 새로운 플랫폼에서의 동작을 보장하기 위해 필요합니다.
재사용(Resuse Engineering)
재사용 엔지니어링 또는 리유즈 엔지니어링은 기존에 개발되거나 구매한 소프트웨어를 다시 사용하여 새로운 소프트웨어를 개발하거나 구축하는 과정을 말합니다. 이는 기존의 소프트웨어 자산을 효과적으로 활용하여 개발 비용을 절감하고 개발 시간을 단축하는 데 도움이 됩니다.
회사에서는 이를 "템플릿"이라고도 부르는데, 이는 기존에 개발된 소프트웨어나 솔루션을 기반으로 새로운 프로젝트를 시작할 때 사용되는 형태나 구조를 말합니다. 템플릿은 일종의 출발점으로, 이미 검증된 디자인, 코드, 또는 구성 요소를 재사용함으로써 새로운 소프트웨어 개발을 빠르고 효율적으로 진행할 수 있도록 도와줍니다.
- 현재 아주 잘만든 소프트웨어를 다시 사용하는 것.
- 회사에서는 템플릿이라는 말로 많이 쓰임.
재사용 범위
- 함수 객체
- 컴포넌트
- 애플리케이션
- 이커머스의 일련의 과정에 필요한 애플리케이션 재사용
재사용 방법
- 합성중심 : 서로 결합하여 만드는 것
- 생성중심 : 블록화 하여 추상화하여 만드는 것
소프트웨어 개발단계
계획 ->요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
분석 + 설계에 쓰이는 도구들 : DFD, DD, Mini-Spec, ERD
- 계획(Planning): 프로젝트의 목표와 범위를 설정하고, 프로젝트 일정, 비용, 리소스 등을 계획합니다.
- 우리가 만들 소프트웨어의 일정이나 비용 등을 찾아보는 것
- 요구사항 분석(Requirements Analysis): 사용자 및 시스템 요구사항을 수집, 분석하고 문서화하여 시스템이나 소프트웨어의 기능과 제약 사항을 정의합니다.
- 클라이언트는 필요한 기능을 정확히 모를 확률이 높음
- 설계(Design): 요구사항을 바탕으로 시스템 아키텍처를 설계하고, 세부적인 소프트웨어 구성 요소의 설계를 수행합니다. 이 단계에서는 시스템의 구조, 데이터베이스 설계, 인터페이스 설계 등이 이루어집니다.
- 시스템 구조, 프로그램, 사용자 인터페이스(UI), StoryBoard가 주요 문서
- 입력자료, 처리내용, 출력자료
- 구현(Implementation): 설계 단계에서 정의된 요구사항과 설계에 따라 실제 소프트웨어 코드를 작성하고, 시스템을 개발합니다.
- IDE(통합 계발 환경)
- 테스트(Test): 개발된 소프트웨어를 테스트하여 요구사항을 충족하고 기능적, 비기능적 요구사항을 만족하는지 검증합니다. 테스트는 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 등으로 진행될 수 있습니다.
- 코딩, 디버깅, 단위테스트
- 구현된 소프트웨어가 요구사항을 만족하는 지 (인수)
- 단위 : 조금씩 만들고 테스트 하는 것
- 유지보수(Maintenance): 소프트웨어가 운영되는 동안 발생하는 버그 수정, 기능 추가, 성능 향상 등의 작업을 수행하여 소프트웨어를 지속적으로 개선하고 관리합니다.
- 가장 많은 비용이 들어감.
- SI, SM, 에이전시
- 수정 : 오류에 의해 수정하는 부분
- 적응 : 하드웨어, 서버 등의 변경에 맞게 수정
- 예방 : 미래에 일어날 일을 대비하여 수정하는 것
- 향상 : 오류가 아닌 기능 추가에 해당 하는 부분
함께보면 좋은 글
2024.03.12 - [정보처리기사] - [정보처리기사] 2. 소프트웨어 개발 방법론 - 1과목 소프트웨어 구축
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 3. 프로젝트 계획 및 분석 - 1과목 소프트웨어 구축 (0) | 2024.03.13 |
---|---|
[정보처리기사] 2. 소프트웨어 개발 방법론 - 1과목 소프트웨어 구축 (0) | 2024.03.12 |
[정보처리기사실기] C언어로 입력받아 더 하기 (0) | 2024.03.06 |
[정보처리기사] C언어에서 Return이란? (1) | 2024.03.06 |
[정보처리기사 실기] 디자인 패턴 - 행위 패턴 암기하기! (2) | 2024.02.28 |
댓글