소프트웨어 공학

시스템 개발 수명주기 내에서 작업하는 전문가, 학자 및 학생을위한 Q & A

5
임의 코드의 안전성을 프로그래밍 방식으로 평가할 수 있습니까?
안전한 코드에 대해 최근 많이 생각하고 있습니다. 스레드 안전. 메모리 안전. Segfault 안전 장치를 사용하여 폭발하지 마십시오. 그러나 문제의 명확성을 위해 Rust의 안전 모델을 진행 정의로 사용합시다. Rust의 필요성에 의해 입증 된 바와 unsafe같이 키워드 를 사용하지 않고 Rust에서 구현할 수없는 매우 합리적인 프로그래밍 아이디어가 있기 때문에 안전을 보장하는 것은 …

4
C ++ 큰 템플릿 구현을 처리하는 기본 방법
일반적으로 C ++ 클래스를 선언 할 때는 헤더 파일에 선언 만 넣고 구현을 소스 파일에 두는 것이 가장 좋습니다. 그러나이 디자인 모델은 템플릿 클래스에서 작동하지 않는 것 같습니다. 온라인을 살펴보면 템플릿 클래스를 관리하는 가장 좋은 방법에 대한 두 가지 의견이있는 것 같습니다. 1. 헤더의 전체 선언 및 구현. 이것은 매우 …

2
함수형 프로그래밍 언어는 부작용을 허용하지 않습니까?
선언적인 기능적 프로그래밍 언어 인 Wikipedia에 따르면 부작용을 허용하지 않습니다. 일반적으로 선언적 프로그래밍 은 부작용을 최소화하거나 제거하려고 시도합니다. 또한 Wikipedia에 따르면 부작용은 상태 변경과 관련이 있습니다. 따라서 기능적 프로그래밍 언어는 그런 의미에서 상태를 저장하지 않기 때문에 실제로 부작용을 제거합니다. 그러나 부작용 에는 또 다른 정의가 있습니다. 부작용 값을 반환하는 것 …

1
인소 스 빌드 및 소스 외부 빌드
내 (주로 C ++) 개발에서 오랫동안 소스 외부 빌드를 사용했습니다. 즉, 내 소스는 보통에 앉아 /project/src디렉토리와는 라이브 구축 /project/build/bin/release, /project/build/bin/debug디렉토리. 소스 파일을 중간 파일에서 깨끗하게 유지하고 모든 바이너리에 대해 하나의 위치가 있으며 패키징이 쉽고 청소가 쉽고 버전 관리가 더 쉬워서이 작업을 수행했습니다. (아무것도 놓쳤습니까?) 소스 내 빌드를 사용하는 (대형) 프로젝트를 …

2
부모 리소스를 찾을 수 없을 때 POST에 적합한 응답 상태 코드는 무엇입니까?
나는 다음 끝점을 가지고 있습니다. a/{id}/b bwith with 보내는 POST요청 을 작성하려고 합니다. 만약 a주어진와 {id}내가 함께은 응답해야 찾을 수 없습니다 404 NOT_FOUND또는 어쩌면로 409 CONFLICT? 평범한 것을 다루는 a/{id}것이 중요합니다. 여기서는 하위 리소스가 사용됩니다.

2
여러 앱 인스턴스로 데이터베이스 마이그레이션을 안전하게 실행하는 방법은 무엇입니까?
고속 (1 초 미만) 및 느린 데이터베이스 마이그레이션 (> 30 초)이 혼합 된 응용 프로그램이 있습니다. 현재 CI의 일부로 데이터베이스 마이그레이션을 실행하고 있지만 CI 도구는 여러 환경에서 앱에 대한 모든 데이터베이스 연결 문자열을 알고 있어야합니다. 응용 프로그램을 시작할 때 자체 데이터베이스 마이그레이션을 실행하도록이 프로세스를 변경하려고합니다. 상황은 다음과 같습니다. 이 애플리케이션의 …

5
실제 값을 나타내는 상수를 업데이트하는 것이 공개 폐쇄 원칙을 위반합니까?
근로자의 연간 순소득을 계산하는 수업이 있습니다. 세금 비율을 나타내는 상수가 있습니다. 그러나 어느 날 세율이 변경되었으므로 코드를 수정해야합니다. 이 상수를 수정하는 행위 는 클래스가 수정을 위해 폐쇄되어야한다고 가정하기 때문에 공개 폐쇄 원칙 위반을 나타 냅 니까?

3
런타임에 함수를 가져올 수 있도록 C ++ 프로그램을 설계하는 방법은 무엇입니까?
오늘 저는 특정 소프트웨어 아키텍처를 실현하기 위해 C ++의 기능에 대해 질문하고 싶습니다. 물론 검색을 사용했지만 직접 연결된 답변을 찾지 못했습니다. 기본적으로, 나의 목표는 사용자가 임의로 구성된 물리적 시스템, 예를 들어 운전 차량의 모델링 및 시뮬레이션을 가능하게하는 프로그램을 구축하는 것입니다. 실제 모델 라이브러리 (클래스 내의 함수)가 있다고 가정합니다. 각 함수는 …

6
추상 클래스에는 어떤 코드가 포함되어야합니까?
나는 최근에 추상 클래스 사용에 대해 고민하고 있습니다. 때로는 추상 클래스가 미리 만들어져 파생 클래스가 작동하는 방식의 템플릿으로 작동합니다. 이는 다소 높은 수준의 기능을 제공하지만 파생 클래스에서 구현할 특정 세부 정보를 생략한다는 것을 의미합니다. 추상 클래스는 몇 가지 추상 메소드를 배치하여 이러한 세부 사항의 필요성을 정의합니다. 이러한 경우 추상 클래스는 …

2
SOA와 마이크로 서비스의 실제 차이점
기권 나는 누군가의 발가락을 밟거나 개념 애호가를 불쾌하게하지 않기를 바랍니다. 배경 명확한 답을 찾지 않고 Service Oriented Architecture와 Microservices의 실제 차이점을 찾고 있습니다. 나는 다음과 같은 것을 읽었다. SOA의 부작용 반 패턴 인 SOA 마이크로 서비스는 SOA의 실패를 해결하기 위해왔다 ESB는 실제로 ESB가 아니며 EAI입니다. 메시지 브로커에 대한 과도한 의존 …

4
준비 환경과 UAT 환경의 차이점은 무엇입니까?
솔루션을 개발하는 동안 적어도 3 가지 환경이 있어야한다는 것을 알고 있습니다. 개발 : 프로그래머는 언제든지 코드를 빠르게 테스트하고 다른 변경 사항과 통합하기 위해 언제든지 변경 및 푸시 변경을 자유롭게 할 수 있습니다. 이는 테스트 데이터베이스 및 서비스에 연결되어 있습니다. UAT : 하드웨어와 관련하여 프로덕션 환경의 "가능한 한"사본을 포함해야하므로 개발자가 경의를 …

3
여러 스위치 케이스로 애플리케이션을 리팩터링하는 방법은 무엇입니까?
정수를 입력으로 사용하고 입력을 기반으로 다른 클래스의 정적 메소드를 호출하는 응용 프로그램이 있습니다. 새로운 숫자가 추가 될 때마다 다른 케이스를 추가하고 다른 클래스의 다른 정적 메소드를 호출해야합니다. 이제 스위치에 50 개의 케이스가 있으며, 다른 케이스를 추가해야 할 때마다 나는 소리 쳤다. 더 좋은 방법이 있습니까? 나는 몇 가지 생각을 하고이 …

3
컴파일러가 일반적으로 설치된 플랫폼의 실행 파일 만 생성하는 이유는 무엇입니까?
저는 C ++ 개발자이며 크로스 플랫폼 개발을 더 잘 이해하기 위해 컴파일러의 일부 구현 세부 사항과 OS 별 바이너리를 정확히 만드는 방법을 더 잘 이해하려고합니다. 내 연구 중에 적어도 한동안 특정 플랫폼에 대해 다운로드 한 대부분의 컴파일러가 해당 플랫폼에 대해 컴파일 된 바이너리 만 있다는 것을 깨달았습니다. 따라서 Windows 용 …

1
OSS 프로젝트의 통합 테스트-인증으로 타사를 처리하는 방법은 무엇입니까?
내 (오픈 소스) 취미 프로젝트 중 하나는 GitHub, Bitbucket 등에서 리포지토리의 오프라인 백업을 수행하는 백업 도구입니다. 리포지토리 목록을 가져 오기 위해 호스팅 업체의 API를 호출 한 다음 Git / Mercurial / 무엇을 사용하여 복제 / 리포지토리를 로컬 컴퓨터로 가져옵니다. 그래서 인증을 통해 GitHub API를 호출하는 통합 테스트가 있습니다. (그리고 복제 …

1
기능적 스타일은 의존성 조롱에 어떻게 도움이됩니까?
최근 Java Magazine 호에서 Kent Beck과의 인터뷰에서 : 빈 스톡 : 마이크로 서비스에 대해 논의 해 보자. 마이크로 서비스에 대한 테스트 우선은 일부 서비스가 작동하기 위해서는 다른 서비스가 많이 필요하다는 점에서 복잡해질 것 같습니다. 동의하십니까? Beck : 하나의 큰 클래스 나 많은 작은 클래스를 갖는 것과 같은 트레이드 오브 트레이드 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.