ソフトウェア工学

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

5
スペックライティング管理
仕様なしでソフトウェアを書くことは想像できません。それがどんなに大雑把であろうと高レベルであろうと、スペックはプログラムの機能が何であるかについて無知なプログラマーに説明することが重要です。 しかし、スペックの問題は、ソフトウェア開発サイクル全体でいくらか2番目の市民であることです。開発がスチームを拾うとき、それは無視されます。しかし、論争が発生すると、開発者、テスター、および販売担当者は、彼らの根拠を正当化するための仕様を見つけるために争います。 1つ以上のシナリオが発生します。 仕様を復元できません。仕様がどこにあるか誰にもわかりません 仕様の異なるバージョンは異なるソースから出てきます。どのバージョンが最新バージョンであるか、または利用可能な最新バージョンがあるかどうかを見つけるのは非常に困難です。 仕様は不完全であり、参照するドキュメントの一部が欠落しています。 したがって、スペック管理は重要であり、誰もが単一のスペックのソースしか持っていないことも同様に重要です。 スペックをどのように管理しますか?私は誰もがGoogleドキュメントを使用できるようにしようとしましたが、誰もが反対しました。誰もがあまりにも愛着があり、Microsoft Wordに夢中です。MicrosoftWordは、非常に使いやすく、画像を挿入しやすく、数式を入力するのも簡単です。 MS Wordが共有するのがひどいことを彼らに納得させるには?

4
以前のクライアントをバイパスしようとしている請負業者を適切に処理するにはどうすればよいですか?
私は地元のゲーム開発ショップでフリーランスをしてきました。私たちが取り組んだプロジェクトのほとんどは、外部の請負業者によって行われました。この男は今、ゲームとは何の関係もない新しいプロジェクトのために、私と直接取引をしたいと考えています。したがって、以前のクライアントのスキルは必要ありません。 彼らはそれについて聞いた、そして彼らは今それらを通過しないために請負業者に腹を立てているが、私は彼が本当に気にしていないし、とにかく追求するであろうと思う。 独立した労働者として、私は気にすべきですか?もしそうなら、私はみんなを幸せにすることができますか?

3
Java Swingアプリでのウィンドウ管理の設計パターン
最初の小さなJava Swingアプリの作成を開始しました。プログラムが開くと、ラベルと2つのボタンを備えた単一のシンプルなウィンドウが表示されます。これらのボタンの1つをクリックすると、ウェルカム画面が消去され、まったく別のパネルに置き換えられます。 その機能を作成する最良の方法が何であるかはわかりません。1つの方法はJFrame、引数としてmy を他のすべてのコンポーネントに渡すことですが、それは私にはハッキーな感じがします。または、各パネルをアクションリスナーとして2重にしていますが、それも正しくないようです。 ここで適用すべきデザインパターンはありますか?「メインウィンドウのコンテンツのみを置き換える」は、かなり一般的な操作である必要があります。パターンの名前で十分です。そこから自分でGoogleを使うことができます。(ただし、これ以上の説明にはノーとは言えません。)

26
あなたが遭遇した最悪のアンチパターン[クローズド]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 6年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 プログラマーとしてのキャリアで出会った最悪のアンチパターンは何ですか? 私はJavaにほとんど関わっていますが、おそらく言語に依存していません。 最悪なのは、メインのアンチパターンと呼んでいるものだと思います。これは、すべてのロジックを含む単一の非常に大きなクラス(場合によっては、一対の小さなクラスを伴う)で構成されるプログラムを意味します。通常、すべてのビジネスロジックが含まれる大きなループがあり、時には数万行のコードが含まれます。

15
邪魔なJavaScriptは大丈夫ですか?
WebサイトのすべてのユーザーがJavaScriptを有効にする必要がある場合、邪魔なJavaScriptを使用しても問題ないかと考えていました。 私はすべてプログレッシブ拡張に賛成ですが、古いブラウザやJavaScriptが無効になっている場合に、高度なWebアプリケーションがユーザーを戸口で跳ね返すポイントは何ですか? 私たちは非常にスリムなターゲットユーザーを抱えており、必要なブラウザーとプラグイン/機能をターゲットユーザーに伝えることができます。だから私の質問は、その場合JSとHTMLを混ぜても大丈夫ですか?onclick属性の使用と同様です。

14
プロジェクトのコードベースに深刻な作業が必要であることをプロジェクトマネージャーまたはリードデベロッパーに(巧みに)伝えるにはどうすればよいですか?
私は(比較的)小さな開発チームに参加しました。1年ではないにしても、数か月間プロジェクトに取り組んでいます。ほとんどの開発者がプロ​​ジェクトに参加するのと同じように、最初の数日間はプロジェクトのコードベースを確認しました。 このプロジェクト(中規模から大規模のASP.NET WebForms内部基幹業務アプリケーション)は、より具体的な用語がないため、災害です。コーディング標準には、すぐに気付く3つの問題があります。 標準は非常に緩いです。すべきことよりも、すべきでないこと(ハンガリー語の表記法を使用しないなど)の詳細を説明します。 標準は常に守られているわけではありません。どこでもコードのフォーマットに不整合があります。 この標準は、Microsoftのスタイルガイドラインに準拠していません。私の意見では、フレームワークの開発者と言語仕様への最大の貢献者によって示されたガイドラインから逸脱することには価値がありません。 ポイント3については、MCPDをWebアプリケーション(具体的にはASP.NET)に集中させるために時間をかけたため、おそらくもっと面倒です。また、私はチームで唯一のマイクロソフト認定プロフェッショナルです。私はすべての教育、自習、および実地学習(認定試験の準備を含む)で学んだことにより、プロジェクトのコードでいくつかのインスタンスを見つけました。最良の方法。 私はこのチームに1週間しかいませんが、コードベースには多くの問題があり、「自分の方法」で物事を行うためにすでに記述されているものとの戦いに費やす時間が増えると思います。たとえば、より広く受け入れられているコーディング標準、アーキテクチャパターン、ベストプラクティスに準拠したプロジェクトに取り組んでいます。これは私に私の質問をもたらします: プロジェクトを大幅に刷新する必要があることを、プロジェクトマネージャーとチームリーダーに提案する必要がありますか(その場合はどうすればよいですか)? 彼らのオフィスに足を踏み入れたくないので、私のMCTS証明書とMCPD証明書を振って、彼らのプロジェクトのコードベースはくだらないと言っています。しかし、私は実際に高品質のソフトウェアを書きたいと思っており、最終製品を安定させて簡単に保守できるようにしたいので、私はまた、黙っていたくないし、彼らの厄介なコードの上に厄介なコードを書かなければなりません。

12
C#のプロパティ結合演算子
C#のnull結合演算子を使用すると、コードを短縮できます if (_mywidget == null) return new Widget(); else return _mywidget; 至るまで: return _mywidget ?? new Widget(); C#で使用したい便利な演算子は、オブジェクトのプロパティ、またはオブジェクトがnullの場合は他の値を返すことができる演算子であることに気づきました。交換したいので if (_mywidget == null) return 5; else return _mywidget.Length; と: return _mywidget.Length ??! 5; この演算子が存在しないのには何らかの理由があるに違いないと私は思わずにはいられません。コード臭?これを書くためのより良い方法はありますか?(私はnullオブジェクトパターンを知っていますが、これらの4行のコードを置き換えるためにそれを使用するのはやり過ぎのようです。)
9 c#  code-smell  null 

7
仕様書、ユースケース、またはシナリオで顧客の顧客を何と呼びますか?
私のチームと私は、顧客との対話に使用するソフトウェアを開発しています。さらに、私たちは自分たちのドッグフードを食べ、ソフトウェアを使用して顧客と対話します。 したがって、私たちの従業員はオペ​​レーターになることができ、お客様はオペレーターになることができ、お客様のお客様は訪問者になることができるため、ユースケースやシナリオを説明するのは難しい場合があります。 ただし、お客様はオペレーターの従業員とやり取りする訪問者である場合もあり、お客様のお客様は私たちの顧客または従業員とやり取りする訪問者である場合もあります。 ここにモデルがあります: A is an employee B is a customer C is our customers' customer X interacts with Y Operator --> Visitor A --> B A --> C B --> C 時にはお客様がさまざまな役割を演じることがあるため、従業員と顧客ではなく、オペレーターまたは訪問者という特定の役割を参照する必要がある場合があります。 いつも「お客様のお客様」と言っても一口です。 他の開発ショップがこれらのセマンティックの詳細をどのように処理するのか、それらのユースケースとシナリオを書くときに疑問に思いました。 第3レベルの俳優を含む製品に適用できる一語の一般的な用語はありますか? 特定の役割であるオペレーターと訪問者を使用する以外に、顧客の顧客を識別するためにどのような言葉を使用できますか? 単語は、組織内で採用されるように十分に短くする必要があります。2音節より長い場合でも、短縮形は他の俳優と区別する必要があります。

6
開業医として、なぜ私はハスケルを気にする必要がありますか?モナドとは何ですか、なぜそれが必要なのですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 彼らがどんな問題を解決するのか分かりません。

3
誰もがTSQLのコーディング標準を推奨できますか?
私たちには長い間、.Netコードのコーディング標準がありました。それらを適用する方法に関するアイデアについては、時間とともに進化する信頼できるソースがいくつかあるようです。 私たちの製品で使用するために記述されたSQLのいくつかの標準をまとめることができるようにしたいのですが、適切に記述されたSQLを決定するものについてコンセンサスに関するリソースがそこにないようです。

2
Webアプリケーションを設計するための適切なワークフローとは何ですか?
かなりのWeb開発を行ってからしばらく経ちましたが、最新のプラクティスを活用したいのですが、ワークフローを視覚化してすべてを組み込むのに苦労しています。 これが私が使用しようとしているものです: CakePHPフレームワーク jsmin(JavaScript Minify) SASS(Synctactically Awesome StyleSheets) ギット CakePHP: かなり自明で、修正を加えてソースを更新します。 jsmin: スクリプトを変更する場合、jsminを手動で実行して新しい縮小コードを出力しますか、変更されたjavascriptファイルのjsmin出力を自動的に生成するpre-commitフックを実行する方が良いでしょう。コミットフックを実装する知識がないと仮定します。 SASS: 私はSASSが提供するものを本当に気に入っていますが、SASSコードがデフォルトでブラウザーでサポートされていないことも知っているため、ある時点で、SASSコードを通常のCSSに変換する必要があります。ワークフローのどの時点でこれが行われます。 ギット 私はそれを認めるのは恐ろしいですが、実質的なWeb開発を最後に行ったとき、SCMソース管理を使用しませんでした(IE、私はソース管理を使用しましたが、バックアップ付きの非常に詳細な変更ログで構成されていました)。 それ以来、デスクトップ開発にGit(およびmercurialとSVN)を使用した多くの経験がありますが、Web開発に最適に実装する方法を知りたいと思います)。 変更を本番サーバーに直接プッシュできるように、リモートリポジトリをウェブホストに実装することは一般的ですか、または変更されたファイルのみを本番サーバーに簡単にアップロードできるクロスプラットフォーム(windows / linux)ツールがありますか? 。リモートリポジトリを簡単に実装できるウェブホスティング会社はありますか、SSHアクセスなどが必要ですか? 別のリモートトラッキングブランチを備えたリモートリポジトリを備えた自分のテストサーバーでこれを行う方法をすでに知っていますが、リモートの本番ウェブホスティングサーバーでこれを実行したことがないため、オプションをまだ認識していません。 追加: ページで必要なファイルのダウンロード数を制限するために、ページで使用される個別のJavaScriptファイルを本番サーバーのページごとに1つのファイルにコンパイルするJavaScriptフレームワークの実装を検討していました。 このようなものはすでに存在していますか?私が使用して貢献できる同様の何かを実装するオープンソースプロジェクトがすでに実際に出回っていますか? 偏執的なWeb開発者がパフォーマンスについてどのように考えるか(およびWebサイト上のファイル要求の数がパフォーマンスに大きな影響を与えるという事実)を考えると、すでにこの問題に対処しているウィザードハッカーがネット上にいると思います。

4
チェスエンジンの記述に使用するパラダイムはどれですか。
チェスゲームエンジンを作成する場合、どのプログラミングパラダイム(OOP、手続き型など)を使用し、なぜそれを選択するのでしょうか。チェスエンジンとは、現在のボードを評価し、コンピューターの次の動きを決定するプログラムの部分を意味します。 チェスエンジンを書くのは楽しいかもしれないと思ったので、質問します。それから、関数型プログラミングを学ぶためのプロジェクトとしてそれを使うことができると思いました。次に、いくつかの問題が機能的パラダイムにあまり適していないことに気付きました。それから、これは良い議論の餌になるかもしれないと私は思いました。

6
PHPコードを読んだり触ったりするのが怖すぎるWebデザイナーをどのように扱いますか?
私はウェブサイトを作るために雇われ、デザイナーと仕事をしています(たまたまクライアントと連絡を取り、私を雇ったので、いいえ、私は彼のお尻を蹴り出すことができません=))あまりにも恐れていますphpコードに触れるには、htmlとcssの初心者で十分なモデルを提供できないため、今日の作業は、半分プログラムされたページの新しいhtmlモデルを調べ、<div>sを削除してクラスを変更することなどです。 。 私たちの両方にとってこれをより簡単にするための何らかのツール、またはいくつかのより良いワークフローはありますか?多分私はこれを間違った方法で扱っています、私はウェブ開発に不慣れです、そして私に彼にグラフィックのモックアップを与えてそしてそれをさせるだけの十分なHTML / CSS(そして彼はそうしているでしょう)を知りませんすべてのことなので、私たちがやっていることは、彼が望んでいるように見える静的なHTMLページを私に与えて、<?php ?>それをあちこちに置くことです=) 誰か私にこれについていくつかのアドバイスを与えることはできますか?
9 php  html  css  workflows 

5
時間/プロジェクトごとの充電[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 7年前休業。 これは私が以前に尋ねた質問に関連しています-/software/34023/how-to-end-a-relationship-with-a-client-without-pissing-them-off 時間単位で充電する場合とプロジェクト単位で充電する場合の義務は何ですか?プロジェクトに同意する場合は、作業に10日かかり、1時間あたり£Xがかかるとおおよその見積もりを出します。10日が経過した後、無料で作業する義務があり、それでも管理できない場合予期しない問題のためにプロジェクトを完了するには?プロジェクトを配信したがバグが見つかった場合はどうなりますか?10日間が経過している場合、これらのバグを無料で修正する必要がありますか、それともクライアントに請求する必要がありますか? また、上記のプロジェクトの場合、プロジェクトを開始したときの結果はどうなりますか。ただし、なんらかの理由で10日が経過した後、あきらめてクライアントにこれ以上実行できないことを伝える必要がありますか。これはあなたの評判とクライアントとの関係を構築するために何もしないことを理解していますが、あなたはあなたに支払われたお金を返済する義務がありますか、それともあなたは半分/ほぼ完成したソースコードを提供し、他の誰かがそれを完了するのを助けるのを助けますか? 上記の質問をするのは、私がフリーランスに非常に慣れていないため、上記の状況が発生した場合の対処方法を知りたいからです。ありがとう!

2
APIはen_USまたはen_GB、あるいはその両方にある必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 APIを米国のスペルまたは英国のスペルで作成する必要がありますか?または、両方を1つにマッピングし、内部で私が好きな人を使用して両方が機能するようにする必要がありますか?現在、ほとんどのAPIは米国のスペルになっています。それの解決策は何ですか? 編集:これを標準化する方法はありますか?両方サポートできますか?

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