- 사용자의 요구를 만족시키는 예산 내에서 품질 소프트웨어를 적시에 생산
- 소프트웨어의 품질과 생산성 향상
- 시스템과 제품의 품질 및 생산성 향상
- 비즈니스 성과 향상
- 절대적이지 않음
- 다차원적
- 제약(사람, 돈, 시간, 도구)의 영향을 받음
- 수용 가능한 타협에 관한 것
- 품질 기준은 독립적이지 않음
- 물리적 존재가 아님
- 처음에 고객의 니즈를 정확하게 알 수 없음
- 시간이 지남에 따라 니즈가 변화
- 하드웨어와 소프트웨어의 급격한 변화 속도
- 고객의 높은 기대
유저, 스폰서, 유지보수자
프로그램이 기능 명세서에 따라 잘 동작함
아래 전제 하에
-> 시스템 명세가
제품 고장의 빈도 및 위험도 측정
통계적으로 정의 할 수 있음
-> MTTF(평균 고장 시간) : 사용 개시(수리 복구)부터 고장까지 동작시간의 평균치
MTBF(평균 무고장 시간) : 고장에서 다음 고장까지의 동작시간의 평균치
요구 사항 사양에서 예상하지 못한 상황에서도 합리적으로 작동하는 경우 견고함
신뢰성, 정확성과의 관계
=효율성(메모리, 응답시간)
시스템의 사용성에 영향을 줌
평가는 아래의 3가지로 함
1. 측정(모니터링)
2. 분석
3. 시뮬레이션프로세스에 성능을 적용하면 -> 생산성
성능=생산성언제 성능 평가가 필요한가?
분석, 설계 단계에서.
개인화된 환경에 맞게 시스템을 쉽게 구성하고 조정할 수 있음
안전하게 검증될 수 있음
모든 가능한 경우에 대해 테스팅이 됨
- Corrective 버그수정
- Adaptive 적응성 - OS변화에 적응하기 위한 유지보수
- Perfective 코드 재구조화
- Preventive 예방 - 사건이 일어나기 전에 미리 점검
->요즘은 maintenance대신 software evolution이라는 말로도 씀유지보수성에는 아래 2가지가 있음
1. Repairability 수정가능성
- 제한된 작업량으로 시스템 결함을 수정할 수 있음
- 모듈화를 잘 하는 것 = 유지보수성↑
- 적절한 툴 사용으로 개선가능 : HL, PL, CASE등등
- 신뢰성과의 관계 : 결함 고치는 시간↓수록 → usetime↑가면 → 신뢰성↑
몰랑 질문..2. Evolvability 진화성
- 소프트웨어는 시간이 지남에 따라 수정됨
- 크고 복잡한 소프트웨어에서 중요함
- 새로운 버전이 출시될 때마다 감소함
- 제품군 및 소프트웨어 아키텍처로 발전 가능성을 촉진
기존 구성 요소를 사용하여 새 제품을 만듦
재사용 수준
- 사람
- 요구사항
- 디자인
- 코드
-> 코드만 재사용 가능하 것은 아니다.다른 수준의 재사용
모듈->함수->소프트웨어->시스템
다른 환경에서 실행할 수 있는 경우
- 하드웨어 플랫폼
- 소프트웨어 플랫폼
모듈화에 의해 달성될 수 있음
내부 제품 품질
'객체 지향 패러다임'은 이해하기 쉽다 라고 부름
추상화 및 모듈화로 향상됨
유지보수성과 관계 :
시스템이 다른 시스템과 공존하고 협력하는 능력
인터페이스 표준화로 달성
효율성과 성능면에서 소프트웨어 생산 프로세스의 품질
측정하기 어려움 :
1. SLOC : Source lines of code
2. FP : Function Point
적시에 제품을 제공할 수 있는 능력
필요사항 :
1. 신중한 일정
2. 정확한 작업 예측
3. 명확하게 지정된 마일스톤 (얼마만큼 했는지 현황 기록하는)
모든 단계와 현재 상태가 문서화된 경우 visible하다.
1. 모듈의 모음으로 명확하게 구조화된 경우
2. 명확하게 이해할 수 있는 기능들인 경우
3. 사용 가능하고 정확한 문서로 작성된 경우
악의적인 공격 및 기타 해커 위험으로부터 소프트웨어를 보호하기 위한 아이디어가 구현된 경우
보안 취약성 :
1. 접근가능 : 공격자가 얻을 수 있음
2. 악용가능 : 공격자가 피해를 줌
Software safety : software hazards로부터 벗어나기
software hazards란? 사고가 전제가 되는 조건어떻게 소프트웨어 안전성을 측정할까?
데이터 저장 및 검색
품질 :
- 데이터 무결성
- 보안성
- 데이터 가용성
- 처리 성능
- 유저 용이성
ex) 은행 시스템, 도서관 카탈로그 시스템
사전에 정의된 엄격한 기간 내에 응답
운영체제 수준의 스케줄링 :
- 데드라인
- 우선순위
품질 :
- 응답시간 요구사항
- 안전성
ex) 공장 모니터링 시스템, 미사일 유도 시스템, 마우스 핸들링 소프트웨어
병렬화 및 통신
분포도 :
- 데이터
- 컨트롤
- 하드웨어
품질 :
- 시스템 가용성
- 코드 이동성
ex) 클라이언트/서버 시스템의 미들웨어, 그룹웨어
소프트웨어는 많은 구성 요소 중 하나
최종 사용자에 대한 인터페이스가 없다.품질 :
- 신뢰성
- 적응성
- 메모리, 성능 효율성
ex) 비행기, 로봇, 전자레인지, 식기세척기, 자동차
캡슐화 및 모듈화의 다른 점 :
예를 들어 신경망은 단순히 더 작은 서브넷으로 절단되어 모듈로 재사용될 수 없다.
우선순위..?
모델을 실행하는 알고리즘은 훈련 및 테스트에 사용되는 데이터보다 훨씬 덜 중요한 역할을 한다.
특징을 만족하면 서브특징도 만족한다.
- Functionality - 적합성, 정확성, 상호 운용성, 규정 준수, 보안
- Reliability - 성숙도, 결함 내성, 복구 가능성
- Usability - 이해성, 학습성, 조작성
- Efficiency - 시간 행동, 자원 행동
- Maintainability - 분석 가능성, 변경 가능성, 안정성, 테스트 가능성
- Portability - 적응성, 설치성, 적합성, 교체성
품질은 사용자의 니즈 충족과 직결되기 때문이다.
올바른 모듈화