728x90 반응형 소프트웨어 공학27 기본적인 결함내성(Fault Tolerance) 소프트웨어 기술 기본적인 결함내성 소프트웨어 기술 Fault Tolerance(결함 내성)은 소프트웨어 시스템의 운영 중 장애나 오류가 발생했을 때에도 계속해서 작동할 수 있도록 하는 소프트웨어 시스템의 속성을 말한다. 다음은 소프트웨어 시스템의 내결함성을 향상시키는 데 사용되는 몇 가지 기본 기술이다. 1. 이중화 소프트웨어 시스템의 중요한 구성 요소를 복제하여 한 구성 요소가 실패 또는 오류가 발생하면 다른 구성 요소가 인계하여 시스템을 계속 실행할 수 있도록 하는 방법이다. 이는 서버 또는 스토리지 시스템과 같은 하드웨어를 이중화하여 사용하거나 중복 소프트웨어 구성 요소를 생성하는 방법들이 있다. 2. 체크포인트 소프트웨어 시스템의 상태를 주기적으로 저장하여 오류가 발생할 경우 시스템을 이전 상태로 복원할 수 있도.. 2023. 3. 26. 소프트웨어 프로젝트 관리자의 역할 및 책임 소프트웨어 프로젝트 관리자의 역할 및 책임 소프트웨어 프로젝트 관리자는 팀 내에서 소프트웨어 프로젝트를 관리하고 프로젝트를 성공적으로 완료하는 데 있어 중요한 역할을 담당하는 가장 중요한 사람이다. 프로젝트 관리자는 이러한 일을 하기 위해 많은 어려운 상황에 직면해야 한다. 실제로 프로젝트 관리자의 업무 책임 범위는 팀의 사기를 높이는 것과 같은 보이지 않는 활동에서부터 눈에 잘 띄는 고객 프레젠테이션에 이르기까지 다양하다. 대부분의 관리자는 프로젝트 제안서 작성, 프로젝트 비용 추정, 스케줄링, 프로젝트 인력 배치, 소프트웨어 프로세스 조정, 프로젝트 모니터링 및 제어, 소프트웨어 구성 관리, 리스크 관리, 관리 보고서 작성 및 프레젠테이션, 고객과의 접촉을 담당한다. 프로젝트 관리자의 업무는 크게 두.. 2023. 3. 25. 통합 리스크 관리 SDLC(Software development life cycle)에서 통합 리스크 관리 소프트웨어 개발 수명 주기(SDLC)는 소프트웨어 개발 프로세스의 각 단계에서 수행되는 작업을 정의하기 위한 개념적 모델이다. SDLC에는 다양한 모델이 있지만, 일반적으로 SDLC는 다음과 같은 단계로 구성된다. 1. 예비 분석(Preliminary Analysis) 예비 분석은 프로젝트의 타당성과 실행 가능성을 결정하기 위해 높은 수준의 평가가 수행되는 프로젝트의 초기 단계에서 수행한다. 이 단계의 목적은 정보를 수집하고 프로젝트와 관련된 잠재적인 위험과 이점을 평가하는 것이다. 2. 시스템 분석 및 요구사항 정의 시스템 요구 사항 분석, 시스템의 기능적 및 비기능적 요구 사항 정의, 이러한 요구 사항을 충족하는.. 2023. 3. 25. 프로젝트 관리 프로세스 프로젝트 관리 프로세스 프로젝트 관리는 소프트웨어 프로젝트를 계획, 모니터링 및 제어하며 범위를 식별하고 작업을 추정하며 프로젝트 일정을 관리하는 활동이다. 또한 팀에 프로젝트 진행 상황을 최신 상태로 유지하고 문제를 처리하고 해결책을 논의하는 책임도 있다. 프로젝트 관리 프로세스는 다음의 4단계로 구성된다. 타당성 조사 타당성 조사는 프로젝트의 실행 가능성을 결정하기 위해 시스템의 요구 사항을 평가하는 것이다. 경제적 타당성, 운영 타당성 및 기술적 타당성과 같은 다양한 영역을 다룬다. 주요 목표는 시스템이 성공적으로 구현될 수 있는지 여부를 평가하는 것이다. 타당성 조사 프로세스에서는 사용자가 제공한 세부 정보와 기타 도메인별 세부 정보를 고려한다. 타당성 조사의 결과는 프로젝트를 수행해야 하는지 여.. 2023. 3. 18. 결합도(Coupling)와 응집도(Cohesion) 결합도(Coupling)와 응집도(Cohesion) 소프트웨어 개발 수명 주기의 설계 단계의 목적은 SRS(소프트웨어 요구 사항 사양) 문서에 제시된 문제에 대한 해결책을 제시하는 것이다. 설계 단계의 결과는 소프트웨어 설계 문서(SDD)다. 결합도와 응집도는 소프트웨어 시스템 설계의 품질을 측정하는 데 사용되는 소프트웨어 공학의 두 가지 핵심 개념이다. 결합도는 소프트웨어 모듈 간의 상호 의존성의 정도를 나타낸다. 높은 결합도는 모듈들이 긴밀하게 연결되어 있으며, 하나의 모듈을 변경하면 다른 모듈에도 영향을 미칠 수 있다. 낮은 결합도는 모듈들이 독립적이며, 하나의 모듈을 변경해도 다른 모듈에는 영향을 미치지 않는다. 응집도는 모듈 내 요소들이 하나의 명확한 목적을 달성하기 위해 함께 작동하는 정도를 .. 2023. 3. 11. 사용자 인터페이스(UI/UX) 설계 사용자 인터페이스 설계 사용자 인터페이스(User interface)는 사용자가 소프트웨어를 사용하기 위해 상호 작용하는 애플리케이션의 프런트엔드 뷰(View)이다. 소프트웨어의 사용자 인터페이스가 직관적이고 사용하기 쉽다면 해당 소프트웨어의 활용도가 더 많아진다. 사용자 인터페이스는 소프트웨어와 사용자 사이의 연결고리이기 때문에, 사용자들이 원하는 작업을 더 빠르고 쉽게 수행할 수 있도록 도와준다. 또한, 적절한 디자인과 레이아웃은 사용자들이 소프트웨어를 더 즐겁게 사용할 수 있게 해 주며, 사용자 경험을 향상시키는 데 큰 역할을 한다. 다음은 소프트웨어 사용자 인터페이스를 더 인기있게 만들 수 있는 몇 가지 특성이다. 직관성(Intuitive): 직관적인 사용자 인터페이스는 쉽게 탐색하고 이해할 수 .. 2023. 3. 10. SDLC V-Model SDLC V-Model V-모델은 프로세스가 V자 모양으로 순차적으로 실행되는 SDLC 모델의 한 유형이다. 확인 및 검증 모델이라고도 한다. 각 해당 개발 단계에 대해 테스트와 연관성을 기반으로 한다. 각 단계의 개발은 직접적으로 해당하는 테스트 단계와 연결된다. 다음 단계는 이전 단계가 완료된 후에만 시작된다. 즉, 각 개발 활동에는 해당하는 테스트 활동이 있다. V-Model은 소프트웨어 개발 프로세스의 체계적이고 시각적인 표현을 제공하는 SDLC(소프트웨어 개발 수명 주기) 모델이다. "V"의 두 다리는 소프트웨어 개발 프로세스가 요구사항 수집 및 분석에서 설계, 구현, 테스트 및 유지보수에 이르기까지 진행되는 과정을 나타내는 "V" 모양의 아이디어를 기반으로 한다. V-모델은 소프트웨어 개발에 .. 2023. 3. 8. Extreme Programming (XP) 익스트림 프로그래밍(XP) 익스트림 프로그래밍(XP)은 애자일 모델의 가장 중요한 소프트웨어 개발 프레임워크 중 하나이다. 소프트웨어 품질과 고객 요구사항에 대한 대응성을 개선하는 데 사용된다. 익스트림 프로그래밍 모델은 프로그램 개발 프로젝트에서 과거에 잘 작동했던 모범 사례를 극단적인 수준으로 참조할 것을 권장한다. 익스트림 프로그래밍에서 모범 사례를 기반으로 실행 되어야 한다. 익스트림 프로그래밍 모델에서 인정받은모범 사례 중 일부는 다음과 같다: 코드 리뷰: 코드 리뷰는 효율적으로 오류를 검출하고 수정할 수 있다. 이를 위해 코딩하고 검토하는 작업을 한 시간마다 역할을 바꾸며 함께 수행하는 두 명의 프로그래머 쌍으로 수행되는 페어 프로그래밍을 제안한다. 테스팅: 코드 테스팅은 오류를 제거하고 신뢰.. 2023. 3. 6. 애자일 개발(Agile Software Development) 애자일 소프트웨어 개발 애자일 소프트웨어 개발은 유연성, 협업, 고객 만족도를 중요시하는 소프트웨어 개발 방법론이다. 개인과 상호 작용, 작동 소프트웨어, 고객 협업 및 변화에 대응하는 것을 우선시하는 소프트웨어 개발 원칙인 Agile 매니페스토를 기반으로 한다. 애자일 소프트웨어 개발(Agile Software Development)은 소프트웨어 개발에 대한 반복적이고 점진적인 접근 방식으로, 작동하는 제품을 신속하고 자주 제공하는 것을 중요하게 생각하는 개발 방법론이다. 개발 팀과 고객 간의 긴밀한 협업을 통해 제품이 고객의 요구와 기대에 부합하도록 보장한다. 애자일 방법론에서 개발은 다음과 같이 진행된다. 요구 사항 정의: 고객 요구 사항을 수집하고 이를 작은 작업 단위로 분해한다. 작업 단위는 스.. 2023. 3. 5. RAD 모델과 전통적인 SDLC 비교 RAD 모델과 전통적인 SDLC 비교 RAD 모델에 대한 자세한 설명은 여기를 참조. RAD 전통적인 SDLC 단계가 잘 정의되어 있지 않다. 체계적인 방법론과 잘 정의된 단계. 접근 방식이 반복적이기 때문에 애플리케이션 개발의 다양한 단계를 검토하고 반복할 수 있다. 애플리케이션 개발을 위한 예측 가능하고 유연하지 않으며 엄격한 접근 방식을 따른다. 자동화된 RAD(빠른 애플리케이션 개발) 도구와 기술의 사용은 더 빠르고 쉬운 프로토타입을 만들어 최종 제품을 개발하는 데 사용될 수 있다. 프로토타입 어렵고 더 많은 시간과 노력이 필요할 수 있다. 모든 요구사항을 미리 알 필요는 없다. 모델의 엄격함으로 인해 프로젝트를 시작하기 전에 모든 요구사항을 알아야 한다. 변경사항을 수용하기가 더 쉽다. 모델의 .. 2023. 3. 4. 증분형 프로세스 모델 증분형 프로세스 모델 증분 프로세스 모델은 연속 버전 모델이라고도 한다. 먼저, 몇 가지 기본 기능만 구현하는 간단한 작업으로 시스템을 구축한 후 고객에게 배포한다. 그런 다음 원하는 시스템이 구축될 때까지 연속적이고 반복적으로 버전을 구현하고 고객에게 배포한다. A, B 및 C는 점진적으로 개발 및 배포되는 소프트웨어의 모듈이다. 라이프사이클 활동 소프트웨어 요구사항은 먼저 점진적으로 구성하고 배포할 수 있는 여러 모듈로 나뉜다. 계획은 전체 개발 관점에서 계획이 아니라 다음 증가분만을 위해 계획한다. 따라서 고객의 필요에 따라 버전을 수정하는 것이 더 쉽다. 개발 팀은 먼저 시스템의 핵심 기능(다른 기능의 서비스가 필요하지 않음)을 개발한다. 각 증분에서 핵심 기능이 전체 개발되면 후속 버전에 새로운.. 2023. 3. 1. 반복적 폭포수 모델 반복적 폭포수 모델 실제 소프트웨어 개발 프로젝트에서 전통적인 폭포수 모델은 사용하기 어렵다. 따라서 반복적 폭포수 모델은 실제 소프트웨어 개발 프로젝트에서 사용할 수 있도록 전통적인 폭포수 모델에 필요한 변경 사항을 통합한 것으로 생각할 수 있다. 소프트웨어 개발의 효율성을 높이기 위해 일부 변경이 이루어진다는 점을 제외하면 전통적인 폭포수 모델과 거의 같다. 반복적 폭포수 모델은 모든 단계에서 이전 단계까지의 피드백 경로를 제공하는데, 이는 전통적인 폭포수 모델과의 주요 차이점이다. 반복적 폭포수 모델에 의해 도입된 피드백 경로는 아래 그림과 같다. 이후 단계에서 오류가 감지되면 이러한 피드백 경로를 통해 특정 단계에서 프로그래머가 저지르는 오류를 수정할 수 있다. 피드백 경로를 사용하면 오류가 커밋.. 2023. 2. 28. 이전 1 2 3 다음 728x90 반응형