소프트웨어 공학

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

3
왜 Swift가 서브 클래스의 적절한 필드를 먼저 초기화합니까?
Swift 언어에서 인스턴스를 초기화하려면 해당 클래스의 모든 필드를 채우고 superconstructor를 호출해야합니다. class Base { var name: String init(name: String) { self.name = name } } class Derived: Base { var number: Int init(name: String, number: Int) { // won't compile if interchange lines self.number = number super.init(name) } } 필자의 …

3
DI / IoC 컨테이너와 팩토리 : 어플리케이션을 어디서 구성하고 왜합니까?
소프트웨어를 구성하기 위해 DIC / IoC 레지스트리를 사용하는시기와 팩토리를 사용하는시기 및 두 가지 접근 방식의 추론을 파악하려고합니다. 구조 맵을 DI 컨테이너 (DIC)로 사용하고 있는데, 이는 레지스트리를 사용하여 쉽게 구성 할 수 있습니다. DIC에서 실제로 등록 된 모든 객체는 정적이므로 의미가 있습니다 .DIC가 구성되고 DIC에서 싱글 톤으로 구성되면 런타임에 구현 / …

2
Apollo-11 : 링커 대신 포함 사용
최근에 디지털화되어 저장소로 바뀌어 원래 Apollo 11 안내 컴퓨터 소스 코드가 Github 에서 볼 수있게되었습니다 . 에서 MAIN.agc 의 REPO 저자의 의견 그들은 그 거대한 모 놀리 식 소스 코드를보다 작고 관리하기 쉬운 덩어리 (예 : 개별 소스 # 파일)로 나눕니다. 조금 후에 저자는 말합니다 소스 파일을 개별적으로 조립 한 …

4
조기에 최적화하고 있습니까?
저는 현재 C ++에서 구성 요소 기반 아키텍처의 디자인 단계에 있습니다. 현재 디자인에는 다음과 같은 기능 사용이 포함됩니다. std::vector의 std::shared_ptr구성 요소를 보유 std::dynamic_pointer_cast std::unordered_map<std::string,[yada]> 컴포넌트는 그래픽, 물리, AI, 오디오 등과 같은 게임과 같은 소프트웨어에 필요한 다양한 아이템의 데이터와 로직을 나타냅니다. 캐시 미스가 성능에 어려움을 겪는 곳을 모두 읽었으므로 몇 가지 …

1
Redux의 원칙을 OO 언어에 적용하는 것이 합리적입니까?
Redux는 본질적으로 기능적 프로그래밍이며 많은 의미가 있습니다. 다른 프로젝트에서 Javascript가 아닌 OOP 언어로 되돌아 가면서 단일 상태 객체, 해당 상태의 일부에 작용하는 감속기, 상태를 수정하는 의미 론적 비즈니스 계층과 같은 동일한 원칙을 적용하고 싶습니다. 내 프로젝트는 C ++에 있으며 응용 프로그램 디자인에 기능적인 redux 스타일 접근 방식을 적용하고 적용하는 것이 …

2
기능적 언어의 2 차원 보드 게임을위한 데이터 구조
함수형 프로그래밍 언어 Elixir에서 간단한 MiniMax 구현을 만들고 있습니다. 완벽한 지식 게임 (tic tac toe, connect-four, checker, chess 등)이 많으므로이 구현은 이러한 게임 중 하나에 대한 게임 AI를 만들기위한 프레임 워크가 될 수 있습니다. 그러나 내가 직면하고있는 한 가지 문제는 기능적 언어로 게임 상태를 올바르게 저장하는 방법입니다. 이러한 게임은 주로 …

6
더 큰 프로젝트에서 정적 타이핑은 실제로 어떻게 도움이됩니까?
스크립팅 프로그래밍 언어 사이트의 메인 페이지에서 호기심을 느끼면서 다음과 같은 구절이 발생했습니다. 시스템이 너무 커서 머리에 들어 가지 않으면 정적 유형을 추가 할 수 있습니다. 이것은 많은 종교에서 정적, 컴파일 된 언어 (Java와 같은)와 동적이고 해석 된 언어 (주로 파이썬은 더 많이 사용되지만 대부분의 스크립팅 언어간에 공유되는 "문제") 사이의 전쟁에서 …

3
REST 용어에서 자원과 표현의 차이점은 무엇입니까?
REST에 대한 내 이해는 모델링 서비스 작업을 상태 표현으로 사용하고 HTTP를 사용하여 한 상태에서 다른 상태로 전환하는 것입니다. 나는 커뮤니티가 잘 존중하는 현명한 개발자 / 건축가 인 지미 보가드 (Jimmy Bogard) 의이 기사 를 읽었을 때까지 리소스를 서비스 측 상태의 표현으로 항상 이해했습니다 . 해당 게시물에서 특정 진술을 인용하려면 표현은 …
9 rest  api  api-design 

1
C에서 C ++ 템플리트 유형 API의 관용적 랩핑
C 함수의 데이터 저장소 (Hazelcast)에 대한 액세스를 제공하는 C ++ API를 래핑하여 데이터 저장소를 C 전용 코드에서 액세스 할 수도 있습니다. 맵 데이터 구조를위한 Hazelcast C ++ API는 다음과 같습니다. auto map = hazelcastClient->client->getMap<int, string>(mapName); map.put(key, value); 템플릿 유형 key및 value매개 변수를 사용합니다. C에서 사용할 수있는 템플릿이 없으므로 각 getMap<T, …
9 c++  c  api-design 

6
에지 케이스에 대한 수락 기준
저는 민첩한 팀의 제품 소유자입니다. PO 수락 테스트를 수행 할 때 일반적으로 몇 가지 중요한 사례를 시도하는 것이 좋습니다. 내가 무언가를 발견 한 다음 개발자에게 다시 전달하는 것은 드문 일이 아닙니다. 그의 이야기를 거부하면 개발자 중 한 사람으로부터 밀려 나고 있습니다. 그는 내가 이야기에서 설명하는 것만 코딩하는 경향이 있기 때문에, …

3
조사 할 때 어떤 소프트웨어 방법론을 따라야합니까?
나는 일반적으로 실험의 데이터를 분석하고 수행해야 할 일반적인 단계 스키마가 있지만 실험의 세부 사항이나 뒤에있는 질문에 맞게 조정해야 할 수도 있습니다. 나는 보통 유일한 코딩입니다. 나는 위키 백과를 보았지만 어떤 방법론을 사용할 수 있는지 확실하지 않습니다. 부분적으로는 아무것도 따르지 않았기 때문에 부분적으로는 데이터를 탐색하고 데이터가 어떻게 보이는지 확인하기 때문에 때로는 …

1
GPL 라이센스 프로젝트에서 MIT 라이센스 코드를 사용하는 경우 어떻게해야합니까?
GNU Affero GPL에 따라 라이센스를 계획하고있는 개인 프로젝트를 진행하고 있습니다. 그러나 MIT에서 라이센스를 받아 실제로 사용하려는 코드를 찾았지만 라이센스에 대해 어떻게해야하는지 잘 모르겠습니다. 나머지 코드는 GNU Affero에서 내 것입니다. MIT에서 라이센스를 얻은 소스 파일과 헤더 파일입니다. 프로그래머 가 MIT / GPL 코드와 함께 작동하는 것에 대해이 Q를 읽었으며 GPL 라이브러리를 …

1
복잡한 작업 일정 모델링
대표하고 자동화하려는 실제 문제가 있습니다. 나는 그것을 다음과 같이 단순화하고 추상화했다. n 개의 작업 장소가 있습니다 (P1, P2, ..., Pn). 각 장소, Pn에는 열쇠 Kn이 있습니다. 노동자는 m 명 (W1, W2, ..., Wm)입니다. Pn에서 일하기 위해서는 근로자가 Kn을 유지해야합니다. 각 키는 작업자가 보유하거나 E, Exchange에 남아있을 수 있습니다. 작업자는 언제든지 …

4
경계 컨텍스트의 경계를 명확하게 정의하는 방법
한 달 정도 DDD를 읽고 연구 한 후, 나는 내 자신의 프로젝트를 시작하기로 결정하고 이러한 제한된 맥락으로 DDD를 만들었습니다.> 고객 제품 명령 청구 각 경계 컨텍스트에는 프리젠 테이션 계층, 도메인 계층, 영구 계층으로 나머지 API가 있습니다. 지금까지는 코드가 원활하게 실행되지만 모 놀리 식 세계에서 왔지만 여전히 다음을 알아 내려고 노력하고 …

5
반환 유형이 오버로드되지 않는 이유는 무엇입니까? (적어도 일반적으로 사용되는 언어로)
모든 프로그래밍 언어에 대해 잘 모르겠지만 일반적으로 반환 유형을 고려하여 메서드를 오버로드 할 가능성이 있습니다 (인수가 동일한 숫자 및 유형이라고 가정). 나는 이와 같은 것을 의미한다 : int method1 (int num) { } long method1 (int num) { } 그것은 프로그래밍에 큰 문제가 아니라 어떤 경우에는 그것을 환영했을 것입니다. 이러한 …

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