학점은행제/소프트웨어 공학

소프트웨어 공학

Eprld 2024. 10. 19. 12:36

소프트웨어 정의

-기계에서 효율적으로 작동하는 신뢰성 있는 소프트웨어를 경제적으로 획득하기 위해 적절한 공학적 원리를 수립하여 활용하는 것(비우어)

-소프트웨어의 개발과 운용, 유지보수에 대한 체계적(Systematic), 훈련된(Disciplined), 계량적(Quantifiable),접근방식의 적용(IEEE)

 

소프트웨어에 대한 이해

-프레스만

>실행되면서 원하는 기능이나 함수, 성능을 제공해 주는명령어들(컴퓨터 프로그램)

>프로그램이 데이터를 적절하게 처리할 수있게 해주는 자료구조

>프로그램의 사용이나 운영을 나타내는 하드카피나 가상의 형태의 문서

 

소프트웨어 구성요소

- 프로그램 / 자료구조 / 문서

 

소프트웨어의 특징과 분류

-비가시성 : 완성되기 전까지 전체를 파악하기 힘듦

-변경성 : 완성되기 전까지 계속 바뀌며, 완성된 이후에도 변경됨

-복제성 : 무한 복제 가능, 닳거나 없어지지 않음

-복잡성 : 개발과정이 대단히 복잠함

 

-시스템 소프트웨어 : 다른 프로그램의 수행을 지원해주기 위해 만들어진 소프트웨어

-애플리케이션 소프트웨어 : 특수한 업무상의 요구를 해결해주며, 비즈니스 처리 또는 관리/기술 측면에서의 의사결정을 쉽게 처리할 수 있도록 사업상 또는 기술적 데이터를 처리하는 소프트웨어

-공학.과학 소프트웨어 : "수 처리" 알고리즘이 특징이며, 공학 및 과학적 연구를 위해, 실시간 처리가 가능한 소프트웨어

-임베디드 소프트웨어 : 생산품이나 시스템에 내장되어 있으면서 사용자나 시스템 자체를 위한 특징이나 기능을 구현하는 데 사용

-응용 소프트웨어 : 인터넷을 위해 개발된 하이퍼텍스트 이거나, 웹으로 가동되는 응용시스템을 위한 소프트웨어

-인공지능 소프트웨어 : 계산이나 일반적인 알고리즘으로 분석할 수 없는 복잡한 문제를 해결하기 위해 비수치적 알고리즘을 사용

-생산라인 소프트웨어 : 제조과정에 필요한 소프트웨어

 

소프트웨어의 탄생과 폐기

-사람처럼 sw도 태어나고 사라짐(Life Cycle)

 

유지보수의 종류

-안전 유지보수 : 새로운 요구사항을 추가하거나 시스템의 구조와 성능을 게선하여 시스템을 완전하게 만드는 목적으로 수행

-수정 유지보수 : 요구사항의 오류나 설계 및 구현 상의 오류를 개선할 목적으로 수행함

-적응 유지보수 : 시스템의 플랫폼 변경과 같은 새로운 환경으로의 적응을 목적으로 수행

-예방 유지보수 : 시스템의 잠재적인 결함을 사전에 방지하기 위한 목적으로 수행

 

인하우스 및 SI 프로젝트

 

인하우스 개발 프로젝트

-조직 내부 자체 인력으로 SW를 개발

>소규모 프로젝트 추진 시

>프로젝트 계약과정이 불필요

>일부 필요 시 개발자 혹은 전문가를 초빙

 

SI 프로젝트

-대규모 프로젝트 혹은 위험한 프로젝트의 경우 외부 전부 SI업체에 맡겨 프로젝트 향

>REF 제시

>업체를 선정하기 위한 과정이 필요

>선정된 엄체와 프로젝트에 대한 계약 필요

 

패키지 도입

-조직 레벨에서 활용할 패키지의 도입

>ERP를 도입하는 프로젝트가 예시

>이미 만들어진 기능을 대부분 활용혹은 커스터마이징을 통해 기능을 보완

>전혀 변경이 없이 활용하기도 함

 


 

 

소프트웨어 프로세스의 중요성

 

개발의 목표

-정해진 기간 내에, 주어진 예산을 이용해 사용자가 원하는 좋은 품질로 개발하는 것

계속되는 실패의 원인

-정해진 기간 내에 고품질의 소프트웨어를 개발하는 것이 점점 더 어려워짐

-요구사항이 복잡해지고 규모가 점점 커짐

 

소프트웨어의 생명주기

-SW를 어떻게 개발할 것인가에 대한 전체적인 큰 흐름을 나타내는 추상적 표현

 

주먹구구식 개발 모델

-요구사항 분석, 설계 단계 없이 일단 개발에 들어간 후 만족할 떄까지 수정작업 수행

 

단점

-정해진 개발 순서가 없기 때문에 계획이 정확하지는 않음

-관리자는 프로젝트 진행 상황 파악에 어려움

-개발 문서가 없기 떄문에 개발 및 유지보수에 어려움

 

폭포수 모델

-순차적으로 소프트웨어를 개발하는 전형적인 개발 모델

-대부분의 소프트웨어 개발 프로젝트의 기본적인 모델이며 가장 많이 사용되는 모델

-소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근하는 방법

-개발 방법 : 요구사항 분석, 설계, 구현, 테스팅, 유지보수

 

 

 

1단계 : 요구사항 분석

-what

>사용자 요구나 주어진 문제를 정확히 분석 이해하는 과정

>구현 시스템의 기능, 목표, 제약사항 등을 정확히 파악

>발주자와 개발자가 요구분석 사항에 동의하여야 다음 단게호 진입

 

-요구사항 명세서

>요구 부석 단계의 결과물

>사용자와 개발자의 의사소통 수단으로 사용

 

2단계 : 설계

-How

>분석된 결과를 어떻게 프로그램으로 구성할 것인가?

>솔루션에 집중

 

-설계 내용

>시스템 구조 설계 : 시스템을 구성하는 모듈의 관게와 구조

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

>사용자 인터페이스 설계 : 사용자에게 보이는 부분을 설계

 

-설계 명세서

>설게 단계의 결과물

>소프트웨어 구조를 기술한 것으로모듈의 기능과 모듈 사이의 관계를 기술

 

3단계 : 구현

-'Do it:'단계

-이전 단계의 모듈 설계를 기준으로 프로그래밍을 함

-결과물 : 소스 코드

 

4단계 : 테스트

-프로그램이 입력에 따라 요구되는 결과대로 작동하는지, 내부적 이상 여부 및 오류 발견을 위해 수행

-테스트 계획을 세운 후 문서화

 

5단계 : 유지보수

-개발된 소프트웨어의 변경사항을 수정하는 것

-수정 유지보수, 적응 유지보수, 기능 추가 유지보수 등이 있음

 

단점

-앞단계가 완료될 때까지 다음 단계들은 대기상태여야 함

-실제 작동되는 시스템을 개발 후반부에 확인 가능하기 떄문에 고객이 요구사항 확인하는데 많은 시간이 걸림

 

원형 모델

-폭포수 모델의단점을 보완한 모델

-점진적으로 시스템을 개발해 나가는 접근 방법

-원형을 만들어 고객과 사용자가 함꼐 평가한 후 개발 될 소프트웨어의 요구사항을 정제하여 보다 완전한 요굿항 명세서를 완성함

 

1단계 :  요구사항 정의

-고객의 일부 요구사항 또는 불완전한 요구 사항으로부터 제품의 윤곽을 잡음

 

2단계 : 원형 설계

-주어진 요구사항을 기반으로 빠른 설계를 함

-주로 제품의 사용자 인터페이스에 초점을 맞춤

 

3단계 : 원형 개발

-설게된 원형을 RAD도구 등을 사용하여 빠르게 구현함

-고객이 요구하는 기능을 구현하고 필요한 요소를 파악하는데 중점을 둠

-프로그램의 신뢰도나 품질이 아니라 간으한 빨리 원형을 구현하는 것이 목적

 

4단계 : 고객 평가

-고객과 개발자가 함께하는 중요한 단계 

-고객 요구사항을 정확하게 규명하기 위해 원형에 대한 사용 및 평가시간을 충분히 제공

-개발될 소프트웨어의 요구사항 정제에 중요한 정보로 활용

 

5단계 : 원형 정제

-원형이 어떻게 수정되어야 할지를 결정함 

-원형 개발과 검증, 요구사항 정제의 순환을 반복하여 추가적인 정보를 통해 요구사항을 완성해 나감

 

장점

-사용자의 의견 반영이 잘됨

-사용자가 더 관심을 가지고 참여할 수 있고, 개발자는 요구를 더 잘 받아드릴 수 있음

 

단점

-프로토타입이 최종 결과라고 믿고 수프트웨어 개발이 완성되리라는 사용 자의 오해, 기대심이 유발

-개발자 관점 : 관리가 어려움(중간 산출물 정의가 난해)

 

적용

-개발 착수 시점에 사용자 요구가 불투명할 때

-실험적으로 실현 가능성을 타진해 보고 싶을 떄

-혁신적인 기술을 사용해 보고 싶을 때

 

나선형 모델

-폭포수 모형과 원형 모형의 장점을 수용하고 위험 분석을 추가한 점증적 개발 모델

-프로젝트 수행 시 발생하는 위험을 관리하고 최소화 하려는 것이 목적

-여러 개의 작업 영역으로 구분

-가장안쪽 타원부터 개념적 개발 프로젝트, 실제 제품 개발 프로젝트, 제품 향상 프로젝트, 유지보수 프로젝트

-단계가 명확히 구분되지 않고, 엔지니어가 프로젝트 성격이나 진행상황에 따라 단계 구분

 

1단계 : 계획 및 정의 단계

-개발자는 고객으로부터 요구사항을 수집

-개발자는 시스템의 성능, 기능을 비롯한 시스템의 목표를 규명하고 제약 조건을 파악

-목표와 제약 조건에 대한 여러 대안들을 고려하고 평가함으로써 프로젝트 위험의 원인을 규명 가능

 

2단계 : 위험 분석 단계 

-초기의 요구 사항을 토대로 위험 규명

-위험에 대한 평가가 이루어지면 프로젝트를 계속 진행할 것인지, 중단할 것인지를 결정

 

3단계 : 개발 단계

-시스템의 대한 생명주기 모델을 선택하거나 원형 또는 최종적인 제품을 만드는 단계

 

4단계 : 고객 평가 단계
-구현된 소프트웨어를 고객이나 사용자가 평가함

-고객의 피드백을 얻는 데 필요한 작업이 포함 

-다음 단게에서 고객의 평가를 반영할 수 있는 자료 획득 가능

 

적용 가능한 경우

-고비용의 시스템 개발

-시간이 많이 소요되는 큰 시스템 구축 시 유용

 

장점

-프로젝트의 모든 단계에서 기술적인 위험을 직접 고려할 수 있어 사전에 위험 감소 가능

-테스트 비용이나 제품 개발 지연 등의 문제 해결 가능

 

단점

-개발자가 정확하지 않은 위험 분석을 했을 경우 심각한 문제 발생

-폭포수, 원형 모델에 비해 상대적으로 복잡하여 프로젝트 관리 자체가 어려울 수 있음

 

 

 

 

 

'학점은행제 > 소프트웨어 공학' 카테고리의 다른 글

데이터베이스 설계  (0) 2024.12.08
소프트웨어 설계  (2) 2024.12.06
소프트웨어 개발 프로젝트  (0) 2024.10.26