ソフトウェア工学

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

4
実装クラスで設計パターン名を使用するのは良い考えですか?[閉まっている]
最近、私はたくさんの適度に大きなPythonのコードベースに出くわしたMyClassAbstractFactory、MyClassManager、MyClassProxy、MyClassAdapterなどのクラス。 一方で、それらの名前は、対応するパターンを調査し、学習するように私を指し示しましたが、クラスが何をするのかをあまり説明していませんでした。 また、彼らはプログラミングの単語の禁止リストに収まるように見える:variable、process_available_information、data、amount、compute:私たちの機能については何も教えていない、過度に広範な名前、単独で使用する場合。 CommunicationManagerそれとも、あるべきPortListenerでしょうか?または、私は問題をまったく理解していないかもしれません...?

4
単一ページのアプリケーションへのログインページを別のページにするのはなぜですか?
SPAのログインページをSPAのページではない別のページにするのが一般的であるように思えるのはなぜですか? 私が考えることができるのはセキュリティだけですが、特定のセキュリティの理由を考えることはできません。ログインページがSPAの一部である場合、FirebugやWebインスペクターなどのツールで見ることができるajaxを介してユーザー名/パスワードを送信しますが、通常として送信してもPOSTリクエスト。このデータを簡単にキャプチャできる他のツール(フィドラー、httpscoopなど)があります。 何か足りないものはありますか?

3
「高凝集」の意味は何ですか?
私はインターンとしてソフトウェア開発会社に最近入社した学生です。大学に戻って、私の教授の一人は、「低結合と高凝集」を達成するために努力しなければならないと言っていました。 低結合の意味を理解しています。これは、ある場所での変更が別の場所でコードを壊さないように、別々のコンポーネントのコードを別々に保持することを意味します。 しかし、高い凝集性が意味するもの。同じコンポーネントのさまざまな部分を互いにうまく統合することを意味する場合、それがどのように有利になるか理解できません。 凝集力が高いとはどういう意味ですか?その利点を理解するために例を説明できますか?

8
開発者がテクノロジーと方法論を最新の状態に保つ必要があるのはなぜですか?[閉まっている]
開発者が最新のテクノロジー(webrtc、html5およびcss3の更新、新しいjsライブラリ、TDD、DDD、BDDなどのソフトウェア手法など)を最新の状態に保つ必要があることを常にアドバイスしています。 問題はなぜですか?なぜ自分自身を常に更新する必要があるのですか?私たちが知っていることだけに固執し、それを改善することはできませんか?
28 skills 

7
不変とconstの違い
私はよく用語immutableを見て、const同じ意味で使用しました。ただし、私の(小さな)経験から、この2つは、コードで作成する「契約」が大きく異なります。 Immutableは、このオブジェクトがまったく変更されないという契約を作成します(Pythonタプル、Java文字列など)。 Constは、この変数のスコープ内では変更されないという契約を結んでいます(この期間中にC / C ++キーワードなどが指し示すオブジェクトに対して他のスレッドが何をするかについての約束はありません)。 明らかに、言語がシングルスレッド(PHP)であるか、線形または一意のタイピングシステム(Clean、Mercury、ATS)を持たない限り、2つは同等ではありません。 最初に、これら2つの概念の理解は正しいですか? 第二に、違いがある場合、なぜそれらはほとんど排他的に交換可能に使用されるのですか?

9
高度にカスタマイズされたソフトウェアをどのように整理しますか?
私は、世界中のさまざまな顧客向けに高度にカスタマイズされた大規模なソフトウェアプロジェクトに取り組んでいます。つまり、80%のコードがさまざまな顧客に共通しているだけでなく、ある顧客から別の顧客に変更する必要がある多くのコードがあることを意味します。過去に別のリポジトリ(SVN)で開発を行い、新しいプロジェクトが開始されたとき(大規模な顧客はほとんどありませんが)、過去のプロジェクトがニーズに最適なコードベースに基づいて別のリポジトリを作成しました。これは過去に機能していましたが、いくつかの問題に遭遇しました。 あるリポジトリで修正されたバグは、他のリポジトリでは修正されません。これは組織の問題かもしれませんが、5つの異なるリポジトリのバグを修正してパッチを当てるのは難しいと思います。このリポジトリを保守しているチームは世界の別の場所にいて、テスト環境がないことに注意してください、スケジュールや要件を把握していません(ある国の「バグ」は別の国の「機能」かもしれません)。 別のプロジェクトにも役立つかもしれない1つのプロジェクトに加えられた機能と改善は失われ、別のプロジェクトで使用された場合、多くの場合、1つのコードベースから別のコードベースにそれらをマージする大きな頭痛の種を引き起こします)。 1つの開発ブランチで行われたリファクタリングとコードの改善は、ブランチ間でこれらのすべての変更をマージする必要がある場合、失われるか、害よりも害をもたらします。 現在、これらの問題を解決する方法について議論しており、これまでのところ、これを解決する方法について次のアイデアを思いつきました。 開発を別々のブランチで維持しますが、一般的なバグ修正がマージされる中央リポジトリを持ち、すべてのプロジェクトがこのセントラルリポジトリからの変更を定期的に(たとえば毎日)独自のものにマージすることで、より整理されます。これには、大きな規律と、ブランチ間のマージに多大な労力が必要です。ですから、特に時間のプレッシャーがかかったときに、それがうまくいくと確信していません。 個別の開発ブランチを放棄し、すべてのコードが存在する中央のコードリポジトリを持ち、プラグ可能なモジュールと構成オプションを使用してカスタマイズを行います。既にコードの依存関係を解決するためにDependency Injectionコンテナーを使用しており、ほとんどのコードでMVVMパターンに従ってビジネスロジックをUIから明確に分離しています。 2番目のアプローチはよりエレガントに見えますが、このアプローチには多くの未解決の問題があります。例:モデル/データベースでの変更/追加の処理方法。エンティティフレームワークで.NETを使用して、エンティティを厳密に型指定しています。ある顧客には必要だが、データモデルを乱雑にすることなく別の顧客には役に立たないプロパティをどのように処理できるかわかりません。サテライトテーブル(特定のエンティティ用の追加の列が元のエンティティへの1:1マッピングで存在する個別のテーブルを持つ)を使用してデータベースでこれを解決することを考えていますが、これはデータベースのみです。これをコードでどのように処理しますか?データモデルは中央ライブラリにあり、このアプローチを使用して顧客ごとに拡張することはできません。 この問題に苦しんでいるのは私たちだけではないと確信しており、このトピックに関する資料がほとんどないことにショックを受けています。 私の質問は次のとおりです。 高度にカスタマイズされたソフトウェアに関してどのような経験があり、どのアプローチを選択し、どのように機能しましたか? どのアプローチをお勧めしますか、またその理由は何ですか?より良いアプローチはありますか? お勧めできるトピックに関する良い本や記事はありますか? 技術環境(.NET、Entity Framework、WPF、DI)について具体的な推奨事項はありますか? 編集: すべての提案をありがとう。アイデアのほとんどは、すでにチーム内で持っていたものと一致しますが、あなたがそれらで得た経験と、それらをより良く実装するためのヒントを確認することは本当に役立ちます。 どの方向に進むかはまだわかりませんし、(単独で)決定を下すわけではありませんが、チームでこれを伝えて、役に立つと確信しています。 現時点では、テナーはさまざまな顧客固有のモジュールを使用する単一のリポジトリのようです。私たちのアーキテクチャがこれに合っているか、それを適合させるためにどれだけ投資する必要があるのか​​はわかりません。 それで、すべての応答に再び感謝します!

13
100%のコードカバレッジは夢物語ですか?
重いjquery / backbonejs Webアプリケーションで100%のコードカバレッジを期待することは可能ですか?javascript / jqueryで実際のコードカバレッジが92%から95%前後で推移する場合、100%のカバレッジが満たされないためにスプリントに失敗するのは妥当ですか?
28 code-quality  tdd  bdd 

10
XSLTを使用、学習、または推奨する正当な理由はありますか?[閉まっている]
私は過去8年間、開発者です。主にXMLをHTMLに変換するためにXSLTを使用しました。また、XMLからXMLへの変換にも使用しました。 しかし、今ではすべての代替品があります。HTMLは、ASP.Netなどのプログラミング言語を使用して快適に作成できます。XMLは、標準の高水準言語で読み取って操作できます。XSLTでのプログラミングは少し複雑なので、誰もが最新のプログラミング言語で作業することを好みます。 さて、私の質問:すでに開発されたXSLTを維持するという事実を考慮せずに、XSLTは将来的に重要な選択肢になりますか?新しいプログラマーにXSLTの学習を勧めることはできますか?
28 xslt 


3
GitHubプロジェクトで複数のライセンスを宣言する
何年もの間、私はオンラインで共有されたものにライセンスを付けて、他の人がそれらを再利用できるかどうか、そしてそれらを再利用できるかどうかを簡単に判断できるようにしました。GitHubがユーザーにリポジトリにLICENSEファイルを含めるように優しく「プッシュ」し始める前は、コード(特にGitHubで公開されているコード)でこれを行う最善の方法を知りませんでした!–しかし、それ以来、LICENSEファイルをうまく利用しようと試みました。 私は現在、いくつかのライセンスについて言及する必要がある(サードパーティのコードとライブラリ、および非コードファイルのために)他の人々と小さなプロジェクトに取り組んでいる状況にあります。私のパートナーはこの問題をかなり「ずさんな」方法で進めていますが、「コードをそのままオンラインに置くだけで、誰も気にしないだろう」と提案されました。問題は、GitHubでいくつかの(異なる)ライセンスについて言及する方法がわからないことです。 GitHubでいくつかの異なるソリューションを見てきました。そのため、このわずかに異なる質問に対する答えが信頼できるものかどうかを判断するのは困難です。私が知りたいのは、次のうちどれが最も一般的であるか、または他の追加の方法がある場合です。 単一のLICENSEファイルを作成し、そこにすべての異なるライセンスの説明を入れます。(質問:それらは特定の順序で配置する必要がありますか?より良い概要のために、含まれるすべてのライセンスの名前を記載してファイルから始めますか?) 作成したライセンスごとに1つのライセンスファイルを使用し、それらに名前を付けLICENSE.md、LICENSE.LibNameA.md、LICENSE.AssetsB.mdなどのリンクの答えで提案されているように。(質問:命名はプロジェクト名に基づきますか?ライセンス名ではありませんか?自己投稿素材に複数のライセンスを使用した場合、それらをすべて「メイン」で言及しLICENSE.mdますか?そうでない場合、代わりに何をしますか?) 2つのLICENSEファイルを作成します。1つは「メイン」コンテンツのライセンスをリストします。つまり、自分で作成したすべてのコード/アセット。1つはすべてのサードパーティの資料用です。(上記の質問:使用する特定の命名スキームと、サードパーティの資料をリストする順序はありますか?) 最後に、License APIに関するさまざまなGitHubの説明とプロジェクトを正しく理解していれば、レポのライセンスを決定するときに「メイン」のLICENSEファイルのみが考慮されます(どのライセンスが選択されるかはわかりませんが)いくつか言及された場合)。
28 licensing  github 

4
Guid.NewGuid()がGuid.Emptyであるかどうかを確認する価値さえありますか?
私が取り組んでいるプロジェクトの1つでは、次のパターンがかなり定期的に見られます。 var guid = Guid.NewGuid().ToString(); while (guid == Guid.Empty.ToString()) { guid = Guid.NewGuid().ToString(); } GUIDは一意であることが保証されておらず、MSDNのドキュメントによると、生成されたGUIDはゼロである可能性があることを理解していますが、これは実際に計算上の意味と開発者の時間の観点からサイクルテストを送信する価値がある実用的な考慮事項ですか? ?
28 .net  security 

2
printfファミリの関数の形式指定子としてパーセント記号(%)が選択されたのはなぜですか?
少なくともCではprintf、関数ファミリを使用して書式設定された文字列を印刷することを誰もが知っています。また、これらの関数はパーセント記号(%)を使用して、書式指定子の始まりを示します。例えば、%d印刷することを意味しint、そして%u手段印刷しますunsigned int。printf関数とフォーマットのプレースホルダーがどのように機能するのかよくわからない場合、または単にリフレッシャーが必要な場合は、Wikipediaの記事を参照してください。 私の質問は、これが元々、または将来フォーマット指定子として選択されるべきである特に説得力のある理由がありますか? 明らかに、この決定はかなり前に行われ(C言語の前任者である可能性が非常に高い)、それ以降は多かれ少なかれ「標準」になっています(Cだけでなく、他の多くの言語でもさまざまな程度に構文を採用しているため)、変更するには遅すぎます。しかし、なぜこの選択​​が最初に行われたのか、同様の機能を備えた新しい言語を設計している場合の選択肢としてそれが理にかなっているのかについて誰かが洞察を持っているのであれば、私はまだ興味があります。 たとえば、C#(および他の.NET言語ファミリ)を使用して、Microsoftは文字列フォーマット関数の操作に関してわずかに異なる決定を下しました。そこにある程度のタイプセーフティを適用できますが(printfC の実装とは異なります)、したがって対応するパラメーターのタイプを示す必要はありませんが、中括弧({})のゼロインデックスペアを使用することにしました次のような形式指定子として: string output = String.Format("In {0}, the temperature is {1} degrees Celsius.", "Texas", 37); Console.WriteLine(output); // Output: // In Texas, the temperature is 37 degrees Celsius. String.Format一般的な複合フォーマットに関するこの記事と同様に、メソッドのドキュメントには詳細情報が含まれていますが、正確な詳細はかなり重要ではありません。ポイントは%、フォーマット指定子の開始を示すために使用するという長年の慣行を放棄したということです。C言語は{d}and を簡単に使用でき{u}たはずですが、そうではありませんでした。誰が、なぜ、この決定が振り返って意味をなすか、そして新しい実装がそれに続くべきかどうかについての考えを持っていますか? 明らかに、文字列自体に含めることができるようにエスケープする必要のない文字を選択することはできませんが、その問題は、そのうちの2つを使用するだけで既に十分に解決されています。関連する他の考慮事項は何ですか?
27 c  history 

4
男性と女性以外の性別モデルの業界標準はありますか?
私は、個人、ユーザー、サービス、クーポン、署名パッケージなどの商業データなど、スタートアップ企業のすべてのサービスの一般的な非機能要件として使用されるデータベースをモデリングしています。 私は性別モデルについて考えています。これらの現代では、主観的なアイデンティティに関する国ごとに異なる法律があるので、それを考慮に入れて、男性と女性のオプション以外の個人エンティティをモデル化する必要がありますか? オプションは、未定義、未回答、その他、トランスジェンダー...または私が知らないその他の業界標準です... それとも、LGBTの人々は本当に男性でも女性でもないと言って不快になりますか?

2
ビジネスロジックが変更されたときに失敗した場合、単体テストは脆弱と見なされますか?
以下のコードをご覧ください。女性の性別を持つ人がoffer1に適格であるかどうかをテストします。 [Fact] public void ReturnsFalseWhenGivenAPersonWithAGenderOfFemale() { var personId = Guid.NewGuid(); var gender = "F"; var person = new Person(personId, gender); var id = Guid.NewGuid(); var offer1 = new Offer1(id,"Offer1"); Assert.False(offer1.IsEligible(person)); } この単体テストは成功します。ただし、今後「Offer1」が女性に提供されると、失敗します。 言うことは受け入れられますか?オファー1を取り巻くビジネスロジックが変更された場合、ユニットテストは変更されなければなりません。データベースによっては、ビジネスロジックが次のように変更される場合があります(一部のオファーでは)。 update Offers set Gender='M' where offer=1; そして、このようなドメインモデルの場合には: if (Gender=Gender.Male) { //do something } また、背後のドメインロジックが定期的に変更を提供する場合と、そうでない場合もあることに注意してください。

5
整数から単一への変換が精度を失う場合がある
拡大コンバージョンとオプションストリクトオンに関するマイクロソフトの記事を読んでいたとき 次の変換は精度を失う可能性があります。 整数から単一 ロングからシングルまたはダブル 10進数からシングルまたはダブル ただし、これらの変換では情報や規模は失われません。 ..しかし、データ型に関する別の記事によると、 整数型は-2.147.483.648から2.147.483.647まで保存でき、 シングルタイプから保存できます 正の数の場合は1,401298E-45から3,4028235E + 38まで、 負の数の場合は-3,4028235E + 38から-1,401298E-45 ..そのため、SingleはIntegerよりもはるかに多くの数値を格納できます。どのような状況で整数から単一への変換が精度を失う可能性があるのか​​理解できませんでした。誰か説明してくれませんか?

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