본문 바로가기
728x90
반응형

2023-2/소프트웨어 공학9

9. 소프트웨어 품질 소프트웨어 품질 US DoD: 개발된 소프트웨어가 사용자의 요구 사항을 만족할 수 있는 능력 IEEE: 소프트웨어가 필요한 속성을 보유하고 있는 정도, 사용자의 기대 수준을 만족할 수 있는 정도를 결정하는 특성 ISO: 요구사항을 만족하는 소프트웨어 제품의 능력 프로젝트 관리자 관점의 좋은 소프트웨어 - 추가 부담이 발생하지 않는 소프트웨어 개발자 관점의 좋은 소프트웨어 - 개발하기 쉽고 내용 추가 및 코드 수정이 쉬운 - 코딩 표준에 맞게 개발된 프로그램 유지보수자 관점의 좋은 소프트웨어 - 작성된 코드가 코딩 규칙 및 표준을 따르고 주석이 많이 포함된 - 가독성이 높고 쉽게 이해할 수 있는 - 변경 영향이 한 부분으로 국한되는 - 코드와 일관성 있는 문서가 제공되는 사용자 관점의 좋은 소프트웨어 - .. 2023. 12. 18.
8. 유지보수 소프트웨어 개발에서 유지보수는 67%나 차지함 유지보수 타입 - Corrective 20%: 오류 수정 - Adaptive 20%: 환경변화 반영 - Perfective 60%: 새 기능 추가, 성능 개선을 위한 확장 활동 - Preventive: 미래의 유지보수를 용이하게 함 유지보수라고 하면 defect fix를 생각하지만 Corrective는 고작 20%에 불과함 Lehman의 원리 - SW는 계속 변경됨 - SW 복잡도도 계속 증가함 - 대규모 SW 유지보수에는 일정한 방향이 있음 - 대규모 SW는 안정화 상태인 경우가 많음 - 유지보수 수행시 기존 SW에 대한 친근성을 유지하려고 함 유지보수에 영향을 주는 요소 - 사용자: 불편, 오류의 개선을 위한 변경 요청 - 환경: 운용환경,조직환경 변화 .. 2023. 12. 18.
7. testing Verification - 정확한 요구사항에 부합하여 구현되었는지 - 요구사항 명세서대로 제품이 만들어지고 있는지 - 개발 중간중간 이루어짐 - 개발자 측면 Validation - 고객이 의도한 요구사항에 따라 구현되었음을 보장 - 고객이 의도한 환경이나 사용목적에 맞게 만들어짐을 보장 - 제품이 고객들이 원한것이 맞는지 - 원래 의도한 사용에 부합하는지 - 개발의 처음이나 끝에 이루어짐 - 고객/사용자 측면 이 둘을 V&V라고 함 Testing과 Debugging Testing Debugging 목적 알려지지 않은 결함의 발견 이미 알고 있는 결함의 수정 수행 시스템 내부 관련자 테스팅 팀 등 외부의 제3자 시스템 내부 관련자 주요 작업 숨겨진 결함 발견 결함의 정확한 위치 파악 결함의 타입 식별 결함.. 2023. 12. 18.
6. Implementation 코드 작성 또는 프로그래밍 설계의 최하위 상세화 과정임 코드 작성, 디버깅, 통합, 개발자 테스트 작업 포함 개발자의 코딩 스타일은 일의 효율에 영향 끼침 코드컨벤션 좋은 소프트웨어 코드의 6가지 공통점 - 가독성 - 자세한 주석 - 코드구조가 간결 - 변경에 탄력적 - 활용을 위해 관리할 수 있어야 함(유지보수성) - 코드가 원래 목적한 기능을 올바르게 수행 좋은 코드 작성을 위한 규칙 - 최적화보다는 가독성 우선 - 아키텍처를 우선 개발 - 테스트 커버리지를 고려 - 간단하고 단순하게 코딩(KISS: Keep It Simple and Stupid) 추상화나 패턴을 과도하게 적용시 오히려 더 복잡해질 수 있음. - 주석을 작성하되 보조적으로 사용: 메서드의 정의와 사용법 설명하는 간단한 주석 작성) -.. 2023. 12. 17.
5. 설계 좋은 설계의 조건 - 요구 분석 명세서 내용을 설계서에 모두 포함 - 유지보수가 용이하도록 추적 가능토록 함 - 변화에 쉽게 적응 - 시스템 변경으로 인한 영향이 최소화되도록 국지적이어야 함 - 설계서는 읽기 쉽고, 이해하기 쉬워야함 설계는 상위 설계: 아키텍처,데이터,인터페이스 정의, 사용자 인터페이스 설계 하위 설계: 모듈 설계, 자료구조 설계, 알고리즘 설계 로 나뉨 상위설계(예비 설계) - 아키텍처 설계: 시스템의 전체적 구조 설계(여러개의 서브시스템으로 구분) - 데이터 설계: 시스템에 필요한 정보를 자료구조와 DB설계에 반영 - UI설계 하위 설계 - 각 모듈의 실제적인 내부를 알고리즘 형태로 표현 - 인터페이스에 대한 설명,자료구조,변수 등 상세한 정보 작성 설계 - 추상화: 주어진 문제에서.. 2023. 12. 17.
4. 요구 사항 분석 SW개발의 목적: 개발된 소프트웨어의 고객 만족 고객 만족을 위한 특성 - 적시성: 빠른 출시를 통한 시장 점유 - 유연성: 다양한 환경에서 적응성 - 통합: 기존 시스템과 쉬운 통합 고객 만족의 개발 조건 - 고품질 - 기간 준수 - 예산 준수 요구사항: 개발 범위에서 시스템이 제공해야 하는 기능 요구 분석 명세서: what에 초점(not how) SW 요구 사항 정의를 위해 사용자의 요구 사항을 조사하고 확인하는 과정은 SW 개발 생명주기의 첫 단계로 개발 성패의 열쇠가 됨 요구 분석의 여려움 - 의사 소통 문제 - 계속 변하는 요구 사항 - 요구 사항간의 충돌, 일관성 결여 및 불일치 발생 - 애매모호한 요구 사항 요구사항 분석가의 역할 - 요구를 정확하고 완전하게 획득하기 - 다양한 참여자를 만족.. 2023. 12. 17.
3. 프로젝트 관리 Project management 프로젝트 목표를 효율적이고 효과적으로 달성하는 데 필요한 내적 환경 요소들을 준비하고 유지하는 활동 project management의 5단계 Initiation & conception(문제 정의) planning launch & execution monitoring & control project closure 1. Initiation & conception(문제 정의) 1-1) 비즈니스 니즈 및 목표, 개발 필요성 등 식별 개발의 첫 작업 무엇을 개발할 것인지 정의 개발 범위 결정 문제 정의를 위한 필요 사항: 배경지식, 운영 중인 시스템, 실무 담당자와 면담/자료수집 후 분석 1-2) 프로젝트 타당성에 대한 예비 조사 수행(feasibility analysis) 경.. 2023. 10. 23.
2. 소프트웨어 개발 생명 주기 Process 일이 처리되는 과정이나 공정 주어진 일을 해결하기 위한 목적으로, 그 순서가 정해져 수행되는 일련의 절차 소프트웨어를 정해진 기간동안 고객이 원하는 수준의 품질로 deliver하는 것이 목적 SW 프로세스의 3요소 소프트웨어 세부 작업들의 관계를 정의하는 절차와 방법 능력, 교육 및 동기가 부여된 인원 도구와 장비 소프트웨어 프로세스 모델 소프트웨어 개발 프로세스 프로세스: 작업(task)순서의 집합 + 제약 조건(일정, 예산, 자원)을 포함하는 일련의 활동 (좁은 의미: SW제품을 개발할 때 필요한 절차, 과정, 구조. 사용자의 요구사항을 SW시스템으로 구현하기 위한 일련의 활동) (넓은 의미: 절차,구조,방법, 도구, 참여자까지 모두 포함. SW개발 목적을 이루는데 필요한 통합적 수단).. 2023. 10. 23.
1. 소프트웨어 공학 소프트웨어 컴퓨터 프로그램 + 관련 문서들을 소프트웨어라고 한다. 소프트웨어 제품은 Generic market: 다양한 고객에게, 또는 Custom: 특정 고객에 특화된 것일 수 있다. 소프트웨어의 특징 - 보이지 않는다.(invisibility) - 고유한 복잡도는 줄어들 수 없다.(complexity) - 인풋과 타이밍이 불확실하다. - 새로운 것이 계속 생긴다.(changeability) - 100%자동화가 아님 - 소통이 요구된다. - 관리 이슈 발생 소프트웨어 엔지니어링은 효율적인 소프트웨어 생산의 복잡성의 모든 요소를 관리한다. 소프트웨어 프로그래밍 vs 소프트웨어 엔지니어링 소프트웨어 프로그래밍 - 혼자 개발 - 작은 사이즈 - 짧은 개발기간 - 개발에 포함되는 사항들(Architect = .. 2023. 10. 22.
728x90
반응형