ソフトウェア工学

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

1
ユビキタス言語を文書化するには?
当社は、多くの手動のビジネスプロセス(および関連する組織の知識)を新しいエンタープライズソフトウェアに変換するプロセスを進めています。このプロジェクトは順調に進んでいますが、先に進むと、ビジネス側と開発側の両方で用語と定義に関して多くの混乱があることが明らかです。 ユビキタス言語を形成するというEvanの議論をしばらく知っていましたが、正式に文書化する必要があるのはこれが初めてです。ULの用語をどこで/どのように文書化するかを考えてみようとすると、ちょっと迷ってしまいます。 他社はユビキタス言語をどのように文書化していますか?これは単なるWikiスタイルの辞書ですか?この目的のためのツールはありますか?

3
各環境にあるコードのバージョンをどのように追跡できますか?
私のチームは現在、次のような非常に単純な分岐/展開プロセスを使用しています。 ┌────────┐ ┌────┐ ┌──────┐ Environments: │ DEV │ │ QA │ │ PROD │ └────────┘ └────┘ └──────┘ ▲ ▲ ▲ │ │ │ ┌────────┐ ┌────┐ ┌──────┐ Builds: │ DEV │ │ QA │ │ PROD │ └────────┘ └────┘ └──────┘ ▲ ▲ ▲ │ │ │ ┌────────┐ ┌────┐ ┌──────┐ Branches: │ …

5
コードレビューが配信/テストサイクルに遅れている
アジャイルプロセスには2週間のスプリントがあります。タスクは毎日配信され(毎日ビルド)、テストチームは翌日または同じ日にテストを完了します。 Devコードレビューもありますが、これには時間がかかります(1〜2時間)ため、週3回、月曜日から水曜日にスケジュールされます。開発者が集まり、コードを改善/リファクタリングする方法を提案します。 問題は、コードレビュー後にアクションアイテムが登場するまでに、ほとんどのタスクが既にテストされていることです。テスターは、既にテストに合格したものを再テストしたくない。内部の開発者の変更を気にしません。 アジャイルプロセスを誤解していますか?コードレビューは毎日のリリース/テストサイクルと互換性がありませんか?毎日コードレビューを行うことはできません。すべての人の時間がかかるからです。

3
アプリケーション全体で静的ロギングメソッドを使用する代わりにLoggerオブジェクトを作成する理由
単純なRuby on Railsアプリケーションの例を取り上げます。Loggerアプリケーションのロードプロセス中にオブジェクトを作成します。 # in environment.rb config.logger = Logger.new(<STDOUT | file | whatever>) # and in our application we use this object logger.warn "This process is taking too long to process. Optimization needed." 私の質問は、なぜロギングにクラスメソッド(または静的メソッド)を使用しないのですか?Logger.warnよりもスケーリングしませんLogger.new.warnか?または、少なくともLogger.warnより直感的ですLogger.new.warn。 Logger.newシングルトンオブジェクトであっても、どのような利点がありますか?

1
2つのJava 8のデフォルトメソッドを相互に実装するのは良い習慣ですか?
私はこれに似た2つの関連する方法でインターフェースを設計しています: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } 実装の約半分で計算されるのは1つだけですが、残りの半分ではさらに多くの計算が行われます。 これは、広く使用されているJava 8コードに先例がありますか?Haskellがいくつかのタイプクラスで同様のことを行うことは知っています(Eqたとえば)。 利点は、2つの抽象クラス(SingleThingComputerおよびMultipleThingComputer)を使用した場合よりも大幅に少ないコードを記述する必要があることです。 欠点は、空の実装がコンパイルされますが、実行時にStackOverflowError。を使用して相互再帰を検出しThreadLocal、より良いエラーを与えることは可能ですが、それにより、バグのないコードにオーバーヘッドが追加されます。

2
フォーブス/ ZdnetなどのニュースWebサイトは、あるWebページを別のWebページにシームレスにマージしますか?
例に行く場合: http://www.forbes.com/sites/adrianbridgwater/2015/06/12/why-technology-has-to-be-continuous/ または http://www.zdnet.com/article/if-you-want-those-cool-ios-9-features-its-time-to-buy-a-new-ipad/ ページの下部に到達すると、新しいニュースストーリーが読み込まれ、インターネットブラウザのURLがこの次のニュースストーリーのURLに変更されます。だから私は、ページ間でほとんど無視できる遅延で、Webページが次のWebページをほとんど瞬時にロードする方法を疑問に思っていました。たとえば、次のニュース記事のWebページを事前にダウンロードしてから、Webページを非常に高速に読み込みますか?

1
スキップリストはどのように機能しますか?
宿題の割り当てでは、スキップリストの仕組みを理解する必要があります。 私はもう2年以上プログラミングをしています(実際にはそれほど長くないことを知っています)。スキップリストを聞いたことがありません。 私が見つけることができるすべてのガイドを見てきましたが、それらがどのように機能するのかまだほとんど理解していません。実装例をコードレビューで検索しても、レビューは1つしか見つかりませんでした。そして、それは完全な実装でさえありません。コースが提供するサンプル実装を確認しましたが、それは絶対にひどいものです。適切なメソッドの欠如と1文字の変数名の間で、どのように機能するのか見当がつきません。 スキップリストはどのように機能しますか?より高度なデータ構造を理解するにはスキップリストの知識が必要ですか?

1
APIキー-コンテンツまたはヘッダー内
現時点でAPIに取り組んでおり、APIキーを送信するのに最適な場所がどこにあるべきかについて意見を収集したかっただけです。URLに入れるべきではないことを知っています。これにより、リクエストヘッダーまたはメッセージ本文が残ります。 それをヘッダーに入れると、すべてのサービスで使用できる一般的なメソッドを引き出すことができますが、私が渡された仕様はそれを本体に必要としています(つまり、JSON文字列でPOST本体のシリアル化されたオブジェクト)。
14 api 

1
Haskellが単相性の制限なしに繰り返し評価を避けることができないのはなぜですか?
先日learnyouahaskellを終えたばかりで、Haskell Wikiで説明されているように、単相性制限の意味を理解しようとしていました。MRが繰り返し評価を防ぐ方法を理解していると思いますが、なぜこれらの繰り返し評価がはるかに簡単な手段で回避できないのかを理解できません。 私が念頭に置いている特定の例は、wikiで使用されているものです。 f xs = (len,len) where len = genericLength xs where genericLengthはタイプNum a => [b] -> aです。 明らかに、それは同じ引数を持つ同じ関数なのでgenericLength xs、評価するために一度だけ計算する必要があり(len,len)ます。そして、それをf知るために呼び出しを見る必要はありません。では、なぜHaskellはMRのようなルールを導入せずにこの最適化を行えないのでしょうか? そのwikiページの議論Numは、具体的な型ではなく型クラスであるという事実と関係があると言っていますが、それでも、コンパイル時に純粋な関数が同じ値を返すことは明らかではありません-したがって、同じ具体的なタイプのNum-同じ引数を2回与えたとき?

2
C#の暗黙的な型変換演算子はいつ使用する必要がありますか?
C#では、暗黙的な変換演算子を次のようにオーバーロードできます(MSDNの例): struct Digit { /* ... */ public static implicit operator byte(Digit d) // implicit digit to byte conversion operator { /* ... */ } } したがって、型(カスタム値型)を使用して、自分自身を別の(無関係な)型に魔法のように変換し、観客を戸惑わせたままにすることができます(舞台裏を覗き込んで暗黙の変換演算子を見るまで)。 私のコードを読む人を戸惑わせるのは好きではありません。多くの人はそうは思わない。 問題は、コードを理解しにくくすることのない暗黙の型変換演算子のユースケースは何ですか?
14 c#  operators 

6
平均スプリントよりも50%悪い状況をどのように処理しますか?
スクラムを正しく理解していれば、次のスプリントでチームが引き受けることができる仕事を決定する方法は次のとおりです。 過去数回のスプリントで完了したポイントの数を平均します。 この量は平均速度です。次のスプリントでは、多くのストーリーポイントを取り上げます。 これは平均であるため、履歴が繰り返される場合、このスプリントは、ストーリーポイントが少なすぎる可能性が50%あり、ストーリーポイントが多すぎる可能性が50%あります。 50%のケースでは、できる限り多くのストーリーポイントを使用しました。 スプリントを完了できません。これは、スプリントのコミットメントを半分の時間で満たさないことを意味します。 追いつくために余分に働く。問題は、これが一方向にしかラチェットしないことです。スプリントを達成し、完了したストーリーポイントの数はそれを反映します。私たちは常に時間をかけて終了するので、私たちの平均は常に多くのストーリーポイントを達成し、遅れている点まで上昇傾向にあります。 平均速度とスプリントのコミットメントについての私の理解は正しいですか? もしそうなら、平均より遅れているスプリントの50%に対して何をすべきでしょうか? そうでない場合、何が間違っていますか?

2
Optional / Maybe型は動的言語で役立ちますか?
Optional静的に型付けされた言語では明らかな方法で有用ですが、動的言語でも有用かどうか疑問に思っています。通常、あなたに言って何のコンパイラは「ねえ、あなたはこれを使用し、ありませんOptional<String>とStringあなたはまだ実行時にミスを発見する必要がありますので、」。私は静的な型付けの背景を持っており、私の観点からOptionalは、動的言語の型の利点を見ることができません。

2
react.jsは、静的なコンテンツ駆動型サイトに意味がありますか?
DOM操作が非常にスムーズで分かりやすいので、react.jsモデルでかなり売れています。しかし、移動しないテキストや画像の大きなブロックが多く、静的なサイトでどのように活用できるのかと思っています。邪魔になりますか?コンポーネントの状態がテキストのKBであるのは厄介なようです。


3
値チェッカー関数はブール値とメッセージの両方を返す必要があります
私は、文字列で渡される値確認機能を持っています。これは、クレジットカード番号確認機能によく似ており、値が正しい形式であることを確認する必要があります。 適切な形式の場合は、trueを返す必要があります。 正しい形式でない場合は、falseを返す必要があり、値の何が問題なのかも教えてください。 問題は、これを達成する最も良い方法は何ですか? 以下にいくつかの解決策を示します。 1.整数/列挙戻りコードを使用して、意味を示します。 String[] returnCodeLookup = [ "Value contains wrong number of characters, should contain 10 characters", "Value should end with 1", "Value should be a multiple of 3" ] private int valueChecker(String value) { /*check value*/ return returnCode; } rc = checkValue(valueToBeChecked); if rc == 0 …

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