소프트웨어 공학

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

4
회사에서 비밀번호를 암호화하지 않은 경우 수행 할 작업
배경 회사에서 서버를 유지 관리하도록 계약을 체결했습니다. 나는 몇 가지 사소한 PHP 프로젝트를 수행하지만 성능 문제를 검토하고 최근에는 해커의 로그를 스캔합니다. 이 사람들은 얼마 동안 서버를 운영하고 있으며 마지막 레그에서 레거시 애플리케이션이라고 부르는 것을 가지고 있습니다. 마법 따옴표, 전역 변수 ( $id로 덮어 쓸 수 있음 $_GET['id'])를 사용하고 .htaccess를 유일한 …
13 php  apache  security  mysql 

6
스크럼에서 누가 "완료"를 확인합니까?
저는 조직의 QA / 테스트 관리자이며 오늘까지 소프트웨어 품질 (테스트 작성 및 실행 및 버그 수정)을 확인했습니다. 스크럼에서 누가 이것을 확인할 것입니까? 팀이 모든 올바른 테스트를 작성하고 실행했음을 어떻게 알 수 있습니까? 반면에 확인을 계속하면 팀에 충분한 권한이 부여되지 않습니다. 그러나 "완료"가 실제로 "완료"라는 확인 프로세스가 필요합니다. 당신은 무엇을 제안합니까?
13 scrum 

2
Command 자체에서 메소드를 처리하는 대신 클래스 CommandHandler를 Handle ()로 분리하는 이유
다음 과 같이 S # arp 아키텍처를 사용하여 CQRS 패턴의 일부를 구현 했습니다. public class MyCommand { public CustomerId { get; set; } // some other fields } public class MyCommandHandler<MyCommand> : ICommandHandler<MyCommand, CommandResult> { Handle(MyCommand command) { // some code for saving Customer entity return CommandResult.Success; } } 왜 …

5
REST API를 시뮬레이션하는 방법?
타사 REST API에서 데이터를 쿼리하는 새 프로젝트를 진행 중입니다. 실시간 스포츠 데이터 피드 용이므로 게임이 실제로 진행 중일 때만 피드가 작동합니다. 타사가 좋은 문서 (XSD 등)를 제공하지만 게임 진행을 시뮬레이션 할 수있는 방법이 없으므로이 API에 대해 작성한 코드를 테스트하려면 실제 게임이 발생할 때까지 기다려야합니다. 내 유일한 수단은 내 자신의 게임을 …
13 api  rest 

2
Haskell에서 유형이 지워 집니까?
Haskell은“일반적인 기능”이라는 개념을 가지고 있는데, 이는 일반적인 lisp와 공통점을 가진 경험이없는 일반적인 lisp와 비슷한 점이 있습니다. 이것은 to_string모든 유형의 문자열 표현을 정의하는 일반 기능을 정의 할 수 있음을 의미합니다 . 물론 특수한 경우에는 시설을 정의해야하지만 to_string서명이 인 함수가 α → string있습니다. OCaml과 마찬가지로 Haskell에서 유형이 지워 집니까? 그렇다면 Haskell의“일반 기능”의 …

4
판독 루프를 종료하는 방법은 선호되는 방법입니까?
읽을 항목 수를 알 수없는 판독기를 반복해야하는 경우 끝까지 닿을 때까지 계속 읽으십시오. 이것은 종종 끝없는 루프가 필요한 곳입니다. 블록 안에 어딘가에 또는 문 true이 있어야 함을 나타내는 항상 있습니다 .breakreturn int offset = 0; while(true) { Record r = Read(offset); if(r == null) { break; } // do work …

6
계약 기반 프로그래밍 및 단위 테스트
나는 다소 방어적인 프로그래머이자 Microsoft의 Code Contracts의 열렬한 팬입니다. 이제는 항상 C #을 사용할 수 없으며 대부분의 언어에서 내가 가진 유일한 도구는 어설 션입니다. 그래서 나는 보통 다음과 같은 코드로 끝납니다. class { function() { checkInvariants(); assert(/* requirement */); try { /* implementation */ } catch(...) { assert(/* exceptional ensures …

1
스칼라에서 List에 추가하는 데 왜 O (n) 시간이 복잡합니까?
방금 List(: +)에 대한 추가 작업의 실행 시간이 의 크기에 따라 선형으로 증가 한다는 것을 읽었습니다 List. 에 추가하는 List것은 꽤 일반적인 작업처럼 보입니다. 이를 수행하는 관용적 방법이 구성 요소 앞에 붙은 다음 목록을 바꾸어야하는 이유는 무엇입니까? 구현은 언제라도 변경 될 수 있으므로 설계 실패 일 수 없습니다. 내 관점에서, …

2
C # 인터페이스로 Haskell 타입 클래스 구현
Haskell의 형식 클래스와 C #의 인터페이스를 비교하려고합니다. 가 있다고 가정합니다 Functor. 하스켈 : class Functor f where fmap :: (a -> b) -> f a -> f b 이 유형 클래스를 C #의 인터페이스로 구현하는 방법은 무엇입니까? 내가 시도한 것 : interface Functor<A, B> { F<B> fmap(Func<A, B> f, F<A> …
13 c#  haskell 

6
객체 지향 프로그래밍을 연습하는 방법? [닫은]
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 휴일 육년 전 . 잠김 . 이 질문과 주제는 주제가 다르지만 역사적 의미가 있기 때문에이 질문과 답변은 잠겨 있습니다. 현재 새로운 답변이나 상호 작용을받지 않습니다. 나는 항상 절차 언어로 프로그래밍되어 왔으며 현재 객체 방향으로 이동하고 있습니다. 내가 직면 한 주요 …

6
어떤 기능적 기능이 가져다주는 이점에 대해 약간의 OOP 혼동 가치가 있습니까?
Haskell과 F #에서 함수형 프로그래밍을 배우고 나면 OOP 패러다임은 클래스, 인터페이스, 객체와 거꾸로 보입니다. 동료가 이해할 수있는 FP의 어떤 측면을 업무에 도입 할 수 있습니까? 팀을 재교육하여 사용할 수 있도록 상사와 이야기 할 가치가있는 FP 스타일이 있습니까? FP의 가능한 측면 : 불변성 부분 적용 및 카레 일급 함수 (함수 포인터 …

2
가비지 콜렉션은 비 결정적이므로 안전한 난수 생성에 사용되지 않는 이유는 무엇입니까?
/ dev / random은 엔트로피의 좋은 소스이며 일반적으로 사용되는 것입니다. 최소한 Java에서는 GC를 읽는 것처럼 가비지 수집 데몬이 비 결정적으로 실행되는 것으로 보입니다. . 이것이 사실이라면 왜 가비지 수집 타이밍을 변수 / dev / random 대신 엔트로피 소스로 사용하지 않습니까?

4
linq가 표면에 나타나는 것보다 더 효율적입니까?
이런 식으로 쓰면 : var things = mythings .Where(x => x.IsSomeValue) .Where(y => y.IsSomeOtherValue) 이것은 다음과 같습니다. var results1 = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue) results1.Add(t); var results2 = new List<Thing>(); foreach(var t in results1) if(t.IsSomeOtherValue) results2.Add(t); 또는 다음과 같이 작동하는 표지 아래에 마술이 있습니까? var results = …
13 c#  linq 

3
IT 관리자가 아닌 관리자가 필수 레거시 소프트웨어의 장기 유지 관리 및 개발을 어떻게 보호해야합니까?
우리는 매우 유용하고 강력한 소프트웨어 모음을 보유한 작고 매우 전문화 된 혜택 관리 회사로, 일부는 COBOL로 작성되었지만 대부분은 BASIC으로 작성되었습니다. 두 명의 상근 컨설턴트가이 시스템을 30 년 이상 유지 관리하고 개선했습니다. 물론 곧 은퇴 할 것입니다. (그들 중 하나는 몇 년 동안 은퇴하기 위해 필사적이지만 결점에 충성하기 때문에 남편의 주장에도 …
13 legacy 

4
레일 : 데메테르 혼란의 법칙
저는 Rails AntiPatterns라는 책을 읽고 있습니다. 그들은 Demeter of Demeter를 위반하지 않기 위해 위임을 사용하는 것에 대해 이야기합니다. 주요 예는 다음과 같습니다. 그들은 컨트롤러에서 이와 같은 것을 호출하는 것이 좋지 않다고 생각합니다 (그리고 나는 동의합니다) @street = @invoice.customer.address.street 제안 된 해결책은 다음을 수행하는 것입니다. class Customer has_one :address belongs_to :invoice …

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