소프트웨어 공학

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

4
클래스의 복잡성 감소
몇 가지 답변 을보고 Google에서 검색했지만 유용한 정보를 찾을 수 없었습니다 (예 : 불편한 부작용이 없음). 내 문제는 요약하자면, 나는 객체가 있고 그것에 대해 긴 일련의 작업 을 수행해야한다는 것입니다. 차를 만드는 것과 같은 일종의 조립 라인이라고 생각합니다. 이러한 객체는 Method Objects 라고 합니다 . 따라서이 예제에서는 어느 시점에서 installWithSeat, …

3
MDSE (Model Driven Software Engineering) 란 정확히 무엇입니까?
나는 오늘 infoq의 약어 MDSE 와 맞서게 되었다. MDSE는 소프트웨어 엔지니어가 요구 사항, 아키텍처 및 디자인 정보가 최대로 정보의 "엔트로피"로 정렬되고 보존되는 추상화 수준에서 작업 할 수 있도록하는 것입니다. ( "디자인 작업 제품"이라고 부릅니다). 또한 MDSE는 엔지니어에게 주로 "디자인 작업 제품"이라는 용어를 사용하여 디자인을 검증하고 검증 할 수있는 수단을 제공해야합니다. …

1
Guice에서 @ImplementedBy 주석의 동기는 무엇입니까?
최근 Google Guice@ImplementedBy 에서 사용할 수 있는 주석 에 대해 읽었습니다 . 이를 통해 프로그래머는 인터페이스와 구현 간의 바인딩을 지정하여 향후 의존성 주입에 사용할 수 있습니다. JIT (Just-In-Time) 바인딩 의 예입니다 . 다음 구문을 사용하여 모듈에서 명시 적 바인딩을 정의하는 데 꽤 익숙합니다. bind(SomeInterface.class).to(SomeInterfaceImplementation.class); 설명서에 따르면 이는 다음 @ImplementedBy주석 사용과 …

3
회원 : 고유 ID와 도메인 개체 사용
메소드 / 함수 매개 변수로 도메인 객체 또는 고유 ID를 메소드 매개 변수로 사용 해야하는지 여부에 대한 몇 가지 유용한 답변을 얻은 후 식별자 대 도메인 객체를 메소드 매개 변수로 사용 하면 비슷한 질문이 있습니다. 이 커버). 고유 ID를 멤버로 사용하고 개체를 멤버로 사용하는 장단점은 무엇입니까? Scala / C # …

1
소셜 네트워크 알림 시스템
배경 소셜 네트워킹 기능이 포함 된 클라이언트 용 앱을 개발 중입니다. 나는 원래 모바일 프론트 엔드를 개발하고 있었지만 상황에 따라 백엔드 개발을 담당하게되었습니다. 일반적으로 Google 시스템을 통해 사용자는 소셜 네트워크에서 예상 한대로 다른 사용자를 팔로우하고 팔로우중인 사용자에 대한 알림을받을 수 있습니다. 주의 할 점은 대부분의 사용자 기반이 이러한 개인 중 …

1
일류 연속체가 현대 객체 지향 프로그래밍 언어에 유용합니까?
연속은 함수형 프로그래밍 언어 (예 : ContHaskell 의 모나드)에서 매우 유용 합니다. 명령형 코드에 대해 단순하고 규칙적인 표기법을 허용하기 때문입니다. 또한 누락 된 언어 기능 (예 : 예외, 코 루틴, 녹색 스레드)을 구현하는 데 사용할 수 있기 때문에 일부 오래된 명령형 언어에서도 유용합니다. 그러나 이러한 기능을 내장 지원하는 현대적인 객체 …

2
할당없이 상태 유지
함수형 프로그래밍을 배우고 있으며 할당을 사용하지 않고 특정 시나리오를 구현하는 방법을 이해하는 데 어려움이 있습니다. 다음의 간단한 문제는 혼란을 요약합니다. 주어진 데이터 구조의 변경에 대한 이벤트를 수신하고이 데이터 구조가 특정 상태에 도달하면 이벤트를 생성하는 프로그램을 작성하십시오. 그래서 내가 유지하는 데이터 구조의 사본이 있습니다. datastructure_copy::DataStructure 변경되면 시작되는 이벤트 스트림이 있습니다. datastructure_changes::Stream …

2
HTTP 요청 / 응답 객체를 변경할 수 없습니까?
대부분의 웹 응용 프로그램은 요청 / 응답 패러다임을 기반으로하는 것이 안전하다고 생각합니다. PHP는 이러한 객체를 공식적으로 추상화 한 적이 없습니다. 한 그룹이 이것을 변경하려고합니다 : https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md 그러나 그들은 불변성 문제에 대해 부수적으로 추적했습니다. 한편으로 요청 / 응답 객체는 일반적으로 수명주기 동안 거의 변경이 필요하지 않습니다. 반면에 응답 객체는 특히 HTTP …

3
공개 소스 프로그램이 아닌 경우 공개 소스 모듈로 클러스터 크기 제한
저는 고성능 컴퓨팅에 크게 의존하는 학술 연구소에서 일하고 있습니다. 10 년 동안 우리는 매우 잘 알려져 있으며 매우 큰 클러스터에서 실행될 수있는 자체 포트란 코드를 개발했습니다. 더 큰 리서치 커뮤니티가 코드의 혜택을 받도록하기 위해 오픈 소스로 만드는 것을 고려하고 있습니다. 그러나 우리의 자금은 우리가 코드로 수행 할 수있는 연구에 크게 …

1
파이썬에서 예외를 언제 서브 클래 싱해야합니까?
내 코드에는 예외를 제기하는 약 7 곳이 있습니다. 이러한 예외는 모두 동일하게 처리됩니다. 오류를 로그 파일에 인쇄하고 소프트웨어 상태를 기본값으로 되 돌린 후 종료합니다. 코드를 검토하는 동안 내가 중요하게 생각하는 수석 엔지니어는 이러한 예외를 모두 서브 클래 싱해야한다고 말했다. 그의 주장은 미래에 우리는 예외를 다르게 처리하기를 원할 것이고 더 쉬울 …

4
파이썬 생성기와 함수가 왜“def”키워드를 공유합니까?
다음을 고려하세요: def some_function(): return 1 def some_generator(): yield 1 위의 코드 some_function에서 함수 some_generator이며, 발전기입니다. 그들은 매우 비슷해 보입니다. 코드를 읽을 때 발생하는 문제 yield는 실제로 키워드가 함수인지 아니면 발전기인지를 결정하기 전에 키워드를 찾는 "기능"의 모든 줄을 스캔해야한다는 것입니다! 발전기에 다른 키워드를 사용하는 것이 더 합리적이라고 생각합니다. gen some_generator(): …

1
의존성 홍보 전략 : 사일로 또는 조정?
우리는 서로 상호 의존하는 많은 앱과 웹 서비스 (일부 공개 제품, 일부 내부 및 개인 "백엔드")를 보유하고 있습니다. 이러한 구성 요소 각각에는 4 가지 환경이 있습니다 (특정 목적을 수행하는 서버 / 노드 클러스터). 비 생산 DEV-CI가 푸시 변경을 구축하는 통합 개발 환경; 엔지니어가 로컬에서 재현 할 수없는 찾기 어려운 버그를 …

1
수다스러운 인터페이스를 피하는 방법
배경 : 서버 응용 프로그램을 설계하고 다른 하위 시스템에 대해 별도의 dll을 만듭니다. 일을 단순화하기 위해 두 개의 하위 시스템이 있다고 가정 해 봅시다. 1) Users2)Projects 사용자의 공용 인터페이스에는 다음과 같은 방법이 있습니다. IEnumerable<User> GetUser(int id); 그리고 프로젝트의 공용 인터페이스에는 다음과 같은 방법이 있습니다. IEnumerable<User> GetProjectUsers(int projectId); 예를 들어 특정 …

3
데이터베이스에서 독점 아크 란 무엇이며 왜 악한가?
나는 stackoverflow에서 개발자 Q & A가 저지른 가장 일반적인 데이터베이스 디자인 실수를 읽고있었습니다 . 처음에는 독점 아크에 대한 문구가있었습니다. 배타적 아크는 둘 이상의 외래 키를 사용하여 테이블을 만들 때 흔히 발생하는 실수입니다. 단 하나의 키만 null이 될 수 없습니다. 큰 실수. 우선 데이터 무결성을 유지하는 것이 훨씬 더 어려워집니다. 결국 …

2
스칼라 컴파일러가 봉인되지 않은 클래스 / 특성에 대해 패턴 일치 경고를 표시 할 수없는 이유는 무엇입니까?
내가 사용하는 경우 취소 밀봉 trait또는 abstract class스칼라 후 사용 패턴 매칭을 궁금해 사용할 수 있습니다이 특성 / 클래스의 수 어떻게 구현이 특정 patternmatch에 대한 컴파일시에 컴파일러 알고하지 않는 이유는 무엇입니까? 따라서 그렇다면 가능한 모든 종속성 / 가져 오기를 확인하여 사용할 수 있는 유형을 알고 있기 때문에 trait/ abstract class가 …

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