ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

5
ポーカーと長々とした開発者の計画[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私のチームは4人の開発者で構成されています。すべての味付けと熟練。それらの1つは、Planning Pokerで見積もりを下す前に、ストーリーの技術的な解決策を定義することを主張する、言葉の多い、意図的なチャップです。彼は、合意された技術的解決策の大まかなアイデアがないかどうかを見積もることを拒否します(これは合理的に聞こえますよね?)。 問題は、見積りセッションが終了するまでに時間がかかるということです!! あなたの経験では、プランニングポーカーをプレイするとき、このような性格をどのように扱いますか?
10 agile  planning 

3
マルチテナンシーのサポート
シングルテナントアプリをマルチテナントアプリに変換するときに発生する典型的な課題は何ですか?セキュリティとデータの分離が最も重要だと私は思います。他には何がありますか? 私はかなり重要な自動化作業のアーキテクトの1人であり、歴史的にそれは私たちの会社がそれを使用しているだけでした。他の人にも利用してもらいたい。「マルチテナント化」について話すときは常に、あるテナントを持つユーザーを別のテナントが所有するデータから遠ざけることと、あるテナントを持つユーザーが(意図的または意図せずに)別のテナントに影響を与えないようにすることを話し合いますテナントの環境。私が疑問に思っているのは、セキュリティ/データ分離が本当にここでの唯一の主要な懸念であるのか、それとも私たちが考えていない他のいくつかの主要な懸念があるのか​​です。

2
コマンドハンドラーとDDD
クエリサービスを使用してデータを取得し、コマンドサービスを使用してコマンドを送信するASP.NET MVCアプリケーションがあります。私の質問は、コマンド部分についてです。 リクエストが届くと、コマンドサービスはコマンドディスパッチャーを使用して、指定されたコマンドハンドラーにコマンドをルーティングします。このコマンドハンドラーは最初にコマンドを検証し、すべてが許容できる場合はコマンドを実行します。 具体例:AddCommentToArticleCommandHandlerは、ArticleId、CommentText、EmailAddressを持つAddCommentToArticleCommandを受け取ります。 最初; -記事が存在するかどうかを確認します-記事が閉じていないかどうかを確認します-コメントテキストが20〜500文字で入力されているかどうかを確認します-電子メールアドレスが入力されており、有効な形式であるかどうかを確認します この検証をどこに置くか疑問に思っていますか? 1 /コマンドハンドラ自体。ただし、他のコマンドハンドラで再利用することはできません。 2 /ドメインエンティティ内。しかし、ドメインエンティティはリポジトリやサービスを認識していないため、必要な検証を実行できません(記事が存在するかどうかを確認できません)。ただし、一方で、エンティティにロジックが含まれていない場合は、DDDの原則に従っていない単純なデータコンテナーになります。 3 /コマンドハンドラーはバリデーターを使用するため、検証を他のコマンドハンドラーで再利用できます。 4 /その他のメカニズム? この特定の例の一連の責任と、その中で役割を果たすオブジェクト(エンティティ、リポジトリなど)を探しています。 コマンドハンドラーからリポジトリまで、これをどのように実装するかについてのアイデアはありますか?

3
長いパラメーターリストと長い状態変数リスト
C ++の本では、ほとんどのパラメーターはクラスの状態変数にリファクタリングできるため、長いパラメーターリストを持つ関数は必要なくなったと著者は述べています。一方、関数型プログラミングの本は、状態変数はバグが発生しやすくコードの並列化が困難な副作用を引き起こすため、悪であると述べています。私は困惑しています。コードは、状態変数を関数パラメーターリストに移動することにより、可能な限り状態変数に依存しないようにする必要がありますか?

3
getMonth()が0で始まる理由
私はjavascriptの日付値から1日を削除する関数をコーディングしていましたが、javascriptのgetMonth()が1月の0から12月の11まで始まることにちょっと驚きました。javascriptのgetMonth()が0で始まるのはなぜですか?
10 javascript 

4
STDOUTとその不純
私は関数型プログラミングに関する多くの本や記事を読みましたが、いくつかの非常に基本的な概念を確実に理解できなかったことを恥ずかしく思っています。 関数型プログラミングの主なアイデアの1つは、同じ入力は常に同じ出力を生成するということです。したがって、データベースのクエリやファイルの書き込みは、純粋に機能的なスタイルで行うことはできません。たとえば、モナドが必要な理由の1つです。 問題は、なぜSTDOUT出力を不純なものと見なすのかです。はい、どのファイルハンドラーも危険です-データが常に書き込まれると確信することはできません。しかし、STDOUTはどうですか?なぜそれを信頼できないものと考えるべきなのでしょうか?評価自体の方が信頼性が低いですか?つまり、トリガーを引いて、計算を中断することができます。

5
ライセンスの検証とオートコール
購入すると、ライセンスを使用してアクティブ化できるアプリケーションを開発しています。 現在私はオフライン検証を行っていますが、これは私にとって少し面倒です。クラック(つまり、変更されたバイナリ)に対して何もする必要がないことは承知していますが、ライセンスキーの海賊版を阻止することを試みています。これが私の現在の計画です: ユーザーがソフトウェアをアクティブ化すると、オフライン検証が成功した後、ホームに電話してライセンスを検証しようとします。自宅でライセンスが承認された場合、または自宅にアクセスできない場合、またはユーザーがオフラインの場合、ライセンスは承認されます。ホームに到達し、ライセンスが無効であると通知された場合、検証は失敗します。 ライセンスされたアプリケーションは、起動時に毎回同じ方法で(バックグラウンドで)ホームを呼び出します。ライセンスが取り消された場合(つまり、海賊版ライセンスまたはkeygen経由で生成された場合)、ライセンスは非アクティブ化されます。 これはライセンスの海賊行為に役立ちます-無効なライセンスは無効になり、海賊版にされた有効なライセンスは取り消されます(そしてその法的所有者は新しいライセンスを提供されます)。海賊ユーザーは、通常はバージョン固有でアクセスが難しいクラックバージョンを使用する必要があります。 それは一般的に私には良さそうに聞こえますが、私にはいくつかの懸念があります: ユーザーは、自宅通話やオンライン検証を好まない傾向があります。そのような検証はあなたを悩ませますか?オフライン/障害が発生した場合でも、アプリケーションはライセンスされたままですか? スキーム全体がオフライン/ファイアウォール/その他に行くことによって妨害されることができるのは明らかです。これらのいずれかを実行する手間は、偶然のライセンス共有を妨げるのに十分なものだと思いますが、私にはわかりません。 一般的にライセンスとDRMのバリエーションに関連するので、この種の保護に費やした時間を製品の改善に費やした方がよいかどうかはわかりません。 ご意見、ご感想をお寄せください。 ありがとう!
10 licensing 

2
コードの複雑さと開発者の生産性の間には相関関係がありますか?
開発者の生産性の観点から、コードベースのリファクタリングに費やした時間は、長期的に見て価値がありますか? クリーンで適切に設計されたシステムを変更することは、設計が不十分なシステムで作業するよりもはるかに単純かつ高速であることは私にはかなり明らかですが、確かな証拠があります。このトピックに関する研究はありますか?

7
N女王、X by Y理事会決定問題インタビュー質問
今日のインタビューで次の質問をされて以来、ずっと考えていました。私はそれに答えることができず、解決策をオンラインで見つけることができませんでした。 寸法がX x YとNのクイーンのチェス盤を想定して、これらのクイーンを互いに攻撃できないように盤上に配置できるかどうかを判断します。 2クイーンの2 x 3ボードにはソリューションがあるため、アルゴリズムはtrueを返します。 Q . . . . Q たとえば、このパズルのプログラミング手法を探しています。たとえば、紙の上で解決する方法だけではありません。

3
重複したコードを削除する方法(一般的に)?
オブジェクト指向言語(たとえば、Javaに限定されません)では、発生の範囲に応じて重複コードをどのように修正しますか?(例えば)から始めます 同じクラス(スコープ)でExtractメソッドのリファクタリングを実行(修正) 同じ階層のクラス(スコープ)でメソッドの抽出とプルアップを実行(修正) ...

3
Pythonはどのように機能しますか?
この質問は少しばかげているように見えるかもしれませんが、一体何ですか。 私はPythonを学び始めました。基本的な構文などを知っています。 HTMLやPHPなどを使用する場合は、コードを記述し、それを.htmlまたは.phpファイル内に配置して、このファイルをダブルクリックします。次に、私のコードが実行されます。私はデータベースやその他のものを扱うことができます-それは単純です。しかし、Pythonはどのように機能しますか?私はEclipseまたはPythonコマンドラインの内部で作業していて、このコードを実行できますが、たとえばPythonでWebサイトを作成したい場合はどうすればよいですか? 私は自分のサーバーに.pyファイルを置くようなものではないと思うので、何をする必要がありますか?サーバーのコマンドラインを使用してウェブサーバーにPythonをインストールする必要があることを理解しています(使用したことはありませんが、チュートリアルが必要になる日があります)。Pythonの知識をHTML、CSS、PHPなどと組み合わせるにはどうすればよいですか? Pythonはデスクトップアプリの作成にも使用できますが、それではどうでしょうか。.exeファイルをPythonコードでエクスポートできますか? 私の懸念を説明するコンテンツへのリンクは大歓迎です!

2
Webアプリケーションソフトウェアエンジニアの選び方 [閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 Webアプリケーションソフトウェアエンジニアを選ぶにはどうすればよいですか? (永続的な)位置は、既存のデスクトップクライアントサーバーアプリケーションのクライアントを書き換えることです。ページはサーバー上で動的に生成されませんが、サーバーは、JSON RPC呼び出しなど、必要な方法で完全なAPIを公開し、静的ファイルを使用可能にすることができます。それは人々がダウンロードしてインストールしなければならないクライアントに取って代わるので、妥当な設定(例えばJavaScriptが有効)を備えたまともなブラウザを要求することは問題ありません。ほとんどすべての使用例はデスクトップPCです。これは検索エンジンからアクセスできなくなります(エンタープライズアプリケーションです)。 すべてを1つのページに書き込むことができますが、そうする必要はありません。問題のWebアプリケーションソフトウェアエンジニアによってほとんどすべて記述されます。使用する正確なオープンソースライブラリも、エンジニアの責任です。 一般的にWebアプリケーションソフトウェアエンジニアを選ぶのはトピックが広すぎるので、面接でどのような資格を探して検証するかについてのアドバイスを具体的に探しています。 編集-位置は純粋にブラウザー内のJavaScriptプログラミング(およびHTMLとCSSの責任)です-他の開発者はサーバーを開発しますが、この位置はAPIを介してファサードを要求する可能性があります。Ruby、ASP、JSPなどはありません。これは、Webサーバーレイヤーが非常に薄く、呼び出しをビジネスレイヤーAPIに変換してJSON(または何でも、ただしJSONが最も簡単に見える)として返すだけだからです。

3
ユーザーストーリー定義の「so that」節の目的は何ですか?
ユーザーストーリーは次のような文で定義できます。 As a <type of user> I want <some goal> so that <some reason> 「ユーザーストーリーの公式」のGoogleと最初のリンクはすべて、この公式を提案しています。 私の質問はの目的が何であるか、であるので、その句?マネージャー向けですか?プロジェクト管理者と利害関係者がアイテムの優先順位をよりよく理解できるようにするためにありますか?なぜそこにあるのですか? 注:私はas a <type of user> I want <some goal>数式を使用してきましたが、うまく機能します。より簡潔なこのフォーマットを実装しても、私の作業には問題がありません。
10 user-story 

13
英語のような自然言語で明確な仕様を記述できますか?
自然言語の形式張らない性質のために、曖昧さのない完全なソフトウェア仕様を英語で書くことはおそらく不可能だと私には思えます。したがって、本当に明確な仕様には、正式に指定された言語で書かれたコードを含める必要があります。 これは既知の結果ですか、それとも何か不足していますか?

3
新しいCSS機能に接頭辞を付ける理由は何ですか?
ブラウザーが接頭辞のないバージョンを使用するのではなく、ブラウザーに新しいCSS機能の接頭辞を付ける正当な理由はありますか? たとえば、背景のグラデーションのサンプルコードは次のようになります。 #arbitrary-stops { /* fallback DIY*/ /* Safari 4-5, Chrome 1-9 */ background: -webkit-gradient(linear, left top, right top, from(#2F2727), color-stop(0.05, #1a82f7), color-stop(0.5, #2F2727), color-stop(0.95, #1a82f7), to(#2F2727)); /* Safari 5.1+, Chrome 10+ */ background: -webkit-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727); /* Firefox 3.6+ */ background: -moz-linear-gradient(left, #2F2727, #1a82f7 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.