[Site Map]  [소프트웨어목차]

 

연관토픽

  1. [하위] 소프트웨어 공학(Software Engineering)

 

기출문제

회차 문제
관리123-2 1. 다음의 개념에 대해 설명하시오. 
가.소프트웨어의 주요 특성과 공학의 발전원리
나. 소프트웨어 공학이 다루는 주제와 그 목표
다. 좋은 소프트웨어의 조건들과 개발에 영향을 미치는 요인들 

 

 

개념

  • 사용자가 컴퓨터를 쉽고, 효율적으로 사용하도록 도와주거나, 컴퓨터를 이용하여 주어진 문제를 해결하기 위한 컴퓨터 활용 및 운용기술
  • 실행되면서 원하는 기능이나 함수성능을 제공해 주는 컴퓨터 프로그램으로 프로그램이 데이터를 적절하게 처리해 주는 자료 구조와 프로그램의 사용이나 운영을 나타내는 문서로 구성
  • 시스템 대규모화에 따라 소프트웨어의 신뢰성 저하, 개발비의 증대, 계획의 지연 등의 현상이 현저히 발생하여 소프트웨어 위기 발생

 

 

 

소프트웨어 분류[각주:1]

유형 내용
시스템 소프트웨어
(System Software)
다른 프로그램의 수행을 지원해주는 소프트웨어
) 컴파일러, 에디터, 파일관리자
실시간 소프트웨어
(Real-Time Software)
현실 세계에서 발생하는 이벤트들을 감시하고 분석하고 제어하는 소프트웨어
) 자동차 엔진 제어 소프트웨어
비즈니스 소프트웨어
(Business Software)
기업의 운영 또는 의사결정을 지원해주는 소프트웨어
) 경영지원 시스템(MIS)
공학 및 과학용 소프트웨어
(Engineering & Science SW)
공학 및 과학적 연구를 지원하고 고속의 데이터 처리가 가능한 소프트웨어
) 인공위성 궤도 분석 소프트웨어, CAD
내장형 소프트웨어
(Embedded Software)
ROM에 탑재되어 특정 기능만 수행하는 소프트웨어
) 전자오븐 제어, 자동차 브레이크 제어 소프트웨어
개인용 소프트웨어
(Personal Computer Software)
개인의 목적을 위해 수행되는 소프트웨어
) 워드 프로세서, 스프레드 시트
웹 기반 소프트웨어
(Web-based Software)
웹을 기반으로 수행되는 소프트웨어
) 온라인 회원 관리 소프트웨어
인공지능 소프트웨어
(Artificial Intelligence Software)
컴퓨터 스스로 분석 및 처리를 통해 복잡한 문제 해결을 지원해 주는 소프트웨어 
) 패턴 인식 소프트웨어

 

 

 

 

소프트웨어 특성(Brooks, 1871) [관리123-2]

특징 내용
비가시성(invisibility) 구조가 외부에 노출되지 않고 코드에 내재되어 있음
비마모성(Longevity) 외부의 환경에 의해 마모되지 않고 다만 품질이 나빠질 뿐임
복잡성(Complexity) 정형적 구조가 없이 복잡하고 비규칙적, 비정규적임
변경성(Changeability) 필요에 따라 항상 수정이 가능한 진화성
순응성(Conformity) 사용자요구, 환경변화에 적절히 변형가능
무형성(Intangible) 형체가 없어 관리하기 어려움
복제성(Duplicability) 간단하고 쉽게 다양한 경로와 노력으로 복제가 가능함
  • 프로그램은 프로그래밍한 원시코드(Source Code) 자체를 의미하고 소프트웨어는 프로그램을 비롯하여 개발 과정에서 생성되는 모든 산출물을 포함하여 각 단계에서 만들어지는 문서와 사용자 매뉴얼도 포함

 

 

 

좋은 소프트웨어의 조건들 [관리123-2]

  • 좋은 소프트웨어는 ‘사용자의 요구사항을 만족’하고 ‘정확하게 동작’하며 ‘쉬운 사용방법’과 ‘좋은 코드’로 개발된 소프트웨어임
좋은 소프트웨어의 조건 설명
정확성(Correctness) - 기능적으로 맞게 동작하는가, 표준에 적합한가
- 요구 분석서의 기능과 일치하는지 점검
신뢰성(Reliability) - 소프트웨어가 주어진 기간 동안 바르게 작동할 확률
- 오류 발생 확률에 반비례
- 정확성 제공하기 위한 필요조건
강인성(Robustness) - 요구 명세에 표시하지 않은 상황(오류 입력)에서도 제대로 작동하는 성질
성능(Performance) - 수행 속도, 데이터/트랜잭션 처리량
- 알고리즘의 시간 복잡도
- 시뮬레이션, 스트레스 테스트
사용 용이성(Usability) - 시스템을 친근하게 느낄 수 있는 성질
- 사용 대상에 따라 달라질 수 있음
- 사용자 인터페이스, Human factor
유지 보수성(Maintainability) - 보수성: 정해진 기간에 소프트웨어 결함을 해결할 수 있는 성질
- 진화성: 잠재적 발전 가능성 (추가 요구사항에 따라 기능이 진화할 수 있어야 함)
재사용성(Reusability) - 소프트웨어 부품(라이브러리, 클래스 등)의 성질
- 확장 가능성(openness)
- 적응성(adaptability)
- 이용 용이성(closeness)

 

 

 

좋은 소프트웨어 개발에 영향을 미치는 요인들 [관리123-2]

구분 영향 요인 설명
관리 측면 프로젝트 관리 기술 - 소프트웨어 개발 관리(프로그래밍 경험, 관리 능력)
- 소프트웨어 프로세스 관리(일정, 예산, 인력, 형상, 품질 관리 등)
- CMM(Capability Maturity Model) 모델
- 소프트웨어 품질 관리(Quality Assurance)
프로젝트의 성격 - 응용분야에 따라 성격이 달라짐(자료처리 중심, 제어 중심, 시스템 소프트웨어, 인공지능)
- 크기, 복잡도(소규모, 중규모, 대규모, 초대규모)
인력 측면 의사소통
(Communication Skill)
- 발주자는 컴퓨터 및 소프트웨어에 대한 지식이 부족하고, 개발자는 발주자의 전문 분야에 대한 지식이 부족(인터뷰기술, 프로토타입) 
- 요구 취합 방법(설문지, 유저 그룹, 워크샵 등)
- 정형적 방법
프로그래머의 역량
(Maturity)
- (미숙한 프로그래머가 작성한 모듈은) 전체 품질이나 일정에 영향
- 프로그래머의 능력(프로그래밍, 커뮤니케이션, 응용분야에 대한 이해, 프로세스/도구에 대한 이해와 경험) 
- 소프트웨어 공학의 체계적이고 조직적인 접근법을 통하여 일정 부분 상쇄가 가능

 

 

 

 

 

[Top]

 

  1. 프레즈만(Pressman)의 소프트웨어 분류 [본문으로]

+ Recent posts