ソフトウェア工学

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

14
非生産的なスクラムチームに対処するにはどうすればよいですか?
バックストーリー: 私は過去3年間このチームの一員として働いていましたが、今回は3つの異なるスクラムマスターがいます。 スクラムマスターの変更とショーの運営方法のため、原則が一貫して実施されておらず、スクラムマスターの1人がアジャイルを信じない人だったため、私のチームはスクラムのアイデアに無感覚になりました。開発と企業の決定に従うための初心者としてのイベントとアーティファクトの保持。 私のチームメンバーは、スクラムイベントを行うときにイライラして退屈し、特に一人はこのことについて非常に口頭で話します。 現在: 2か月前、会社はアジャイルとその原則に専念するために、私のチームのスクラムマスターを任命しました。 私は、チームメンバーがスクラムを実行したくないという大気圧の下で非常に苦しんでいます。 前述したように、彼らは全体のプロセスに悩まされており、プランニング、レトロスペクティブ、およびデイリースクラムを効果的にするために必要な会話に参加していないため、私にとって非常に困難です。 彼らにとって、計画は時間の浪費です。なぜなら、私たちはオーバーフローを新しいスプリントに移し、とにかく作業を完了しないからです。 振り返ってみると、彼らは「スクラムをやめる」と言いたいと思うだけです。一人はそうしますが、他の人は黙っており、私は毎回これに対処しなければなりません。 デイリースクラムもまた、彼らにとっては時間の無駄です。彼らは「昨日はタスクXに取り組みましたが、今日もまたタスクXに取り組みます」と述べています。そしてほとんどの場合、彼らは冗談を言って冗談を言った。 これらのイベント中に彼らがどのように時間を過ごしたかということになると、私は非常に大きくなりました。しかし、私はこれに情熱を傾けており、彼らはもう気にしないので、内側で死にかけています。 今日、私に常に反対している人は、「彼らはこのスプリントのためにコミットしたことだと言った」と言うのをやめるように言った。次のスプリントでクォータを埋めます。実際にKanBanを実行します。 なぜ彼がこれを言うのか理解していますが、彼とチームの他の全員が気にしないので、これがそうであることを理解していないようです。障害を処理するのではなく、単に機能します。彼らは障害について文句を言いますが、それらについては何もしません。そして、私が彼らを助けようとするとき、彼らはそれをすくい取るだけです。 かつて彼らは気にかけていましたが、過去2年間で彼らの意欲は多少なりとも底に落ちました。 これらの会議中に冗談を言ったり時間を無駄にしたりすると、会社に多額の費用がかかることを彼らに見せることができますか?

9
依存性注入について
私は依存性注入(DI)について読んでいます。私にとって、それは制御の反転(IoC)を参照していることを読んでいたので、行うのは非常に複雑なことであり、私は旅に出るつもりだと感じました。 これは私の理解です:それを消費するクラスでモデルを作成する代わりに、モデルを(すでに興味深いプロパティで満たされている)必要な場所に渡します(注入します)コンストラクター)。 私には、これは単に引数を渡すだけです。私はポイントを理解し損ねたに違いない?おそらく、より大きなプロジェクトでより明白になりますか? 私の理解は非DIです(擬似コードを使用): public void Start() { MyClass class = new MyClass(); } ... public MyClass() { this.MyInterface = new MyInterface(); } DIは public void Start() { MyInterface myInterface = new MyInterface(); MyClass class = new MyClass(myInterface); } ... public MyClass(MyInterface myInterface) { this.MyInterface = myInterface; } 私はここで混乱していると確信しているので、誰かが光を当てることができますか?

6
GETリクエストがサーバー上のデータを変更しないのはなぜですか?
インターネット全体で、次のアドバイスが表示されます。 GETはサーバー上のデータを変更してはいけません-そのためにPOSTリクエストを使用してください この考えの根拠は何ですか? データベースにデータを挿入するphpサービスを作成し、GETクエリ文字列でパラメーターを渡すと、なぜ間違っているのですか?(SQLインジェクションを処理するために、準備済みステートメントを使用しています)。POSTリクエストは何らかの方法でより安全ですか? または、これには何らかの歴史的な理由がありますか?もしそうなら、このアドバイスは今日どのくらい有効ですか?
109 http  http-request 

5
継承よりも合成を優先する必要があるのはなぜですか?
私は常に、構成が継承よりも優先されることを読みました。種類とは異なり、上のブログの記事は、例えば、相続上の組成物を用いて提唱したが、私は多型が達成されたかを確認することはできません。 しかし、私は人々が作曲を好むと言うとき、彼らは本当に作曲とインターフェース実装の組み合わせを好むことを意味すると感じています。継承なしでどのようにポリモーフィズムを取得するのですか? 継承を使用する具体的な例を次に示します。構成を使用するためにこれをどのように変更しますか? Class Shape { string name; public: void getName(); virtual void draw()=0; } Class Circle: public Shape { void draw(/*draw circle*/); }

20
開発者としてオープンソースでwithかる?
私は現在学生(応用情報技術)で、ほとんどのプログラミングをC#とJavaで行っています。開発者として、オープンソースでお金を稼ぐにはどうしたらいいのだろうと思っていました。サポートを提供したり、サービスを提供したりする話があることは知っていますが、私はシステム管理者ではなく、システム管理者の仕事が好きではありません。実際、将来はCやC ++を手に入れて、低レベルの開発をしたいと思っています。 私の実際の質問は、オープンソースソフトウェアの開発で稼ぐお金はありますか? 編集:私自身のオープンソースプロジェクトを開始することは必要条件ではないことを指摘するだけです。

1
Gitでコミットとタグに暗号で署名することの利点と欠点は何ですか?
だから誰かが私の仕事をレビューし、彼は私にいつも私のコミットとタグに暗号で署名するべきだと言った。理由を尋ねられたとき、彼はそれを私に説明することを知らず、「やるのは良いことだ」と言った。 明らかなチンパンジーのシナリオを回避しようとすると、なぜ本当に必要なのでしょうか?本当に多くの明確な利点があり、欠点はありませんか? 私が作成するすべてのコミットとタグに署名したいと思う実用的な理由は何ですか?
109 git  cryptography 

10
C#で「静的」を使用しないでください
コードレビューのために、他のアーキテクトに書いた申請書を提出しました。そのうちの1人はすぐに返事を書き、「「静的」を使用しないでください。静的クラスと静的メソッドを使用して自動テストを作成することはできません。「静的」は避ける必要があります。」 チェックして、クラスの1/4が完全に「静的」とマークされています。クラスはコード全体で使用される単一のグローバルクラスであるため、クラスのインスタンスを作成しない場合は静的を使用します。 彼は、静的コードでは使用できないモック、IOC / DIテクニックを含むものについて言及し続けました。彼は、サードパーティのライブラリがテスト不能であるために静的である場合、それは残念だと言います。 この他の建築家は正しいですか? 更新:ここに例があります: APIManager-このクラスは、次に許可される時間とともに呼び出しているサードパーティAPIの辞書を保持します。多くのサードパーティが利用規約で持っているAPIの使用制限を強制します。Thread.Sleep(APIManager.GetWait( "ProviderXYZ"))を呼び出して、サードパーティサービスを呼び出す場所で使用します。電話をかける前に。ここにあるものはすべてスレッドセーフであり、C#のTPLでうまく機能します。

12
(ジュニア)開発者は、開発/ ITチームでより良いプロセスと実践を推進する必要がありますか?
私はジュニア開発者であり、変更を正当化することができ、チームが作業を完了するのに役立つ場合、チームのプロセスを形作るのに役立つ能力を与えられています。私の過去の企業は、管理から来るプロセスを多かれ少なかれ厳密に定義していたので、これは私にとって新しいものです。 私のチームはかなり小さく、やや新しい(<3歳)です。彼らは欠けています: 明確に定義されたソフトウェア開発/作業管理フレームワーク(スクラムなど) 強力な製品所有権 明確に定義された役割(たとえば、ビジネススタッフが手動テストを行う) 定期的なスタンドアップミーティング 統合された問題追跡プロセス(ツールがあり、プロセスはまだ開発中です) ユニット、システム、リグレッション、または手動テストスイートまたはリスト ビジネスロジックとプロセスに関するドキュメント 社内および顧客向けのヒントを文書化するナレッジベース そしてリストは続きます。経営陣は、価値が正当化され、最も重要な作業(開発)が完了するのを助ける限り、改善の実施に対してオープンです。ただし、基本的な前提は、誰もあなたのためにそれをするつもりはないので、実装の所有権を取る必要があるということです。そして、言うまでもなく、上記のプロジェクトのいくつかは、時間のかかる疑いもなく、重要なものであり、明らかに開発作業ではありません。 時間が経つにつれて上記のことを試してプッシュする(後輩の)開発者の努力の価値はありますか?または、「自分のレーンにとどまり」、開発に集中し、プロセスの定義と最適化の大部分を管理者に任せることが最善でしょうか?

13
入力が技術的に有効であるが、満足できない場合の例外と空の結果セット
私は公開リリースを目的としたライブラリを開発しています。オブジェクトのセットを操作するためのさまざまなメソッドが含まれています-セットを生成、検査、パーティション分割、新しいフォームに投影します。関連する場合IEnumerableは、NuGetパッケージとしてリリースされるLINQスタイルの拡張を含むC#クラスライブラリです。 このライブラリの一部のメソッドには、満たされない入力パラメーターを指定できます。たとえば、組み合わせメソッドには、m個のアイテムのソースセットから構築できるn個のアイテムのすべてのセットを生成するメソッドがあります。たとえば、次のセットを考えます: 1、2、3、4、5 2の組み合わせを要求すると、次の結果が得られます。 1、2 1、3 1、4 等... 5、3 5、4 現在、3つのアイテムのセットを提供し、各アイテムを1回しか使用できないというオプションを設定しながら、4つのアイテムの組み合わせを要求するなど、実行できないことを要求することは明らかに可能です。 このシナリオでは、各パラメーターは個別に有効です。 ソースコレクションはnullではなく、アイテムが含まれています 要求された組み合わせのサイズは、ゼロ以外の正の整数です 要求されたモード(各アイテムを1回のみ使用)は有効な選択です ただし、パラメーターの状態を一緒にすると問題が発生します。 このシナリオでは、メソッドが例外をスローすることを期待しますか(例:)InvalidOperationException、または空のコレクションを返しますか?どちらも私にとって有効なようです: あなたは、の組み合わせを生成することができないn個のセットから項目をm個の項目N> M君はそれゆえ、一度だけ、各アイテムの使用を許可しているので、この操作は不可能と考えることができる場合InvalidOperationException。 n> mが空のセットである場合にm個のアイテムから生成できるサイズnの組み合わせのセット。組み合わせは作成できません。 空のセットの引数 私の最初の懸念は、サイズが不明なデータセットを処理する場合、例外が慣用的なLINQスタイルのメソッドのチェーンを妨げることです。言い換えれば、あなたはこのようなことをしたいと思うかもしれません: var result = someInputSet .CombinationsOf(4, CombinationsGenerationMode.Distinct) .Select(combo => /* do some operation to a combination */) .ToList(); 入力セットのサイズが可変の場合、このコードの動作は予測できません。場合は.CombinationsOf()、例外をスローしたときsomeInputSetよりも少ない4つの要素を持っている場合、このコードがします時々、いくつかの事前チェックせずに、実行時に失敗します。上記の例では、このチェックは簡単ですが、より長いLINQチェーンの途中で呼び出す場合、これは面倒になります。それが空のセットを返す場合、空になりますresult。 例外の引数 私の2番目の懸念は、空のセットを返すと問題が隠れる可能性があることです-LINQのチェーンの途中でこのメソッドを呼び出して静かに空のセットを返す場合、後でいくつかの手順で問題が発生するか、空の結果セット。入力セットに何かが確実に含まれていた場合、それがどのように発生したかは明らかではないかもしれません。 あなたは何を期待しますか、それに対するあなたの議論は何ですか?



8
Webプログラミングでポーリングが受け入れられるのはなぜですか?
現在、画像のリストを表示するRuby on Railsプロジェクトに取り組んでいます。 このプロジェクトの必需品は、Webページを更新する必要なく、リアルタイムで新しい投稿を表示することです。しばらく検索した後、PubNubなどのJavaScriptソリューションとサービスに出くわしました。ただし、提供されたソリューションはどれも意味がありません。 JavaScriptソリューション(ポーリング)では、次のことが起こります。 ユーザー1が写真のリストを表示します。 バックグラウンドでは、JavaScriptコードがエンドポイントを1秒ごとにポーリングして、新しい投稿があるかどうかを確認しています。 ユーザー2が新しい写真を追加します。 新しいサイクルがトリガーされ、新しいデータを取得するまでに50ミリ秒の遅延があります。 新しいコンテンツがDOMにロードされます。 これは実世界の例に翻訳すると奇妙に思えます: ユーザー1は、自分の机に写真の山を持っています。 彼/彼女は毎秒カメラマンのところへ歩いて行き、彼が新しいものを持っているかどうか尋ねます。 写真家は新しい写真を作成します。 彼/彼女が中に入るとき、彼女は写真を撮り、それを山に置くことができます。 私の意見では、解決策は次のようにする必要があります: ユーザー1は、自分の机に写真の山を持っています。 写真家は新しい写真を撮ります。 写真家は山まで歩いて、残りの部分と一緒に置きます。 PubNubソリューションは基本的に同じですが、今回はデータを共有するために当事者間でのインターンがあります。 言うまでもなく、両方のソリューションは、ロードするデータがない場合でもトリガーされるため、非常にエネルギーを消費します。 私の知る限り、ほとんどすべてのリアルタイムアプリケーションでこの実装方法が使用されている理由(論理)は説明されていません。
108 loops  logic  polling 

29
知識ベースをどのように管理していますか?[閉まっている]
プログラマーとして、多くの入力があります。 電子ブック コードスニペット 興味深いメール 書類 Web記事 ブログ投稿 StackOverflowに関する質問 ポッドキャスト ... これらすべてを保存、整理、検索、および相談するためにどのツールを使用しますか? この膨大なデータを処理するための特効薬ソリューションはありますか?

20
静的型付けはトレードオフの価値がありますか?
主にタイプセーフがないPythonでコーディングを開始し、次にC#とJavaに移行しました。Pythonでの作業が少し速くなり、頭痛が少なくなることがわかりましたが、C#およびJavaアプリの複雑度ははるかに高いため、Pythonに本当のストレステストを与えたことはありません。 JavaとC#のキャンプは、タイプセーフティが適切に設定されていないように聞こえます。ほとんどの人は、あらゆる種類の恐ろしいバグに遭遇し、その価値以上の問題を抱えています。 これは言語の比較ではないため、コンパイル済みと解釈済みなどの問題に対処しないでください。型の安全性は、開発の速度と柔軟性に打撃を与える価値がありますか?どうして? 動的型付けのほうが速いという意見の例を望んでいた人たちに: 「開発中に動的に型指定された言語を使用します。これにより、フィードバック、ターンアラウンドタイム、および開発速度が速くなります。」- http://blog.jayway.com/2010/04/14/static-typing-is-the-root-of-all-evil/

5
コンテナでの依存性注入の使用とサービスロケーターの使用の違いは何ですか?
クラス内で依存関係を直接インスタンス化することは悪い習慣と見なされることを理解しています。これは、すべてを密接に結合するため、テストが非常に困難になるため、理にかなっています。 私が出くわしたほとんどすべてのフレームワークは、サービスロケーターの使用よりもコンテナーでの依存性注入を好むようです。どちらも、クラスが依存関係を必要とするときに返されるオブジェクトをプログラマーが指定できるようにすることで、同じことを達成しているようです。 2つの違いは何ですか?なぜ私は一方をもう一方よりも選ぶのでしょうか?

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