ソフトウェア工学

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

4
「ほぼ完成した」タスクまたはストーリーは、次のスプリントで過負荷の計画を正当化しますか?
問題のケース: スプリントはほぼ終了し、私のスクラムチームの1つはいくつかのタスクを完了しませんでした。(この理由は、この質問では必須ではないので、それに応じて対処します。)それらの1つは、かなり多くのストーリーポイントを持つ古典的な「90%完了」のケースであり、次のスプリントの一部になります。こちらの質問です。 バックロググルーミングと次のスプリントのためのいくつかの予備的な見積もりを行い、この未完成のタスクを処理する方法について説明しました。このスプリントの速度にはカウントされないことに私たちは皆同意していますが、真の複雑さと実行された総作業を次のようにしたいので、5つのストーリーポイントではなく1でほぼ完全なケースを再推定しないでください。まだ見えています。そして推定を振り返ってみると正しかった。-私たちは(スケーリングされた)アジャイルに移行しているだけであり、一部の管理レベルでは、提供された製品よりも多くの点で生産性を維持していることを「確認」する必要があります。 明らかに、このスプリントの速度は低下しますが、転送された「既に完了した」パーツは、次のスプリントで再び上昇するはずです。 これまでのところ、全員が同意しています。 しかし、私たちのチームはかなり小さいので、4ポイントは大きなかたまりです。このタスクのみで適切なドキュメンテーションがあれば、意識的に4つのポイントの過負荷を計画できると提案しました。 それは実現可能なアプローチですか、それとも私は まだ予想していない問題に遭遇する ほんの数か月前にアジャイルに移行したチームに悪い例を示しますか?

5
他人の作業を元に戻すためのエチケット
最近、チームメイトと「元に戻す前に相談していない」との議論がありました。「馬鹿のように見える」からです。(コンテキストについては、これは大学のプロジェクトであり、元に戻すのはコードの配置でした。) これは私に不思議に思います:元に戻す必要があることをコミッターに知らせるための規範は何ですか?どのようにして、ハードフィーリングを扇動せずにこのコミットを元に戻す必要があると彼らに伝えますか?
8 git  etiquette 

5
Rest APIの設計-IDまたはリテラル文字列を操作しますか?
RESTful Webサービスを設計するとき、サーバー間でやり取りされる値の文字列のIDを機能するようにAPIを設計する必要がありますか? 次に例を示します。ステータスと性別の属性を持つ従業員リソースがあるとします。データベースのステータスと性別、および個別のテーブル、つまり個別のドメインオブジェクトで、それぞれが独自の識別子を持ちます。 クライアントのリクエスト/ employee / 1としましょう。サーバーが次のようなものを返す可能性があります... ケース1: { "id": 1, "firstName": "Jane", "lastName": "Doe", "active": true, "gender": { "id": 1, "gender": "FEMALE" }, "status": { "id": 3, "status": "FULL_TIME" } } ケース2: { "id": 1, "firstName": "Jane", "lastName": "Doe", "active": true, "gender": "FEMALE", "status": "FULL_TIME" } ケース3: { "id": …
8 rest  api-design  json 

3
特に明記しない限り、C ++のすべてのオブジェクトは変更可能ですか?
特に明記しない限り、C ++のすべてのオブジェクトは変更可能ですか? PythonとJavaScriptでは、文字列、タプル、ユニコードを変更できません。C ++に不変なものがあるかどうか、またはすべてのオブジェクトが変更可能であるかどうかを疑問に思っていましたconst。不変にするために型修飾子を使用する必要があります。

2
クロスオーバー値が0.5ではないのはなぜですか?
私がGAについて読んだほとんどの文献では、約0.7のクロスオーバー値を使用することを推奨しています。そのため、一方の染色体の遺伝子の最初の70%と残りの30%を使用して、1つの新しい染色体を生成します。 上位2つを選択して親の染色体を選択している場合(適合度でランク付け)、評価の高い染色体の遺伝子により多くの重みを付けているため、ここでロジックを確認できます。ただし、確率的な方法(ルーレットホイールなど)を使用して親を選択している場合、クロスオーバー値として0.5以外のものを使用する意味は何ですか?親として染色体AとBを選択した場合、Aを最初に選択し、次にBを選択し、次にBを最初に選択する可能性があります。 私は実際にはこれまでに1つのGAしか書いていません(まだ学習曲線の一番下にありますが、ここでの大きな助けのおかげで速く上に移動します)。しかし、その実験により、0.5はソリューションへの収束が速くなることが示されていますその他の値。 それとも何か不足していますか?

7
最初に実行する必要があるのは、ユースケースとユーザーストーリーのどちらですか。
ユースケース(図ではなく説明について話している)と、要件を収集してより適切に整理するために使用されるユーザーストーリーの両方について聞いたことがあります。 私は一人で仕事をしているので、要件を整理し、開発で何をすべきかを理解するための最良の方法を見つけようとしています。巨大なドキュメントなどを扱う正式な方法論はありませんし、必要もありません。 私が製品バックログを作成するために使用されているように見えるユーザーストーリーには、開発で実行する必要があるすべてのものが含まれています。 一方、ユースケースは、システムでの処理方法、外部のアクターとシステム間の相互作用のフローの説明を提供します。 1つのユースケースに複数のユーザーストーリーがあるように思えます。 これは私に次の質問を導きます:要件を見つけるとき、最初に何をすべきですか?ユーザーストーリーを見つけて書いたり、ユースケースを見つけて書いたりしますか?それとも、何とかして「同時に」行う必要がありますか? 私は実際にはかなり混乱しています。ユースケースとユーザーストーリーに関して、単独で作業する開発者にとって、より良い開発を行うためにこれらの方法論を正しく使用するには、良いワークフローとは何ですか?

3
Haskellの型クラスとGoのインターフェースの違いは何ですか?
Haskellの型クラスとGoのインターフェースに違いがあるかどうか疑問に思っています。タイプに必要な関数が値に定義されている場合、どちらも関数に基づいてタイプを定義します。つまり、値はタイプに一致します。 違いはありますか、またはこれは同じものの2つの名前だけですか?

2
交換可能であるはずのクラス内に依存関係があっても大丈夫ですか?
ドメインモデルがあり、それを永続化レイヤーから読み取って保存したいとしましょう-現在のところ、それはjsonファイルの可能性がありますが、将来的にはxmlまたはデータベース(タイプも変更される可能性があります)になる可能性があります)。 永続化レイヤーからドメインモデルを生成するために、たとえばgetAll()とsaveAll()メソッドを含む簡単なインターフェイスの実装を用意しました。別のタイプの永続化に切り替えたい場合は、インターフェースの実装を変更するだけです。ただし、実装内では、完全に異なるソリューションを使用してデータを読み取り、保存するため、他のライブラリの異なるオブジェクトを使用してデータを処理する必要があります。 最初の実装でJsonシリアライザーを使用するとします。次に、そのシリアライザーのインスタンスを私の実装で直接インスタンス化します。これは、そのシリアライザに依存する私の実装に直接つながります。別のシリアライザを与えることはできません。しかし、シリアライザ(またはあらゆる種類の永続化)のユニバーサルインターフェイスがないため、これはいずれにしても不可能です。したがって、別のシリアライザを使用したい場合、私ができる唯一のことは、外部から別のシリアライザを渡すのではなく、完全に新しい実装を記述することです。 この場合、依存関係をハードコードしても大丈夫ですか?またはより良いオプションはありますか?

3
OOで場所、学術用語、さまざまなコホートをモデル化する方法
私は大学向けのアプリに取り組んでいます。ケースはこれです: 各大学にはいくつかの学術プログラムがあります。各プログラムには多くの主題(モジュール)があります。各科目は異なる場所で提供できます。学年は学期に分かれており、各学期は数週間続きます。すべてのモジュールが同じ場所で各学期に提供されるわけではなく、プログラムは同じ学年度内の異なる開始日を持つ異なる学生グループに提供できます。 たとえば、A大学はニューヨークとロンドンでMBAプログラムを提供しています。MBAには、1学期(10週間)ごとに2つのモジュールがあります(MBA-NYとMBA-Lなど)。需要に応じて、通常の摂取量よりも1週間遅れて開始するプログラム(したがって、この用語ではモジュール)の3回目の実行を行うことができます。したがって、別のMBA-NYグループがありますが、タイムラインが異なります。ただし、このグループは、MBAカリキュラムの同じ用語の一部でもあります(つまり、2つのグループはMBAの用語2を実行しています)。 私の質問は、場所、学術用語、OOデザインでの実行をモデル化する方法です。場所、学術用語(およびおそらく「実行」)は、大学オブジェクトまたはプログラムオブジェクトのプロパティですか?またはモジュールオブジェクトの? 更新:あなたの回答に基づいて、私の困難は学問の用語、コホート、および異なるタイムラインをモデル化することです。それは私にはまっすぐに見えるので、実際には場所ではありません。説明にそれを含めて、接続を示します。

1
組み込みシステムの構成メニューの設計上の考慮事項
私は、いくつかのボタンと小さなグラフィックディスプレイでユーザーとインターフェイスする組み込みシステムに取り組んでいます。 余談ですが、私は組み込みシステムを使用しているので、動的なメモリ割り当てをできるだけ回避したいと思います。std :: vectorのようなものは利用できません。 次のように、クラシックなネストされたメニュー構造を使用して構成メニューを実装する必要があります。 Level A Node 1 -> Level B Node 1 -> Level C Node 1 -> Level B Node 2 -> Level B Node 3 Level A Node 2 Level A Node 3 ここでの最善のアプローチについてはよくわかりません。複合パターンを使用するなど、このようなものにアプローチするいくつかの方法について読みました。しかし、私はいつも「紙の上」では良さそうに見えても、実装するのは面倒そうなものにぶつかります。 私の一般的な考えはMenuNode、初期化時にそのサブノードと親ノードについて知っているクラスを持つことです。Menuクラスは、ノードナビゲーションおよび処理を扱うことができます。明らかに、すべてMenuNodeが次のような特定の動作を実行/実装する必要があります。 Menu何を表示したいかを報告します(実際のレイアウト/配置はの問題ではありませんMenuNode)。 ユーザー入力に反応する(値を増減する/ボタンを押すなど) 関心のある実際の値にアクセスする(ApplicationSettingsクラスに属している) これを実装する最良の方法は何でしょうか? (抽象的な)MenuNode基本クラスを使用して、すべてのメニューノード項目のサブクラスを作成します。初期化中に、ApplicationSettings必要になる可能性のある他の依存関係へのポインタを提供できます。どういうわけか、それぞれが一度だけインスタンス化される10個の派生クラスを作成するのは間違っていると感じています。 MenuNodeすべてのノードに同じクラスを使用し、関数を解放するコールバックを通じて機能を実装します。私が読んだことから、そのかなり一般的なものは、自由な関数をオブジェクトと「結合」することです。しかし、それは物事を複雑にしてしまうような気がします。ReportButtonPress()などのメンバーごとに、初期化中に実際の実装のコールバックを提供する必要があります。 ここで見落としているものがあると思います。

1
マイクロサービスベースの環境で「フロントエンド」をどのように処理しますか?
私たちは最近、モノリシックWebアプリをマイクロサービスに分割し始め、ゆっくりと機能をスライスして個別のマイクロサービスに書き直しました。フロントエンドの作業を整理する最善の方法がわからない場合を除いて、すべて順調に進んでいます。私たちは製品チームに分かれて、少数のマイクロサービスのコードをそれぞれ管理し、検索、CMS、チェックアウトなどの機能領域を提供します。各チームには製品所有者、技術リーダー、スクラムマスターがいます。 問題は、これらの製品チームがそれぞれ独自のバックエンドコードベースを持っている一方で、フロントエンド開発者が各製品チームに座っている単一のフロントエンドReact.jsコードベースがあることです。これは多くの問題を引き起こしています: フロントエンド開発者間の製品チーム間のコミュニケーションの欠如 他のチームの新機能をサポートするために他のチームが「所有」しているフロントエンドコードに変更を加える際の問題 フロントエンドチームを代表する単一の技術エキスパートは存在しませんが、他の製品チームには技術的なリードがあり、フロントエンドでこの役割を果たしている人はいません。 私たちは他の人がこれをどのように扱っているのか疑問に思い、フロントエンドコードベースの分割、ビジネスユーザーが新機能のために通常従事するフロントエンド製品チームの作成、データ/サービスのリクエストなど、フロントエンドチームの他の製品チームですが、どちらにも独自の問題があります。

6
プログラミング言語や副作用のないプログラムについて理由を説明する方が簡単なのはなぜですか?
リチャード・P・ガブリエルから「Yの理由」を読みました。Yコンビネーターに関する読みやすい記事ですが、めったにありません。記事は、階乗関数の再帰的な定義から始まります。 (letrec ((f (lambda (n) (if (< n 2) 1 (* n (f (- n 1))))))) (f 10)) そしてそれはletrec副作用で定義できることを説明します: (let ((f #f)) (set! f (lambda (n) (if (< n 2) 1 (* n (f (- n 1)))))) (f 10)) また、記事の残りの部分ではletrec、Yコンビネーターを使用して定義することもできると説明しています。 (define (Y f) (let ((g (lambda (h) (lambda (x) ((f …

2
マイクロサービス-キューを使用してサービスの失敗を補正する
アプリでは、ある種のマイクロサービスアプローチを使用しています(ただし、実際にはそれに準拠していません)。 サービスがダウンしているか例外がスローされている場合、アプローチはそれをキュー(ActiveMQ)に入れ、サービスが再びアップしたときに再試行します。 これは「標準」ソリューションですか?それとも、何らかの理由で回避する必要がありますか? または、この問題に対するより良い、または代替の解決策はありますか?

4
ソースコードのバグクラスタリング
バグまたは欠陥のクラスターの存在について多くの主張があります。単純な検索は、例えば、複数の結果を明らかにする: 1、 2、 3、 4、 5。 しかし、引用された証拠はすべて逸話的であり、これを裏付ける具体的なデータは見つかりませんでした。私自身の経験はこれらの主張に矛盾しませんが、パターンがない場合でも人々はパターンを見るのが好きです(バグが均一に分散されてもクラスターが生成され、10箇所ではなく1箇所で10箇所のバグを修正する必要がある場合は覚えやすいでしょう)コードベース全体で無関係なもの)。 この現象が実際に存在するかどうかは本当に気になりますが、欠陥のクラスタリングが実際に発生していることを示す客観的または半目的的なソース(テスト、実験、研究など)さえ見つけることができませんでした。 もちろん、私はバグのクラスタリング仮説を良い習慣として想定しても問題ありません(たとえそれが間違っていても、それほど害はありません)。一方、具体的なデータは、それが発生する理由を明らかにする可能性があります。何故かといえば、(どんな理由であれ)ひどい頭痛がしているからでしょうか。または、コードの一部が難しいだけで、他の部分が簡単なためでしょうか?それとも、互いに嫌いな2人のエンジニアの責任の所でしょうか。 私の質問:欠陥クラスタリング効果は実際に存在しますか?この仮説によって最もよく説明される具体的な非逸話的なデータはありますか?

4
MVC-ビュー間でコンテキスト情報を共有する
長い投稿は申し訳ありません。質問があります。ただ我慢してください。 少しのコンテキスト 私たちは、さまざまなユーザー設定、ユーザーが所属するグループ、ユーザーの出身地などに基づいて大幅に適応する必要があるサイトを持っています。以前はページのモデルに関連ビットを含めていたため、ページに、ユーザーが特定の年齢を超えているかどうかを示すテーブルがある場合、モデルでは次のようにします。 //model public PageModel { public bool ShowTable {get;set;} } //controller public PageController { public ActionResult ShowPage() { var model = new PageModel() { ShowTable = User.Age > 21 }; return View(model); } } //view @if(Model.ShowTable) { <table>Some Html here</table> } これは、どのユーザーに何を表示すべきかを知るためにすぐに非常に複雑になりました。この問題に対処するために、特定のものが表示または非表示になるタイミングに関するすべてのロジックを一元化しました。このクラスを呼び出したUserConfigurationところ、(ほとんどの場合)何を表示すべきかを示すブール値を返す一連の関数が含まれていました。これにより、ユーザーに表示する必要がある一連の仕様とテストを設定できました。UserConfigratuion次に、これは、すべてのページモデルが継承する必要がある基本クラスに配置されました。そのため、現在、次のようになっています。 //UserConfiguration public UserConfiguration { private readonly …
8 c#  mvc  asp.net-mvc 

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