ソフトウェア工学

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

7
経験的指標に基づいて、ソフトウェアが良いか悪いかをどのように知るのですか?
現在、5か月前にコア開発を終了したが、依然として高レベルの欠陥があるプロジェクトを検討するよう求められています。約10個の欠陥が修正されるごとに発生するのは、少なくとも4個、場合によっては8個の欠陥が発生することです。 ベンダーでのコーディング慣行は貧弱であり、これについては一般的な合意があると思います。しかし、ソフトウェアに構造的な問題があるかどうか疑問に思っていますか?欠陥密度は有用な尺度ですが、コアソフトウェアの作成が不適切な場合は、ベンダーが行っていることはすべて問題を解決することです。 インフラストラクチャでは、何かが不完全に構築されている場合、より明確に定義されていますが、LOCごとの欠陥のほかに、ソフトウェアにどのような測定値を使用できますか? この製品は4か月間欠陥修正フェーズにありますが、重大な欠陥はまだ十分に解決されていません。回帰の問題を修正するだけで、新しい機能を注入することはありません。 これは開発品質の問題を示しており、満足していません。ただし、製品自体に根本的な欠陥がある場合、それは別の問題です。懸念されているのは、コアコードベースの作成が不十分であり、ドキュメントが限られているため、外部の開発者はすべて、問題をAからBにシフトしているだけです。機能的にします。 サードパーティから製品を受け入れ、サポートを求められた場合、標準を定義するためにどの受け入れ基準を使用しますか? リード開発者にリリースごとのコードのピアレビューを行わせることに加えて、他に何ができるかわからない?

1
ES6とJavascriptで異なります[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた3年前。 ES6とは何ですか?JavaScriptですか?または多言語サポーターですか? 私はそれを検索しましたが、特にウィキペディアのページでは理解できません。Javascriptよりも優れていますか?また、この言語を使用してWeb開発を行うにはどうすればよいですか? ES6とは何ですか?また、Webアプリの開発でES6を使用するにはどうすればよいですか?
18 javascript  es6 

2
有効な状態を維持するために、つまり、オブジェクトのデータメンバーを更新するために、クラスに1つの大きなプライベート関数を定義することをお勧めしますか?
以下のコードでは、eコマースサイトでの単純な単一アイテム購入を使用していますが、私の一般的な質問は、すべてのデータメンバーを更新して、オブジェクトのデータを常に有効な状態に保つことです。 関連するフレーズとして「一貫性」と「状態は悪」を見つけました。ここで説明します:https : //en.wikibooks.org/wiki/Object_Oriented_Programming#.22State.22_is_Evil.21 <?php class CartItem { private $price = 0; private $shipping = 5; // default private $tax = 0; private $taxPC = 5; // fixed private $totalCost = 0; /* private function to update all relevant data members */ private function updateAllDataMembers() { $this->tax = $this->taxPC * …

1
例外メッセージをログに記録して別の例外をスローする場合、それはまだアンチパターンですか?
私たちのウェブアプリケーションはを使用しExceptionMapperていくつかの例外をにマップしていますResponse。次のように、新しい例外をスローする前に例外メッセージを記録します。 catch (SomeException ex) { LOG.error(ex.getMessage()); throw new MyException(ex.getMessage()); } 私たちは同じ例外を再スローしていないので、私の質問は、これがLog and Throwアンチパターンと見なされるかどうかです。したがって、同様の場所でロギングを削除し、ExceptionMapper次のようにいくつかのクラスに移動する方が良いでしょう: @Provider public class MyExceptionMapper implements ExceptionMapper<MyException> { // bla bla @Override public Response toResponse(final MyException ex) { LOG.error(ex.getMessage()); return Response.status(400).entity("something").build(); } }

3
同じアプリでWindows 10 UWPとWindows Phone 8.1の両方をターゲットにするにはどうすればよいですか?
バックグラウンド 開発者の観点から見ると、Windows 10の主なセールスポイントは、新しいUniversal * Windows Platform(UWP)です。 *「ユニバーサル」は本当に「のWindows 10を実行することをすべてのデバイスへのユニバーサル」、およびない「もないだけのWindows 10を実行するデバイスへのユニバーサルが、Windows 8.1と意味はどこおそらく Windows 7の」。したがって、UWPアプリを構築する場合、実際には「Windows 10アプリ」を構築するだけです。UWPアプリは、Windows 8.1およびWindows Phone 8.1デバイス上でも実行されません。つまり、下位互換性はまったくありません。 2015年第3四半期現在、Windows 10はPCおよびIoTデバイスで使用できます。Windows 10 Mobileが一般公開されるまでには少なくとも数か月かかりますが、おそらく1年以内です。これは、Windows Phone 8.1がまだしばらく存在することを意味します。 質問 Windows Phoneアプリの開発を開始しようとしていますが、かなりシンプルなアプリなので、来月かそこらで公開する予定です。Windows 10 Mobileはすぐに届かないので、世界中のデバイスのアップグレードはもちろんですが、Windows Phone 8.1をターゲットにする必要があります。しかし、それができなくなりますので、という長いアウトのWindows 10モバイル・ロールの前には、Windows 10 UWPへの展開のための私の解決策を用意するのが賢明だろうと、私は思ったんだけどと同様(のWindows Phone 8.1にもに私を許すであろう必要な限り8.1をサポートし続けます)。 同じソリューション内でUWPプロジェクトと8.1プロジェクトをグループ化し、Visual StudioのWindows 8.1 Universalテンプレートと同様に、共有プロジェクトを介してソースファイルとアセットを共有できることがわかりました。私は正しい軌道に乗っていますか?もしそうなら、すべての(XAMLを含む、理想的には両方のプラットフォームで同じまたは少なくとも類似したUIを使用したい)すべての不整合を考慮して両方のプラットフォームで正しく動作することを確認するために従う必要がある追加のガイドラインはありますか? あるいは、今のところWindows 10 Mobileを心配せずに8.1プロジェクトから開始し、後でUWPに移行することはできましたが、8.1を廃止する予定はないので、アプリの両方のバージョンを維持する必要がありますすぐにユーザー。この場合、まだ機能/ XAMLパリティについて心配する必要があります。

6
URIスキームとは何ですか?
この質問を検索しましたが、良い答えが見つかりませんでした。 URIに関するWikipediaの記事でさえ、完全に説明していません。Webページにアクセスするためのプロトコルだと思いました。たとえば、HTTP / HTTPS / FTPですが、wikiの記事ではそうではありません。 特定のプロトコル(「ファイル」など)に関連付けられていないURIスキームもあれば、プロトコル名を接頭辞(「ニュース」)として使用しないURIスキームもあります。 URLのどの部分がスキームであるかを知っています。しかし、私の本当の質問は、それが何をするものでしたか?
18 protocol  internet  uri 


3
Pythonで同じファイルに複数のクラスを入れても大丈夫ですか?
私は、長年のJavaとPHPの後、新たにPythonの世界に来ています。言語自体はかなり単純ですが、頭をかき回すことのできない「マイナーな」問題に苦労しています。 。 経験豊富なPythonの実践者にとって、この質問はばかげているように思えるかもしれませんが、言語をさらに進めるために、私は本当にそれに対する答えが欲しいです。 JavaおよびPHP(厳密には必須ではありませんが)では、ベストプラクティスとしてclassファイル名を使用して、それぞれを独自のファイルに書き込むことが期待されていますclass。 しかし、Python、または少なくとも私がチェックしたチュートリアルでは、同じファイルに複数のクラスを含めることは問題ありません。 このルールは、本番環境、展開準備の整ったコード、または教育専用コードの簡潔さのためだけに行われますか?

5
アーキテクチャ上の問題をどこで説明しますか?
私は中規模プロジェクトの途中に参加しました。このプロジェクトはすでに数年にわたって実行されています。問題の1つは、アーキテクチャを説明するドキュメントが記述されていないことです。これで、アーキテクチャー記述を作成するタスクが割り当てられました。 このプロジェクトに取り組んでいる間、ドキュメントを書くために必要なすべての情報を収集しました。いくつかの機能も追加したので、説明したとおりにアーキテクチャを明らかに破壊しているコードをいくつか特定しました。 たとえば、GUIはビジネスロジックのない薄いレイヤーであると想定されていました。それが私に言われたことです。実装には多くのロジックが含まれています。 上司がタスクを割り当てて、システムのアーキテクチャを説明するドキュメントを作成しました。対象読者は、プロジェクトに取り組んでいる現在および将来の開発者です。どうあるべきかを説明する必要がありますが、どういうわけか偏差も説明する必要があります。 それでは、これらの問題をどこで説明すればよいのでしょうか?バグ追跡ソフトウェア?または、システムのアーキテクチャを説明するドキュメントで、アーキテクチャからの実装の逸脱を説明する必要がありますか?

3
代数データ型はどのような問題を解決しますか?
公正な警告、私は関数型プログラミングは初めてなので、多くの悪い仮定を抱くかもしれません。 私は代数型について学んでいます。多くの関数型言語にはそれらが含まれているようで、パターンマッチングと併用するとかなり便利です。ただし、実際にどのような問題を解決しますか?次のように、C#で一見(一種の)代数型を実装できます。 public abstract class Option { } public class None : Option { } public class Some<T> : Option { public T Value { get; set; } } var result = GetSomeValue(); if(result is None) { } else { } しかし、これはオブジェクト指向プログラミングのろくでなしであることにほとんどの人が同意すると思うので、絶対にやるべきではありません。それで、関数型プログラミングは、このスタイルのプログラミングをあまり目立たないようにする、より簡潔な構文を追加するだけですか?他に何が欠けていますか?

3
バージョン管理のコミットを読み取るマネージャー
マネージャーは、すべてのプロジェクトでGitのコミットを監視しています。通常、これは問題ではありません。バージョン管理は、特に後の監査と分析(問題が発生した場合)のために、発生しているすべての作業のログを提供するという事実が大好きです。 ただし、マネージャーは、タスク管理システムで「スタイル修正」またはチケット番号を参照しないコミットメッセージを読み取るコミットを見たときに、人々が何に取り組んでいるかを尋ねるいくつかのコメントを作成しました。 これに社会的または技術的な解決策はありますか? 詳細情報:これはメンテナンスプロジェクトであるため、「Aを実行し、次にB、次にC、次にDを実行し、最後にXを実装しなければならない」タスクが多数発生します。 詳細:マネージャーにフラグを立てた特定のコミットメッセージは、「X、Y、Zへのより良い方法を含む」に近く、単純なスタイル修正ではなく、リファクタリングメッセージです。

5
新しいアルゴリズムを最初にコピーレフトする利点は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 新しい(DSP)アルゴリズムを作成したとします。コピーレフトライセンス(GPLなど)の下でアルゴリズムをオープンソース化すると、いくつかの利点がありますか?私がライセンスについて知っていることから、これはクローズドソースとまったく同じコードを使用することから人々を締め出すはずですが、彼らはアルゴリズムをクローズドソースとして「書き直す」ことができるでしょうか? 注:アルゴリズムが新しいかどうかはわかりませんが、まだオープンソースとしてリリースされていません。私は欧州連合出身なので、コピーレフトしたい場合、ソフトウェア特許を探す必要がありますか?

4
次のことに対して、 `util`よりも意味的に適切なパッケージ名は?
以下のようstrawmanはパッケージを検討しjava.util、ほとんどの場合、自分のクラスのためのより多くの意味的に正しいパッケージ名を思い付くことが怠惰や平凡だったそれらを置く人よりも一般的な他でシェアは何もないことをする様々なクラスのゴミ捨て場です。 ほんの一例として、そのクラスUUIDの意味的に正しいパッケージ名だったクラスを取り上げますか? 私は自分のUUIDクラスをより軽量にするために実装しています。me.myproject.util.UUIDパッケージ名に使用したくありません。 私は考えましたme.myproject.rfc4122.UUIDが、それはの使用の意味を意味しませんUUID。 私も考慮しましたme.myproject.uuid.UUIDが、トートロジーは好きではありません。同じ名前のモジュールにクラスを置くのはPythonでは一般的なアプローチですがpackages、Java modulesではPythonと意味的に同等ではありません。 またme.myproject.UUID、名前空間のその部分を関連しないもので汚染したくないので、それを検討しましたが、拒否しました。これにより、問題が1つ上のレベルに移動します。 私も考えましたme.myproject.lib.UUIDが、これはセマンティックな意味を持たず.util、問題の名前を変更するだけです。 semantics:意味に関係する言語学と論理の分岐。

2
GUIを設計および実装するための何らかの体系的な戦略はありますか?
Visual Studioを使用して、C#でGUIアプリケーションを作成しています。ツールボックスは気の利いたコンポーネントパレットとして機能し、ボタンやその他の要素(わかりやすくするために「コントロール」を意味する場合はボタンと呼びます)をフォームに簡単にドラッグアンドドロップできます。ただし、2つの問題が発生します。 そもそもボタンを作成するのは大変です。静的ではないフォームがある場合(つまり、ユーザーの操作に応じて実行時にボタンまたはその他のコントロールが作成される)、パレットをまったく使用できません。代わりに、使用しているメソッドでコンストラクターを呼び出して各ボタンを手動で作成し、ボタンの高さ、幅、位置、ラベル、イベントハンドラーなどを指定して手動で初期化する必要があります。フォームがどのように見えるかを確認することなく、これらのすべての化粧パラメータを推測する必要があるため、これは非常に退屈です。また、各ボタンに対して多くの行の反復コードを生成します。 ボタンに何かをさせるのも大変です。フル機能のアプリケーションでイベントを処理することは大きな苦痛です。私がこれを行う方法を知っている唯一の方法は、ボタンを選択し、そのプロパティのイベントタブに移動し、イベントをクリックしてOnClickイベントFormのコードを生成し、イベントの本文を入力することです。ロジックとプレゼンテーションを分離したいので、イベントハンドラーはすべて、適切なビジネスロジック関数の単一行呼び出しになります。しかし、これを多くのボタンに使用すると(たとえば、MS Wordなどのアプリケーションに存在するボタンの数を想像してください)、数Form十の定型イベントハンドラーメソッドでmyのコードを汚染し、これを維持するのは困難です。 これらのため、Hello Worldよりも複雑なGUIプログラムは、実際に作成するのは非常に非現実的です。明確にするために、最小限のUIを使用して作成するプログラムの複雑さを扱うことには何の問題もありません。ビジネスロジックコードをきちんと構築するために、かなりの能力を備えたOOPを使用できると感じています。しかし、GUIを開発するとき、私は立ち往生しています。とても退屈だと思うので、私は車輪を再発明しているように感じます。また、読んでいないGUIを適切に行う方法を説明する本がどこかにあります。 何か不足していますか?または、すべてのC#開発者は、繰り返しイベントハンドラーとボタン作成コードの無限のリストを受け入れるだけですか? (うまくいけば役立つ)ヒントとして、良い答えが語れると期待しています: OOP手法(ファクトリーパターンなど)を使用して、繰り返しボタンの作成を簡素化する 多くのイベントハンドラを単一のメソッドに結合し、Senderどのボタンがそれを呼び出したかを判断し、それに応じて動作する単一のメソッド XAMLおよびWindowsフォームの代わりにWPFを使用 もちろん、これらのいずれにも言及する必要はありません。どんな種類の答えを探しているのかということに関しては、最善の推測です。
18 c#  gui  visual-studio 

7
グラフ構造を使用してどのようにコードを単体テストしますか?
私は、依存関係グラフをナビゲートし、依存関係のサイクルまたは矛盾を探す(再帰的)コードを書いています。ただし、これを単体テストする方法はわかりません。問題は、発生する可能性があるすべての興味深いグラフ構造のコードハンドルと、すべてのノードが適切に処理されるようにすることです。 通常、一部のコードが動作することを確信するには100%の回線またはブランチのカバレッジで十分ですが、100%のパスカバレッジであってもまだ疑問があるように感じます。 したがって、テストケースのグラフ構造を選択して、コードが実際のデータで見つかる可能性のあるすべての順列を処理できることを確信できるようにするにはどうすればよいでしょうか。 PS-問題がある場合、グラフ内のすべてのエッジに「必要」、「不可」のラベルが付けられ、自明なサイクルはなく、2つのノード間に1つのエッジしかありません。 PPS-この追加の問題ステートメントは、もともと質問の著者によって以下のコメントで投稿されました。 For all vertices N in forest F, for all vertices M, in F, such that if there are any walks between N and M they all must either use only edges labelled 'conflict' or 'requires'.

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