취미로 음악을 하는 개발자

[TOPCIT] 소프트웨어 개발 및 관리 본문

공대인/Theory

[TOPCIT] 소프트웨어 개발 및 관리

영월특별시 2019. 5. 11. 00:07
728x90

- 핵심 키워드

: SW 특성 및 생명주기, 개발 및 관리




- SW vs HW

1) SW는 HW에 비해 수정하기 쉽다.

2) SW는 오래 쓰더라도 낡지 않지만, 유지보수 비용은 HW보다 더 많이 소요

3) SW의 비가시성으로 인해 개발 진행 상태를 알기 어려움

4) SW는 요구사항을 정의하기가 어려움


* 수확체증의 법칙 : HW와 달리 추가 생산(복제)해도 추가 비용이 들지 않는다.





- SW 특징

1) 인재가 핵심

: 투입 인력 수와 성과가 비례하지 않음, 역량이 더 중요함


2) SW가 기기의 원가 경쟁력을 결정

: 잘 개발된 SW는 낮은 성능의 메모리와 AP 및 배터리로도 충분한 결과물이 나오므로 제품의 원가가 낮춰짐


3) SW 핵심은 재사용

: 사람의 창의력과 역량으로 된 무형자산이며 동시에 복제가 쉽고 무한대로 재사용이 가능함





- SW공학의 4가지 중요요소

1) 방법

: 프로젝트 계획 수립과 추정, 시스템과 소프트웨어 분석, 자료구조, 프로그램 구조 등

종종 특수한 언어 중심 or 그래프 표기법, SW 품질에 대한 일련의 평가 기준을 도입


2) 도구

: 어떤 일을 수행할 때 생산성 혹은 일관성을 목적으로 사용하는 방법들을 자동화/반자동화시켜 놓은 것

도구들이 통합되어 하나의 도구가 생성한 정보를 다른 도구가 사용할 수 있을 때, SW 개발을 지원하는 시스템으로 설정


3) 절차

: 절차는 방법과 도구를 결합하여, 그것으로 하여금 SW를 합리적이고 적시에 개발할 수 있도록 함

절차는 적용된 방법들, 요구되는 결과물, 품질을 보증하고 변경을 조정하게 도와주는 제어들 등의 순서를 정의


4) 사람

: SW공학에서는 많은 것(수립, 개선, 유지 등)들이 사람과 조직에 의해 움직이기 때문에 사람에 대한 의존성이 상대적으로 큼

다른 공학의 상황보다 훨씬 다양한 이슈들이 생기기 때문에 SW 개발을 공학적으로 정리한다는 것은 현실적으로 불가능하다





- SW 생명주기

1) 정의

: 사용자 환경 및 문제점 이해에서 시작하여 운용/유지 보수에 이르기까지의 모든 과정

일반적인 생명 주기는 " 타당성 검토 -> 개발 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 운용 -> 유지보수 "의 활동으로 구성


2) 목적

: 프로젝트 비용 산정과 개발 계획 수립 기본 골격 구성

용어의 표준화, 프로젝트 관리


3) SW 생명주기 선정

: 시스템 개발의 리스크와 불확실성 및 이에 대한 이해를 바탕으로 수행

선택한 모델은 프로젝트에 존재하는 리스크/불확실성을 최소화시킬 수 있어야 함

ex) 폭포수 모델, 프로토타입 모델, 진화 모델, 증분 모델 등





- SW 개발

1) 요구사항 분석

: 개발에 있어 가장 어려운 부분은 무엇을 개발할 것인가를 정확히 결정하는 것

SW 개발의 실제적인 첫 단계로 사용자의 요구에 대해 이해하는 단계

전체 개발 과정에서 개발 비용을 감소시킬 수 있는 결정적인 단계

초기에 요구사항을 잘 분석하여 정의하고 관리

-> 전체 SW 개발 기간과 비용의 초과, 품질 저하를 미연에 방지 가능


2) 설계

: 요구분석 과정이 개념적인 단계면, 설계 과정은 물리적 실현의 첫 단계

시스템 설계는 서브 시스템들로 이루어지는 시스템 구조를 결정, 서브 시스템들은 HW나 SW 등의 구성요소에게 할당

품질에 직접적인 영향을 주며, 설계가 제대로 되지 않으면 시스템의 안정감이 저하됨

-> 안정감 없는 시스템은 유지보수도 어려움


3) 구현

: 목표는 설계 명세를 기반으로 요구사항을 만족할 수 있도록 프로그래밍 하는 것

프로그램은 상세 설계나 사용자 지침서에 기술된 것과 일치하도록 코딩해야 함

가장 중요한 작업 중 하나는 코딩 표준을 정하고 이를 기반으로 명확하게 코드를 작성하는 것


4) 테스팅

: 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지에 대해 수동/자동화 된 방법을 동원하여 검사, 평가하는 과정

SW 품질 보증을 위한 마지막 단계로 SW 품질을 확보하기 위해 결함을 찾아내는 일련의 작업

개발한 SW 품질에 대한 평가와 품질 향상을 위한 수정 작업 등이 포함





- SW 관리

1) 유지관리

: 다른 시스템과는 달리 개발하는 동안이나 개발 후에도 많은 변경이 필요

SW는 이런 계속적인 변경을 수용할 수 있도록 개발

고객에게 SW가 인도되어 사용되는 과정에서 발생하는 여러 변경 사항에 대해 적응하는 활동, 변화에 대비하는 과정임


2) 요구관리

: SW는 무형이며 잘못된 선입견 때문에 HW 설계 변경보다 빈번하게 발생

요구사항 관리는 프로젝트와 관련된 이해 관계자들로부터 요구사항을 추출, 구성 및 문서화하고

변경에 대한 동의를 설정해 관리하는 시스템적인 활동

ㄴ목적

의사소통 : 무엇을 왜 해야 하는지, 변경사항의 의사소통

협업 : 업무의 공동 수행을 위한 협업수단

검증 : 모든 것이 계획한대로 완료되었는지 검증


3) 형상관리

: SW 개발 및 유지과정에서 발생하는 각종 산출물(문서, 코드)에 대한 계획, 개발, 운용 등을 종합하여 시스템 형상을 만들고

이에 대한 변경을 체계적으로 관리 및 제어하기 위한 활동

SW를 개발하거나 유지보수하는 과정에서 변경을 통제하는 절차는 SW 개발 과정의 산출물들을 관리하고 고품질의 SW를 얻기 위해 매우 중요


4) 품질관리

: SW 개발 활동이 프로젝트 계획과 일치하고 조직 정책에 적합한가를 검증

-> SW 품질은 주어진 요구사항을 만족시킬 수 있는 SW 속성의 정도라고 정의

SW 대표적인 품질 특성은 아래와 같지만 SW 종류가 다양하고 사용 목적이 상이하기 때문에 SW 품질 특성을 보편적이고 일관성있게 분류하기 어려움

ㄴ기능성 : 기능구현 완전성/정확성/상호운용성, 보안성, 표준준수성 등

ㄴ신뢰성 : 운용 안정성, 장애복구 용이성, 서비스 지속성, 데이터 회복성 등

ㄴ사용성 : 기능학습 용이성, 입출력 데이터 이해도, 사용자 인터페이스 조정 가능성/일관성 등

ㄴ효율성 : 반응시간, 자원사용율, 처리율 등

ㄴ유지보수성 : 문제진단/해결지원, 환경설정변경 가능성, 업데이트 용이성 등

ㄴ이식성 : 운영환경 적합성, 설치제거 용이성, 하위 호완성 등


필요에 따라 품질 특성 중 적절한 것을 선택하여 사용하고, 이에 따라 적절한 검증 활동(리뷰, 인스펙션, 테스팅, 시뮬레이션 등)을 해야 함



* 에센스만 보고 이걸 어떻게 풀라는건지 이해가 안간다.

Q) SW 생명주기에 관한 나선형 모델의 특징과 수행 단계를 기술하고, 애자일 방법과 비교하시오. 정답은 좀 더 아래에
































1) 나선형 모델의 특징

: 프로토타입을 지속적으로 발전시켜 최종 SW 개발까지 이르게 하는 점증적인 방법, 위험관리가 중심인 생명주기 모델

재정적/기술적으로 위험부담이 큰 대규모 시스템을 구축해 나갈 때 가장 현실적인 접근 방법으로 성과를 보면서 조금씩 투자하여 위험 부담을 줄일 수 있음

프로젝트의 개발 비용 및 일정에 대한 관리가 중요하며 무엇보다도 위험 분석이 중요함

모델 자체가 복잡하며, 새로운 모델로 충분히 검증되지 못함


2) 나선형 모델의 수행 단계

: 계획수립 -> 위험분석 -> 개발/구축 -> 고객 평가


3) 애자일 모델과의 비교

: 나선형 모델은 Less Document-oriented, 즉 문서를 통한 개발 방법이며,

  애자일 모델은 Code-oriented, 실질적인 코딩을 통한 방법론이다.

'공대인 > Theory' 카테고리의 다른 글

쿠키 세션 캐시  (0) 2019.05.21
JSON JSP JS  (0) 2019.05.14
[TOPCIT] 준비  (0) 2019.05.10
유클리드 알고리즘  (0) 2019.05.05
메모리 사상, Memory Mapping  (0) 2019.04.04
Comments