1과목 - 소프트웨어 구축 [소프트웨어 공학]

2024. 7. 2. 17:05정보처리기사 실기 공부

CHAPTER 01. 소프트웨어 공학 개념

소프트웨어 공학(Software Engineering)
소프트웨어 위기 극복
품질 높은 SW를 효율적으로 개발하기 위한 학문
SW 개발에 적용되는 방법, 도구, 이론을 포괄적으로 다룸



위기 원인
1. SW 특성에 대한 이해 부족
2. 적절한 SW 관리 방법론 부재
3. 프로그래밍에만 치중하고 올바른 설계 등한시
4. SW 개발 전문적 교육 부족
작업 일정, 비용 추정의 부정확성

위기 결과
1. 개발 인력 부족
2. 인건비 상승
3. SW 성능, 신뢰성 부족
4. 개발 기간, 비용 증가
5. 품질, 생산성 저하
6. 유지보수 비용 증가



3R
완성된 SW 기반으로 역공학, 재공학, 재사용 통해 SW  생산성 극대화하는 기법
역공학은 재공학 안에 포함된다.



(1) 역공학(Reverse Engineering)
이미 개발된 시스템 분석하여 요구 분석서, 설계서 등 문서 추출
개발 단계 역순으로 거슬러서 기존 코드나 데이터로부터 설계 명세서, 요구 분석서 도출

특징
상용화되거나 이미 개발된 SW의 분석 도와줌
기존 시스템의 자료와 정보를 설계 수준으로 분석해 유지보수성 향상
이런 정보를 저장소(Repository)(하드디스크)에 보관하여 CASE 도구 사용 용이하게 함



(2) 재공학(Re-Engineering)
SW 유지보수성과 품질 향상
부작용 미리 발견하여 위험 부담 제거 및 복구 비용 절감
예방 유지보수(Rreventive Maintenance) 통해 SW 위기 해결

재공학 과정
분석(Analysis) : 기존 SW 명세서 검토하여 재공학 대상 선정
재구성(Restructuring) : SW 구조 개선 위해 코드 재구성, SW 외적인 기능 변경하지 않음
역공학(Reverse Engineering) : SW 소스 코드 분석하여 설계 수준 도출
이관(Migration) : 기존 SW를 다른 운영 체제, 프레임워크에서 사용할 수 있도록 변환



(3) 재사용(Reuse)
이미 개발된 SW 전체 or 일부 다시 사용

특징
SW 개발 시간, 비용 절감
프로젝트 실패 위험률 감소
개발자 생산성 증가
SW 구축 지식 공유

범위
함수, 객체 재사용 : 클래스, 함수 단위로 구현된 소스 코드 재사용
컴포넌트 재사용 : 독립적인 SW 컴포넌트 재사용
애플리케이션 재사용 : 기존 애플리케이션 or 그 일부 재사용

방법
1. 합성 중심(Composition Based, 블록 구성)
전차 칩과 같은 SW 부품, 즉 모듈 만들어서 조합하여 SW 완성

2. 생성 중심(Generation Based, 패턴 구성)
추상화 형태 명세를 구체화하여 프로그램 만듦 



SW 개발 6단계(계획, 요구사항 분석, 설계, 구현, 테스트, 유지보수)
계획(Planning)
개발 내용 명확 정의, 개발 범위 결정, 시스템 특성 이해하여 비용 및 기간 예측

요구사항 분석(Requirements Analysis)
고객과 SW 기능, 제약 조건, 목표 정의, 요구사항 정확 이해 및 유도, 불필요 요구사항 협상 및 조율, 요구사항 적합성 검토 및 미래 예측, 현재 실행 환경 분석



설계(Design)
시스템 동작 방식 정의, 요구사항 분석 바탕으로 입력 자료, 처리 내용, 출력자료 등 정의

설계 구분
(1) 시스템 구조 설계 : 모듈 간 관계와 구조 설계
(2) 프로그램 설계 : 각 모듈 처리 절차나 알고리즘 설계
(3) 사용자 인터페이스 설계 : 사용자 시스템 사용 위해 보이는 부분 설계

구현(Development)
프로그래밍 언어 사용하여 실제 프로그램 작성
코딩, 디버깅, 단위 테스트 진행

테스트(Test)
구현된 SW 가 요구사항 만족하는지 검사
실행 결과 정확성 검증 및 평가
테스트 계획 및 결과서 작성

유지보수(Maintenance)
사용 중 발견된 문제 수정, 새로운 기능 추가
SW 지속적 개선



'정보처리기사 실기 공부' 카테고리의 다른 글

[7과목 - 프로그래밍 언어 2]  (2) 2024.06.29