ソフトウェア工学

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

2
静的内部ビルダークラスを使用する利点
会社のコードガイドラインを作成する過程で、伸縮自在のコンストラクターではなく、Effective JavaのBuilderパターンを使用することをお勧めしました。 ただし、少し考えてみれば、よりエレガントなソリューションは、ビルダークラスを削除し、オプションの引数を持つ余分なコンストラクターを削除することです。 したがって、必要なパラメータを備えた1つのコンストラクタ、通常のゲッター/セッターを用意し、コードにコメントを付けます。実装するときは、yrオブジェクトの新しいインスタンスを作成してから、値を設定します。 私の当初の考えは、どのパラメーターがオプションであり、何が必要であるかに関する混乱を取り除くことから利益が得られるということでした。ただし、真の利点は、メソッドチェーン/流暢なインターフェイスを使用することから得られます。 IDEがレッグワークを実行できるため、新しいインスタンスをたくさん作成する場合や、多くの(15以上の)オプションパラメーターがある場合にも、ビルダーパターンには利点があります。しかし、静的内部クラスをコーディングする余分な時間の価値はありますか、ビルダーの使用をお勧めしますか、それとも時間の無駄ですか?
9 java 

3
並行システムのアクターモデルについて学習するための推奨リソースは何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 アクターの同時実行モデルは明らかに支持を得ています。モデルのパターンと落とし穴を示す良い本はありますか?私は、例えば、数百または数千の独立した俳優の文脈における一貫性と正しさの問題を議論するようなことを考えています。 特定の言語(Erlang、それは一般にアクターの実証済み実装とみなされているように思われるので、想像できると思います)に関連付けられていても問題ありませんが、1つか2つの紹介章以上のものを期待しています。Scalaで実装されているアクターには、そのようなリソースが利用可能であれば、私は実際に最も興味があります。

4
どうして何もできないの?
私は中規模の会社の小さなチームで働いています。そのほとんどはソフトウェア開発に関与していません。私は最新かつ最も経験の浅い開発者であり、開始する前にソフトウェアの専門的または学問的なバックグラウンドを持っていませんでしたが、私の入力がどれほど尊重されたかに非常に満足しており、私のキャリアの早い段階で真剣に受け止められたことに感謝しています。 それでも、私はこの寛大な量の放送時間でもっと多くのことをすべきだと感じています。チームとして、物事を成し遂げるのに苦労しているようです。状況を改善するために何か提案できるようになりたいと思います。それが良いアイデアだったら聞いてもらえると思いますが、何を提案すべきか途方に暮れています。 問題として特定できるものは次のとおりです。 手元のタスクの仕様はまばらです。これは、管理がボトルネックであり、私たちが望むほど詳細な要件を解決するために費やすお金や人がいないためです。また、開発中のソフトウェアは調査対象であり、その有効性を判断するために実証および使用されるまで正確な方法が明確ではないためです。 Lead Devは、彼が最近すべてを「プロトタイピング」していると主張し始めたところまで彼が「プロトタイピング」と呼んでいるものを非常に気に入っています。多くの場合、彼がこの演習から何を期待しているのかは明確ではありません。「実際の」実装は、プロトタイピングに時間がかかりすぎるという彼の主張のために、苦しみます。私はこのねじれた論理を解くことができるようになり始めていないので、試してみたいと思いませんか。 モデラーは望ましい方法論についてすべてを正確に詳細に教えてくれることが期待されており、彼らが生み出すものは理論的に完璧であるという絶対的な信頼に基づいています。これはほとんど真実ではありませんが、この状況を修正するためのアクションは取られません。モデリングの側の誰も、行動を起こそうな構造化された方法で懸念を提起したり、ベストプラクティスを適用する際のガイダンスを求めたりすることはありません。彼らの受動性についても何も行われません。 私は以前にチームでTDDをプッシュしようとしましたが、それは私にとって新しいものであり、私の仕事を監督している人はそれを許容する用意がある一方で難しいと感じましたが、他の誰からも熱意はありませんでした。機能を詰め込んで仕上げるのではなく費やす時間を正当化することはできないため、このアイデアは(現時点では)放棄されています。私はそれが再び取り上げられないのではないかと心配しています。 現在、継続的インテグレーションサーバーがありますが、ほとんどの場合、数時間の回帰テストを実行するためにのみ使用されています。フルカバレッジの単体テストと統合テストも実行する必要があることはオープンなままですが、現時点では誰も作成していません。 リード開発者と一緒に品質の問題を提起するたびに、「機能Aのテストは簡単です。機能Bはユーザーにとって非常に重要ですが、テストが難しいため、機能をテストするべきではありません。 A '。もう一度、私はこの論理を解き明かそうとして進んでいません。 ....ふw。そんなふうに言うと、思っていたよりもずっと悪く見えます。結局のところ、これは助けを求める叫びだと思います。

2
Haskell GUI:Haskellでできること
Haskellでグラフィックスを試してみたいと思っています。私が見てきたことから、利用可能なライブラリは、C / C ++ライブラリのフロントエンドか、最小限の機能を備えたそれらの抽象化のいずれかです。高レベルのライブラリーは私のニーズに合わないようなので、低レベルのフロントエンドのままにしておきます。 必要なのは、タイルとテキストをレンダリングすることです。これは、非常に単純なゲームの基本です。私はこれをCで行う方法を知っており、グラフィックをCで記述してHaskellとインターフェイスできると考えていました。別の方法は、Haskellライブラリを使用してグラフィックを書き込むことです。 私の質問は、利用可能なHaskellライブラリが私が望むものを達成できるかどうかです。私は後ろに曲がりたくありません。Cが私が知りたいよりも上手にできるなら。

2
動的プログラミング手法を使用して、「ピザピッキングの問題‍」をどのように解決しますか?
ウィンクラーのピザピッキング問題: nスライスの円形ピザパイ。スライスにiは面積があります。S_iつまり、面積はパイのピースごとに異なります。 食べる人のアリスとボブは交互にスライスを選んでいますが、パイに複数のギャップを作るのは失礼です(許可されていません)。 したがって、各イーターは、オープン領域に隣接する2つのスライスの1つを取得するように制限されています。アリスが最初に行き、両方の食べる人はできるだけ多くのパイを探します。 ピザの消費を最大化するためにアリスとボブの両方が完璧にプレーした場合、動的プログラミングアルゴリズムはアリスが食べるパイの量をどのように決定しますか? 私の理解: 一般的なDP問題では、再帰ツリーを使用して、またはより厳密にはDAGを使用して視覚化できるサブ問題を見つけます。ここで、私はここで副問題を見つけるためのリードを見つけていません。 ここで、S_iの特定のセットについて、Aliceが食べるスライスの領域を最大化する必要があります。これは、(n-1)個の順列からPizzaスライスの順列を選択することに依存します。アリスが取得するn \ 2ターンごとに使用可能な2つのオプションから最大面積スライスを選択すると、順列のスライスの総面積が得られます。そのようなすべての順列についてスライスの領域を見つける必要があります。そして、これらのうち最大のもの。 誰かが私を前進させる方法を手伝ってくれる?

4
「例外のキャッチ」を使用して読みやすさを向上させる、良いか悪いか?
セクションで使用例外にする場合で実用的プログラマー、代わりのブックへの書き込み: retcode = OK; if (socket.read(name) != OK) { retcode = BAD_READ; } else { processName(name); if (socket.read(address) != OK) { retcode = BAD_READ; } else { processAddress(address); if (socket.read(telNo) != OK) { retcode = BAD_READ; } else { // etc, etc... } } } return retcode; 、 彼らは好む: retcode …

6
「推奨」ファイルの長さと線幅[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 特定のファイルのコードの最大行数について、評判の良いソースからの推奨事項を誰かが知っているかどうか知りたいと思いました。たとえば、GoogleのClosure Linterは、各行が80文字を超えないようにすることを推奨しています。

3
REST API呼び出しを通じてアプリの使用状況を追跡することは倫理に反していますか?
サーバー側でPHPベースのREST APIへのASIHTTPRequestを使用してウェブサイトと通信するアプリを構築しています。 当然、私のアプリではサーバー側にさまざまなエンドポイントがあり、通常はJSONデータを返します。 各エンドポイントがヒットした回数についてカウンターをログに記録することは倫理的ではありませんか? どのエンドポイントがヒットしたか、ユーザーエージェント、時刻、場合によってはそれらのIP(グループの訪問など)をキャプチャして、アプリがどのように使用されたかをキャプチャしたいと思います。 これを行うには許可を求める必要がありますか?

3
同じ動作を示す複数のオブジェクトの単体テストをどのように構成しますか?
多くの場合、私はいくつかの動作を持つ既存のクラスがあるかもしれません: class Lion { public void Eat(Herbivore herbivore) { ... } } ...そして単体テストがあります... [TestMethod] public void Lion_can_eat_herbivore() { var herbivore = buildHerbivoreForEating(); var test = BuildLionForTest(); test.Eat(herbivore); Assert.IsEaten(herbivore); } さて、私はライオンの行動と同じ行動をするTigerクラスを作成する必要があります: class Tiger { public void Eat(Herbivore herbivore) { ... } } ...そして私は同じ動作をしたいので、同じテストを実行する必要があります、私はこのようなことをします: interface IHerbivoreEater { void Eat(Herbivore herbivore); } ...そして私は私のテストをリファクタリングします: …

6
過去のプロジェクトをどのように追跡しますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 数年前に私の過去のプロジェクトの詳細を覚えようとするのに苦労した後、プログラマーは通常それを追跡する方法を疑問に思っていましたか? このような情報は、就職の面接などで役立ちます。 使用している技術、直面している課題などを「ジャンボCV」のようなものに書き留めていますか?それともあなたはあなたの記憶を信頼していますか?

6
Cで関数型プログラミングを学ぶことができますか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4年前休業。 ここでのコメントディスカッションの結果、Cで関数型プログラミングを学ぶことができるかどうか疑問に思います。
9 c  paradigms 

4
オブジェクトの作成は、暗黙的または明示的にファイルを作成する必要がありますか?
私は、ある形式のファイルを読み取り、別の形式のファイルを作成することを唯一の目的とするオブジェクトを作成しています。 オブジェクトの初期化中に出力ファイルを暗黙的に作成するのが最善ですか、それともユーザーがこのファイルを作成するかを選択できるパブリックメソッドを用意するのが最善ですか?

1
デュアルライセンスを取得するにはどうすればよいですか?
GPL v3で私のプロジェクトをオープンソースにしたいのですが。さらに、独自のアプリケーションでコードを使用したい人のためにライセンスを販売したいと思います。 GPL v3でソースコードをリリースする方法と、選択した別のライセンスでソースコードをリリースする権利を確保する方法を教えてください。それでもGPLヘッダーを各ソースファイルの上部に配置しますか? 私はソフトウェアの法的側面にかなり慣れていません。

5
あなたのプロジェクトに新人開発者を含める方法は?
私たちは、ゼロまたは一般的な趣味レベルのプログラミング経験のある一部の従業員に、私からワークロードを取り除くように教えることを検討しています。 私たちはPython / Djangoを使用しています。Python/ Djangoには、最も親しみやすいドキュメントがいくつかあり、学ぶのも簡単です。 私は現在、私の会社の1人のIT部門であり、会社が必要とするすべてを開発するのに十分な時間がありません。私たちはソフトウェア会社ではありませんが、社内ITにタスクの自動化、顧客サービス機能の開発、データの分析などを行うのに役立ちます。 コードベースで作業している新人をどのようにゆっくりと統合しますか?あなたがインターンを持っているとしましょう-彼らは何をしますか?私たちは何年もの間彼らのミス/奇妙なデザインパターンに対処するつもりなので、私は彼らにコアコードを設計または開発させることを完全にためらっています。主な開発者として、コードを回避する必要があるのは私です。 私の考えは、新人が既存のコードを変更するだけで、コア機能を構築しないようにすることでした。機能自体をビルドした後、簡単なタスクで彼らに作業をオフロードできます。 私たちは従業員に会社で価値を学び/見つけてもらいたいのですが、私たちは一般的に「階級を上げる」人々を持っています。 一般/趣味レベルのプログラミングを持つ人々を教えることは標準的な練習ですか?ソフトウェア会社の「ランクを上げる」ことは、ジュニアレベルのプログラマにとってどのように機能しますか?彼らはいつコアコードに取り組み始めますか? ヘルプよりも被害が大きくなるかどうか、またはコアサイトコード(分離環境?)を危険にさらすことなくヘルプを使用できる方法があるかどうかを判断しようとしています。
9 team  business 

5
バグ修正の反復を説明する方法は?
過去5か月間、私たちはスクラムをかなりうまく実装してきました。しかし、我々はせずに3週間離れPRODからですこれまでの任意のエンドツーエンドの統合テストを行います。痛い!私は助けが必要です。これの原因に取り組むことなく(この時点で)、現在のイテレーションを計画する必要があります。これは、マイナーな改良と多くの未知のバグ修正で構成されています。このシナリオをどのように説明しますか?まだ発見されていないバグを修正するための反復をどのように計画しますか?
9 scrum  bug  planning 

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