연관토픽
기출문제
회차 | 문제 |
관리123-2 | 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]
![](https://blog.kakaocdn.net/dn/brjrQf/btqWVSk76WX/2bEhND80AqcV5wk0lweaE0/img.png)
- 좋은 소프트웨어는 ‘사용자의 요구사항을 만족’하고 ‘정확하게 동작’하며 ‘쉬운 사용방법’과 ‘좋은 코드’로 개발된 소프트웨어임
좋은 소프트웨어의 조건 | 설명 |
정확성(Correctness) | - 기능적으로 맞게 동작하는가, 표준에 적합한가 - 요구 분석서의 기능과 일치하는지 점검 |
신뢰성(Reliability) | - 소프트웨어가 주어진 기간 동안 바르게 작동할 확률 - 오류 발생 확률에 반비례 - 정확성 제공하기 위한 필요조건 |
강인성(Robustness) | - 요구 명세에 표시하지 않은 상황(오류 입력)에서도 제대로 작동하는 성질 |
성능(Performance) | - 수행 속도, 데이터/트랜잭션 처리량 - 알고리즘의 시간 복잡도 - 시뮬레이션, 스트레스 테스트 |
사용 용이성(Usability) | - 시스템을 친근하게 느낄 수 있는 성질 - 사용 대상에 따라 달라질 수 있음 - 사용자 인터페이스, Human factor |
유지 보수성(Maintainability) | - 보수성: 정해진 기간에 소프트웨어 결함을 해결할 수 있는 성질 - 진화성: 잠재적 발전 가능성 (추가 요구사항에 따라 기능이 진화할 수 있어야 함) |
재사용성(Reusability) | - 소프트웨어 부품(라이브러리, 클래스 등)의 성질 - 확장 가능성(openness) - 적응성(adaptability) - 이용 용이성(closeness) |
좋은 소프트웨어 개발에 영향을 미치는 요인들 [관리123-2]
구분 | 영향 요인 | 설명 |
관리 측면 | 프로젝트 관리 기술 | - 소프트웨어 개발 관리(프로그래밍 경험, 관리 능력) - 소프트웨어 프로세스 관리(일정, 예산, 인력, 형상, 품질 관리 등) - CMM(Capability Maturity Model) 모델 - 소프트웨어 품질 관리(Quality Assurance) |
프로젝트의 성격 | - 응용분야에 따라 성격이 달라짐(자료처리 중심, 제어 중심, 시스템 소프트웨어, 인공지능) - 크기, 복잡도(소규모, 중규모, 대규모, 초대규모) |
|
인력 측면 | 의사소통 (Communication Skill) |
- 발주자는 컴퓨터 및 소프트웨어에 대한 지식이 부족하고, 개발자는 발주자의 전문 분야에 대한 지식이 부족(인터뷰기술, 프로토타입) - 요구 취합 방법(설문지, 유저 그룹, 워크샵 등) - 정형적 방법 |
프로그래머의 역량 (Maturity) |
- (미숙한 프로그래머가 작성한 모듈은) 전체 품질이나 일정에 영향 - 프로그래머의 능력(프로그래밍, 커뮤니케이션, 응용분야에 대한 이해, 프로세스/도구에 대한 이해와 경험) - 소프트웨어 공학의 체계적이고 조직적인 접근법을 통하여 일정 부분 상쇄가 가능 |
- 프레즈만(Pressman)의 소프트웨어 분류 [본문으로]