ソフトウェア工学

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

2
コンパイラはどのようにエラーと警告を報告すべきですか?
私は近い将来にコンパイラを書くつもりはありません。それでも、私はコンパイラ技術に非常に興味があり、このようなものをどのように改善することができますか。 コンパイルされた言語から、ほとんどのコンパイラには2つのエラーレベルがあります。最初はほとんどの場合、修正する必要のある致命的ではない警告とエラー、およびマシン(またはバイト)入力からのコード。 しかし、これはかなり弱い定義です。Javaのような一部の言語では、@SuppressWarningディレクティブを使用せずに特定の警告を取り除くことは不可能です。また、Javaは致命的ではない特定の問題をエラーとして扱います(たとえば、Javaの到達不能コードは、知りたい理由でエラーをトリガーします)。 C#には同じ問題はありませんが、いくつかあります。コンパイルは複数のパスで発生し、パスが失敗すると以降のパスは実行されないようです。そのため、ビルドが失敗したときに取得するエラーカウントは、しばしば大幅に過小評価されます。1回の実行で2つのエラーがあると表示される場合がありますが、修正すると26の新しいエラーが発生する可能性があります。 CとC ++を掘ると、JavaとC#のコンパイル診断の弱点の悪い組み合わせが示されるだけです(ただし、JavaとC#はそれぞれ半分の問題で進んだと言う方が正確かもしれません)。いくつかの警告は実際にはエラーである必要があり(たとえば、すべてのコードパスが値を返すわけではない場合)、それでも警告です。標準を書いた時点では、コンパイラテクノロジはこれらの種類の必須チェック。同じように、コンパイラは多くの場合、標準で規定されている以上のことをチェックしますが、追加の検出には「標準」の警告エラーレベルを使用します。また、多くの場合、コンパイラはすぐに検出できるすべてのエラーを報告しません。それらをすべて削除するには、数回のコンパイルが必要になる場合があります。C ++コンパイラーが吐き出すのを好む不可解なエラーは言うまでもありませんが、 コンパイラーが警告を発したときに失敗を報告するように多くのビルドシステムを構成できるようになったので、奇妙なミックスが得られます。すべての警告に値するわけではありませんが、警告の存在をさらに言及せずにいくつかの警告を明示的に抑制しています。また、すべての警告がエラーになる場合があります。 コンパイルされていない言語には、依然としてエラー報告があります。Pythonのタイプミスは、コードが実際に実行されるまで報告されません。また、スクリプトがエラーを検出すると実行が停止するため、一度に複数のエラーをキックすることはできません。 PHPには、多かれ少なかれ重要なエラーレベルと例外がたくさんあります。解析エラーは一度に1つずつ報告され、警告はスクリプトを中断するほどひどい場合があります(ただし、デフォルトではそうではありません)。 PHPの場合と同じように、本当に奇妙なことがあります(なぜ致命的ではない致命的なエラーのエラーレベルが必要なのでしょうか?E_RECOVERABLE_E_ERROR、私はあなたに話しています)。 私が考えることができるコンパイラエラーレポートのすべての実装が壊れているように思えます。すべての優秀なプログラマーが、エラーに適切に対処することの重要性を主張しているにもかかわらず、それを行うための独自のツールを入手できないため、これは本当に残念です。 コンパイラエラーを報告する正しい方法は何だと思いますか?

3
バージョン管理のコミット履歴とリファクタリングおよびドキュメントの保存
バージョン管理システムが保持しているコミット履歴を使用しても、ほとんど費用はかかりません。ただし、主要なプロジェクトのリファクタリング(または再編成/クリーンアップ)の作業中に、関数とクラス、さらには名前空間も移動されます。いくつかのファイルが一緒にマージされ、他のファイルが分割される場合があります。これらの変更により、いくつかのファイルの元のコミット履歴が失われることがよくあります。 私の意見では、プロジェクトの組織を維持することは、ソースコードの履歴を保持することよりも重要です。優れたプロジェクト編成により、合理的な労力で新機能を継続的に追加できますが、ソースコードの履歴の価値は疑わしいようです。 さらに、単体テストを使用すると、回帰の問題が迅速に特定されます。最新バージョンがすべてのソフトウェア要件を満たしている限り、実際にソースコードの履歴を保持する必要がありますか? メジャーバージョンアップグレードを実行せずに顧客にサポートを提供する必要があるため、出荷されたソースコードを保存する必要があることを理解しています。しかし、これとは別に、ソースコードコミットの履歴を保持することに何か価値はありますか? ソースコードのコミット履歴は、チームメンバー間のコミュニケーションに何らかの役割を果たしますか?コミット履歴を廃止し、代わりに「ソースコード」+「ユニットテストコード」に依存して通信した場合はどうなりますか? コミット履歴の存在は、主要な設計/要件の変更やそれらの変更を推進した一連の思考など、プロジェクトに関する重要な情報の長期的な文書化に満足しますか?

2
LISP Webサービスを書くための戦略/リソース?
背景:エイプリルフールが私の会社の残りの開発チームにいたずらしていたので、Common Lispでいくつかの完全に機能するウェブサービスを書きたいと思っています。 これには、MySQLデータベースからの情報の読み取り/書き込み、およびHTTPを介した要求の受信/処理/応答の2つの部分があります。(実際には、自動化されたテストを作成する3番目の部分がありますが、私のQA犯罪者がその部分を処理します。) いくつかのグーグル検索の後、ここで適切なリソースを見つけました(http://www.ymeme.com/creating-dynamic-websites-lisp-apache.html)が、1つだけのウォークスルーがあるように見えることに驚いています。誰かが他の人を知っていますか、それともCLispでウェブサービスを書くことで個人的な経験を共有できますか?
11 lisp 

4
プラットフォーム独立とは何ですか?クロスプラットフォームと「プラットフォームの独立性」は同じですか?
プラットフォームの独立性とはどういう意味ですか?言語プラットフォームを独立と呼ぶ基準は何ですか?クロスプラットフォームと「プラットフォームの独立性」は同じですか? (これは自習用の質問かもしれませんが、スタックオーバーフローの専門家から聞きたいと思います。インターネットに関するそれに関する多くの定義と見解があり、それらのいくつかは混乱しています)

2
ソフトウェアの「データ衛生」インデックスがあるべきか-プログラムがどれだけクリーンであるかを示すために?一時ファイルなどを残さない
ソフトウェアの「データ衛生」インデックスがあるべきか-プログラムがどれだけクリーンであるかを示すために?未使用の一時ファイル、レジストリエントリ、環境変数などを作成しない たとえば、Windowsのユーザーフォルダーを見ると、アプリケーションで使用されるあらゆる種類のワークスペースファイルが表示されます。 たとえば、これにより、何をバックアップする必要があり、何をマシン生成として破棄できるかを知ることが難しくなります。

1
どのようなオンライン技術文書システムをお勧めしますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 目標は、次の主要な要件を備えたオンラインドキュメントシステムを用意することです。 主に、すべてのアプリケーションの最終的な技術文書の中間段階として使用されます(ただし、おそらく完了しません)。通常は次のように使用されます。誰かに問題があり、それを修正し、修正をすぐに書き留めます。今起こっているのは管理不能なことです。誰かに問題があり、私はそれを修正します。私も誰かも喜んでいますが、2か月後、他の誰かが同じ問題を抱えています。 どこからでもアクセスでき、Apacheサーバーの背後で実行されます ユーザー/グループ管理、読み取り専用/読み取り/書き込み/管理アクセスを許可 形式はそれほど重要ではありません:プレーンテキストでもかまいませんが、wikiスタイルの方がいいでしょう 安いか無料 私のいくつかのアイデア: ファイル共有上またはsshを介してファイルを提供するだけです(短所:Windowsとあまり互換性がない、長所:シンプル、任意のファイルタイプが可能) SCMに保存します(svn / git、上記と同じですが、アクセスとアクセスの制御が簡単です) Confluence:既にJiraを使用していますが、Confluenceには価値がありますか?Jiraとどのように統合されますか? 他に何か? これらについてコメントすることをorしないでください。他のシステムと経験を共有してください。

2
繰り返しコードを整理する方法は?
私のチームは、1回限りのWebフォームをたくさん作成しています。これらのフォームのほとんどは、単に電子メールを送信するだけであり、いくつかは単純なデータベース書き込みを行います。 現在、各フォームはVisual Studio Team Foundation Serverの独自の個別のソリューションに存在しています。つまり、約100の異なるフォームプロジェクトがあるため、一貫性を維持することが難しくなります。各フォームはフィールドが異なるという点でユニークですが、それらはすべてほぼ同じことを行います。 私はこれらを何らかの形で凝縮したいと考えており、実際にいくつかのガイダンスを使用することができます。 すべてのフォームプロジェクトを含む1つのソリューションファイルを作成する必要がありますか?配管コードはそれほど多くありませんが、電子メールのフォーマットなどを支援するヘルパークラスをいくつか作成できます。プロジェクト間でCSS、JavaScript、コントロール、画像を共有できると非常に便利です。 私たちがマイクロソフトのショップであることを考えると、この特定のシナリオでMVCのようなものをWebformsに移行することで具体的なメリットはありますか?私は全体としてMVCの概念で販売されていますが、そのフォームがすべて電子メールを送信する場合、15フィールドのデータ収集フォームをより効率的にまとめるのに役立ちますか?これについて考えさせられたフォームには、ユーザーの応答に基づいてフィールドを表示および非表示にするためのロジックが組み込まれており、MVCとjQueryを使用するのは効率的ではなかったようです。

6
ソフトウェアの価値をどのように測定しますか?
アジャイルの原則の1つは、動作中のソフトウェアを測定することです。 動作するソフトウェアは進歩の主要な尺度です-アジャイルの12の原則 問題は、出来上がったストーリー、つぶれたバグ、欠陥レポートの減少などの観点からソフトウェアを測定できる一方で、ソフトウェアの価値を測定する方法に固執しています。 Mike Cohnを例として使用し、SalesForce.comが支援することで、SalesForce.comが前年に比べて500%高い価値を顧客に提供している場合、その増加をどのように測定すればよいですか?私が今いる場所をどのように測定しますか? 彼が使用する他のメトリックは、機能の数と開発者ごとの機能の数です。これは私のバックログが順調で、ストーリーが「機能」によって分割されていた場合に解決できるものですが、アジャイルから始めたばかりなので、私たちが今どのような価値を提供しているかを解決する何らかの方法が必要です、たとえば6か月間で同様のメトリックを使用して、出力が増加したかどうかを確認します。 収益の増加、または顧客満足度の向上によってソフトウェアの価値を測定することを聞いたことがあります(しかし、どのようにそれを測定しますか?)私の部門が行っている仕事に直接。 それでは、ソフトウェアの価値をどのように測定し、どのように始めましたか? * アジャイルで成功する -マイク・コーン
11 agile  scrum 

7
プロジェクトがひどく終了した後の仕事を探す[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 私の会社は、進行中のプロジェクトに不満を抱いていたため、作業中のプロジェクトをキャンセルしました。プロジェクトが順調に進んでいると思い、時間の制約のためにソフトウェアが持つ制限についてすでに説明したので、私はそれに非常に失望しました。私は今、新しい仕事を探すことにしましたが、プロジェクトがひどく終了して、私にいくつかの困難を与えるかもしれないと心配しています。不誠実にならずに私が引き起こす困難を最小限に抑える方法に関するアドバイスはありますか?
11 failure 

7
カップリング。ベストプラクティス
このスレッドに続いて、私は始めました シングルトンパターン クラスがどのように結合されているか、そして疎結合を達成するための最良の方法について考えさせられました。私は新しいプログラマー(最初の仕事を始めて4か月)であり、これが実際に私がこれに与えた最初の考慮事項であり、コンセプトを理解することに非常に熱心であることに留意してください。 では、疎結合と重結合を正確に構成するものは何ですか?私の現在の(そして最初のプロジェクト)では、ac#winformsプロジェクトに取り組んでいます.GUIセクションはオブジェクトとイベントへのサブクリブを作成します標準のdatagridviewをラップして追加の機能を追加する)を作成し、それをGUIにアタッチしています。 私は本当に悪い習慣に陥り、コーディングが不十分になりたくないので、あなたの反応に感謝します。

3
プロジェクトの初期段階では、どのようなユーザーストーリーを作成する必要がありますか?
プロジェクトを開始するだけでは、UI、データレイヤー、中間に何もありません。したがって、「ユーザーは自分のfooを表示できるはずです」のような単一のストーリーには多くの作業が必要になります。そのストーリーが得られたら、「ユーザーはfooを編集できるはずです」のようなものがより現実的ですが、最初のストーリーにはUIレイヤー、プレゼンテーションロジックレイヤー、ドメインロジックレイヤー、データアクセスレイヤーの設定が含まれます。 これは、私の「タスク」の概念には合いません。私にとっては、次のような「タスク」のようなものが欲しいです。 JavaScriptオブジェクトから派生したHTMLでユーザーのfooのダミーデータを表示します。 プレゼンテーションロジックレイヤーを設定し、JavaScriptオブジェクトをそれに接続します。 ドメインロジックレイヤーをセットアップし、プレゼンテーションロジックレイヤーをそれに接続します。 データアクセスレイヤーを設定し、ドメインロジックレイヤーをそれに接続します。 これらはすべて上記の単一の「ストーリー」に該当しますか?もしそうなら、ストーリーはプロジェクトの初期段階で非常に有用なフレームワークではないと感じます。もしそうなら、それは大丈夫です---私はこのアジャイルな方法論をできる限り最善の方法で学ぼうとしているので、何かを逃さないようにしたいだけです。

4
非英語ベースのプログラミング言語[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 アンティオキア大学コロンビアでは、その中にプログラミング入門コースを教えて辞書式、スペイン語ベース、オブジェクト指向.NET言語。その目的は、英語ベースの主流言語を紹介する前に、学生の母国語でプログラミングの概念を教えることです。 英語以外のプログラミング言語は他にもたくさんあり、Stack Overflowには関連する質問さえあります。これらの言語に関していくつか質問があります。 このサイトの誰かが英語以外の言語を使用してプログラムすることを学んだことがありますか?もしそうなら、最初の英語ベースの言語への移行はどのくらい困難でしたか? 英語以外の話者が、英語ベースの言語ではなく母国語のキーワードを持つ言語を使用して、プログラミングをより速く/より良く学習するという研究に基づく証拠はありますか?

4
ネストされたクラス:便利なツールまたはカプセル化違反?
だから、私はこれらを使用すべきかどうかについて、まだフェンスの上にいます。 カプセル化の極端な違反を感じますが、コードの柔軟性を高めながら、ある程度のカプセル化を達成できることがわかりました。 以前のJava / Swingプロジェクトでは、ネストされたクラスをある程度使用していましたが、C#で他のプロジェクトに移動したため、使用を避けています。 ネストされたクラスについてどう思いますか?

3
Firefox 4がHTML Webソケットを無効にしたため、HTML Webソケットの代替手段はありますか?
マルチユーザーゲームをすべてサポートしているHTMLの最新のマルチプレイヤーエンジンのいくつかを確認しました(非常に素晴らしい)-これらのエンジンはすべて、通信にWebソケットを使用していると思います。 そのため、プロトコルレベルのセキュリティ問題のため、ベータ8以降、Firefox 4でWebSocketのサポートを無効にすることにしました。Firefox 7のベータ版では、ChromeおよびSafariに含まれているものと同じバージョンのプロトコルの-76バージョンがサポートされています。Firefox 4のベータ8はそのサポートを削除します。OperaのAnne van Kesterenは、OperaがWebsocketのサポートをやめることも発表しました。他のブラウザ開発者もフォローすると確信しています。 出典:FireFox 4で無効化されたWebsocket 私はちょうど上記に出くわしたので、Firefox 4やOperaにはソケットがありません...それは大きいです。誰もが代替を知っていますか、それともChromeですか、または主要なブラウザの次のリリースを待つ必要がありますか? 詳細:Rocket EngineはIE8(http://rocketpack.fi/engine/)を含むすべてのブラウザーで動作するようです。通信手段として何を使用しますか?
11 html5  sockets 

12
複数の人が1つのWebサイトでどのように作業できますか?
最近ソーシャルネットワークを見ましたが、これはばかげた質問かもしれませんが、複数の人が1つのWebサイトでどのように作業できるのでしょうか。つまり、同じページで作業している場合、どのように可能ですか?また、ファイルをライブにせずにオンラインホストにアップロードすることは可能ですか?
11 hosting 

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