ソフトウェア工学

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

9
会社でオープンソースプログラムを使用しますか?
あなたの従業員にあなたの会社でオープンソースプログラムを使わせることの短所はありますか? 私はビジネスを始めることを計画しており、Microsoft Wordが最も有名なものを引用するので、なぜ企業は通常、プロプライエタリなソフトウェアで作業するのか疑問に思います。Open Office(またはLibre Office)などを使用しないのはなぜですか? 私の観点からは、例えば寄付の形であなたの利益の一部を与えることで、多くのお金を節約し、オープンソースコミュニティを助けることができます。 私はこれを行う(中規模の)会社を知りません。おそらく、このオープンソースの使用/コラボレーションのモデルがうまく機能することを証明するために、いくつかの例を挙げることができます。

4
肥大化したドメインオブジェクトの回避
DDDアプローチを使用して、肥大化したサービスレイヤーからドメインレイヤーにデータを移動しようとしています。現在、私たちのサービスには多くのビジネスロジックがありますが、それはいたるところに分散しており、継承の恩恵は受けません。 ほとんどの作業の中心である中央ドメインクラスがあります-貿易。Tradeオブジェクトは、それ自体の価格設定方法、リスクの推定方法、それ自体の検証方法などを知っています。その後、条件をポリモーフィズムに置き換えることができます。例えば、SimpleTradeはそれ自体の価格を設定しますが、ComplexTradeはそれ自体の価格を設定します。 ただし、これによりTradeクラスが膨張するのではないかと心配しています。本当に独自の処理を担当する必要がありますが、機能が追加されるにつれてクラスのサイズは指数関数的に増加します。 選択肢があります: Tradeクラスに処理ロジックを配置します。処理ロジックは現在、取引のタイプに基づいてポリモーフィックですが、取引クラスには複数の責任(価格、リスクなど)があり、大規模です TradePricingServiceなどの他のクラスに処理ロジックを配置します。Trade継承ツリーとポリモーフィックではなくなりましたが、クラスは小さくなり、テストが容易になりました。 推奨されるアプローチは何ですか?

1
ソフトウェアのテスト方法と開発者の生産性との関係に関する調査はありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 ソフトウェアテストプラクティス(単体テストや統合テスト)と開発者の生産性との関係に関する調査はありますか?

3
Javascriptで何をテストする必要がありますか?
仕事では、Javascriptベースのアプリケーション(実際はCoffeescriptを使用していますが、それでも)を開始したばかりで、その中にJsTestDriverとファブリックを使用した自動テストシステムを実装しています。 これほど多くのJavascriptを使用して何かを記述したことはないため、これまでJavascriptのテストは行っていません。私たちがユニットテストで何をテストすべきか正確にはわかりません。私たちはさまざまなことのためにJQueryプラグインを書いたので、JsTestDriverで可能な限り正しいことを検証する必要があることは非常に明白ですが、私のチームの他の誰もがページレベルのJavascriptもテストする必要があると考えているようです。 単体テストとしてページレベルのJavascriptをテストする必要はないと思いますが、代わりにSeleniumなどのシステムを使用して、すべてが期待どおりに動作することを確認します。私の主な理由は、現時点では、ページレベルのJavascriptテストはJsTestDriverを介して失敗することが保証されているためです。 それでは、Javascriptで単体テストを行うべきものは何ですか?

8
単体テストのライセンスを取得するのは理にかなっていますか?
ほとんどが単体テストで構成されているテストコードにライセンスを付与する(しない)ことの利点/リスクがあるかどうか疑問に思っています。どう思いますか? 特に、(L)GPL、Apache、MIT、およびBSDでのライセンスに興味があります。 編集:非テストコードは既に何らかのライセンスの下で公開されているが、テストコードは公開されていないことを前提としているため、公開するかどうか、公開する場合は同じライセンスを適用するかどうかが問題になります。

5
ConwayのGame of Lifeを実装する機能プログラミングの方法は何ですか[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 私は最近、ConwayのGame of LifeをJavascript(実際はcoffeescriptですが同じこと)で実装しました。javascriptは関数型言語として使用できるので、私はその範囲の終わりにとどまろうとしていました。結果に満足できませんでした。私はかなり優れたオブジェクト指向プログラマーであり、私の解決策は同じ古いものを叩きました。長い質問は短い:それを行う(擬似コード)機能スタイルは何ですか? これが私の試みの擬似コードです。 class Node update: (board) -> get number_of_alive_neighbors from board get this_is_alive from board if this_is_alive and number_of_alive_neighbors < 2 then die if this_is_alive and number_of_alive_neighbors > 3 then die if not this_is_alive and number_of_alive_neighbors == 3 then alive class NodeLocations at: (x, y) …

1
オープンソースプロジェクトでストック画像を使用する
私はオープンソースプロジェクトを開始しました。プロジェクトにラベルを付けるためのキュートでキャッチーなアイコンが欲しいです。私のジレンマは、このようなプロジェクトで使用するベクターグラフィックスを設計した経験がほとんどないことです。これを補うために、ストックフォトサービス(シャッターストックなど)からグラフィックを購入するかもしれないと考えました。 私のプロジェクトはGherkin言語ファイルからHTMLドキュメンテーションを作成します。私の意図は、各ページのフッターでこのアイコンを使用して、「...によって生成される出力」を作成することでした。 私の質問は、このグラフィックを使用する場合、ライセンスソフトウェアにどのような影響があるかです。Apache v2ライセンスでソフトウェアをリリースしています。

2
有界ナップザック問題を0/1ナップザック問題に変換する
目標が動的プログラミング(他のアプローチの代わり)を使用することであるという問題に出くわしました。スパンする距離と、異なる長さのケーブルのセットがあります。距離を正確にスパンするために必要なケーブルの最小数は何ですか? 私にはこれはナップザック問題のように見えましたが、特定の長さの倍数がある可能性があるため、0/1ナップザック問題ではなく、有界ナップザック問題でした。(各アイテムの値をその重さとして扱います。)単純なアプローチ(および検索スペースの拡大を気にしない)を採用し、境界ナップザック問題を0/1ナップザック問題に変換するために使用した方法は、単に倍数を単数に分割し、よく知られている動的プログラミングアルゴリズムを適用します。残念ながら、これは次善の結果につながります。 たとえば、指定されたケーブル: 1 x 10ft、 1 x 7ft、 1 x 6ft、 5 x 3ft、 6 x 2ft、 7 x 1ft ターゲットスパンが13フィートの場合、DPアルゴリズムは7 + 6を選択して距離をスパンします。貪欲なアルゴリズムは10 + 3を選択しますが、これはケーブルの最小数のネクタイです。15フィートをスパンしようとすると、問題が発生します。DPアルゴリズムは最終的に6 + 3 + 3 + 3を選択して4本のケーブルを取得しましたが、貪欲なアルゴリズムは3本のケーブルだけで10 + 3 + 2を正しく選択しました。 とにかく、境界を0/1に変換する軽いスキャンを行うと、複数のアイテムを{p、2p、4p ...}に変換するよく知られたアプローチのようです。私の質問は、p + 2p + 4pが複数のアイテムの数にならない場合、この変換がどのように機能するかです。たとえば、5本の3フィートケーブルがあります。3 + 2 x 3 + 4 x 3> …
12 algorithms 

5
HTMLヘルプの代替案
現在、AsciiDocと呼ばれるシステムを使用しており、単純なテキストマークアップでドキュメントを作成できます。それから、複数の出力形式を生成できます。pdf出力とchm出力形式のみを使用します。 chmに代わるものがあるのだろうか?私が探しているのは、ソフトウェアでオフラインで使用できるものです(非常に多くのユーザーが非常に離れた場所にいるため重要です)。インデックス(ハイパーリンクされた用語を含むhtmlページと同じくらい単純にすることができます)があり、検索可能で、コードから特定のエントリを呼び出すことができるメカニズムが必要です(状況依存ヘルプと同様)。 この場合のPDFに対する2つのことは次のとおりです。 状況依存ヘルプはオプションではありません 一般的に、ドキュメントはかなり大きい PDFは、状況依存ヘルプよりも印刷されたドキュメントに適しています 私が望むのは、htmlを使用することです。htmlの唯一の問題は、キーワード検索を自動的に提供する方法がわからないように見えることです(ブラウザのctrl + f機能以外-もっとはっきりしたいのですが)。また、キーワードのハイパーリンクインデックスを自動的に生成する方法が見つからないようです。セクションタグがあるため、状況依存ヘルプは簡単です。デフォルトのブラウザに興味のあるページとセクションのURLを渡すだけで、そのページは正しいセクションまで読み込まれます。 私の要件はchmのようにひどく聞こえます-そうです。要件をchmからモデリングしました。私がchmが好きではない唯一の理由は、コードがmapidなどを使用してそれと対話する方法のためです。私のコードがドキュメントのコンテキスト依存部分にアクセスするために使用できるプレーンテキストリスト(自動的に生成されます)を保存することをお勧めします。 私は、html出力ファイルを調べて、見つかったキーワードのリストを単に含むインデックスページを生成するスクリプトを想定しています。明らかに、the、it、isなどのような単語を無視する単語除外メカニズムが必要です。この部分は比較的簡単に記述できます。2番目の部分には、HTMLテキスト内のキーワードとその場所のデータベースをまとめるための何らかのスクリプトが必要です。これは、ブラウザ内で検索メカニズムを提供するとともに、難しい部分になると思います。 代替案に関するアイデアをいただければ幸いです。私はウィキまたはウェブサーバーでホストされている静的なHTMLページのセットをどこかで使用したいと思っていますが、重要なオフライン使用要件があります。htmlをローカルドライブに配置するだけでは、必要な検索要件が提供されません。 編集: 私は、鉱業で使用されるソフトウェアを設計しています。鉱山の多くは非常に離れており、意味のある方法でインターネットにアクセスできません。pdf、html、chmには何も問題はありません(古くなっていることを除きます)。PDFファイルを正しい場所に表示できる場合(つまり、状況依存ヘルプ)、それを使用します。私はほとんど自分で書きたいと思っています-基本的にはポータブルwikiになります。そういえば、ポータブルwikiを提案する場合は、そのようなツールの使用経験のないエンドユーザーについて考える必要があります。それは非常にシンプルでなければなりません。それはchmの美しさであり、連携するのは苦痛ですが、エンドユーザーはそれを気に入っています。

2
WCF / SOA-単純な要求のパラメーターオブジェクトを作成する理由
当社はかなり大規模なSOAイニシアチブを開始しています。私たちは多くのことを正しくやっています。良いコミュニケーションがあります。必要に応じてツールの費用。そして、移行に役立ついくつかの優れた専門知識をもたらしました。 私たちはグループとして従うことができる標準を開発しようとしていますが、提案されている標準の1つが私をかなり悩ませています。 すべての操作が要求オブジェクトを受け取り、応答オブジェクトを返すパターンを標準化しました。 私はこれが多かれ少なかれ多くの人々にとって標準的なアプローチであることを理解していますが、なぜ私は気にする必要があるのでしょうか?(私は受け取った知恵があまり得意ではありません。なぜか必要です)。 私が提供するサービスのほとんどは、単純な組織メタデータの取得です。たとえば、特定のユーザーのセキュリティポリシーを見つけます。これにはユーザーIDのみが必要です。標準では、この要求をオブジェクトにラップし、返されたポリシーを応答オブジェクトにラップする必要があると説明されています。 私の不安は、契約から生成されるWSDLを見ると増幅されます。WCFは要求および応答メッセージを自動的に生成し、要求/応答オブジェクトもラップします。 複雑なリクエストを行う場合は、複雑な入力オブジェクトが必要であることを完全に理解しています。これは、サービスが関与していなくても行うことです。 私の質問は、次の場合に要求と応答を自動的にラップする必要がある理由です。 シンプルなサービスの表現力が低下します とにかく複雑なサービスのためにそれをするでしょう とにかくWCFは要求/応答メッセージを作成します このアプローチを支持する次の議論を見つけました。 オプションのパラメーターを要求オブジェクトに組み込むことにより、バージョン管理をサポートします。 当時、私はかなりの量のCOMを実行していましたが、これはバージョニングのほぼアンチパターンと考えています。いくつかの点で、私はそれが助けになると思いますが、それが助けになる場所では、とにかく既にパラメータオブジェクトを持っていると期待しています。 共通のデータと動作を基本クラスに分離できます これは私にいくらかの重さをもたらします。 RPCスタイルの動作からメッセージング動作に人々を誘導します マイクロソフトのサイトでこれを読んで、教祖から聞いたが、それが何を意味するのか、なぜそれが価値があるのか​​、まだはっきりとはわからない。自然に見えるインターフェースは、人々がリモートサービスを呼び出していることを忘れがちなのでしょうか? おそらく300のメソッドのシグネチャをリファクタリングすることを検討しているので、これは些細なことではありません。私は実装における一貫性の大ファンですので、私は喜んで痛みを引き受けます。それは最終的にすべての価値があることを知るのに役立ちます。
12 soa  wcf 

8
本当のKISSソリューションはどのくらい「シンプル」ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 私は告白します:読んだ本や聞いたデザインパターンなどに基づいてそれを作ろうとすると、そのような熱意-から来る熱意が私に与えられるので、ほとんどの場合、「シンプルで短く保つ」という問題がありますその感覚は、私がありそうな完璧さへの正しい道にいます。 一方で、はい、それは時々締め切りを提供するという点で私に余分なストレスをかけます... しかし、私が自分自身に言うときはいつでも、「次回は単純にしてください、あなたは愚かです!」次回になったときに「シンプル」にするのは静かだと思いますが、それは奇妙に感じ始め、ある時点で不快に感じるからです。 それから、私は「シンプル」の私の理解を判断し始めます... SIMPLEは短すぎて機能しませんが、維持および拡張が難しいということですか? SIMPLEは、OOPの原則の多くを破ることを意味しますか? SIMPLEは不正行為を意味しますか? SIMPLEとは、締め切りなしに期限を守ることを意味しますか?等 実際、それは何ですか? 質問は次のとおりです。KISSの原則に関して、SIMPLEの正確な定義を記述できますか。-もしあれば。 ありがとう!


2
数年間単独で開発した後、チーム環境に適応する
私はWeb開発者としてほぼ5年の経験があり、今は中級レベルにあるべきだと感じていますが、歩いてもまだ「ジュニア」だと思います。 私が問題だと思うことは次のとおりです:私のキャリアのほとんどで、私はより上級の開発者と開発者チームでのゼロの経験による本当のガイダンスを得ることはほとんどなかったので、多くの解決策を自分のやり方でハックし、すべてをしなければなりませんでしたカットアンドドライ。実際には、コードの作成または保守を担当する唯一の人物として無駄にする時間はありませんでした。このため、実際のソフトウェア開発プロセスに関する正式な知識はなく、最終的にコーディングはプロセスのほんの一部に過ぎないことに気付きました。 確かな経験を持つ開発者チームと一緒に仕事をすることは大いに楽しみますが、開発プロセスに必要な知識ベースで調整しようとすると非常にでこぼこになると思います。キャリアのほとんどをソロで過ごしたプログラマーとして、ベテランのプロ(5人以上)の大規模なチーム(少なくとも5人)で働く仕事に「落ち着く」準備をするにはどうすればよいですか。 編集:そのために、私は彼らのソフトウェアと開発者で繁栄する「ビッグショット」企業によって与えられた技術的なテストの多くに合格していません。大まかに言って、Googleのような意味ではありませんが、地理的な領域で合理的に成功しています。
12 teamwork 

5
スクラムメンバーが途中で退去した場合はどうすればよいですか?
スクラムメンバーの1人の健康状態のため、彼はチームを離れなければなりません。 私の質問は、スプリントプランニングセッションを再度開始する必要があるかどうかです。またはバーンダウンチャートを変更しますか?または、すべてのチームメンバーに弾丸を噛んでもらい、目標を達成するために追加の作業を行うよう依頼しますか? ありがとう

8
上司が常に要件と全体的な設計に関する重要な決定を延期する場合はどうすればよいですか?
新しいプロジェクトを開始するとき、上司は常に決まった決定を下すことを避けています。彼は通常次のように言っています:わかりました、何かを書き始めて、できるだけ一般的になりなさい。終了したら、私たちがどのように続けるかを見ていきます。彼の議論は基本的に、あなたが決して知らない「アジャイル開発」だということです。 質問をできるだけ一般的にするために、上司が意思決定をしたくない場合はどうしますか? それに固執して、数週間後に重いリファクタリングと部分的な書き換えを受ける可能性のあるコードを書くだけですか?または、ボスが少なくともいくつかの決定をするまで議論を続けますか?これは多かれ少なかれ私の現在の戦略です。それは物理学の法則に似ているため、ある時点で何かを提供する必要があります。上司のボスが結果を見たいか、何かがばかげているからです。 また、上司がほぼすべてを批判していることも観察しています。彼自身に基づいた提案でさえ...

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