ソフトウェア工学

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

2
JavaScriptを単体テストするにはどうすればよいですか
私は最近のJavaScriptでの作業に多くの時間を費やしています。私はjavascriptをテストするためにうまくいくように見える方法を見つけていません。私が取り組んだほとんどのWebサイトにはJavaScriptがほとんど含まれていなかったので、これまでは問題になりませんでした。私は今、jQueryを広範囲に使用する新しいWebサイトを持っているので、ほとんどのシステムの単体テストを構築したいと思います。 私の問題はこれです。 ほとんどの関数は、何らかの方法でDOMを変更します。 ほとんどの関数はWebサーバーからのデータも要求し、結果を取得するにはサービスでのセッションが必要です。 ブラウザではなく、コマンドラインまたはテスト実行ハーネスからテストを実行したいと思います。 私が読んでいるはずのヘルプや記事は役に立ちます。

6
プログラマー向けマインドマップ[終了]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 マインドマップは、プログラマが作業方法を整理するのにどのように役立ちますか。


10
ソフトウェアの速度はどのくらいの頻度でお客様の目に見えますか?
理論的には、顧客はソフトウェアのパフォーマンスの向上を直接体験して感じることができるはずです。 実際には、改善が十分に目立たない場合があります。そのため、改善から収益を得るには、顧客を引き付けるためにマーケティングで見積もり可能なパフォーマンス数値を使用する必要があります。 知覚されるパフォーマンス(GUIレイテンシなど)とサーバー側のパフォーマンス(マシン、ネットワーク、インフラストラクチャなど)の違いはすでにわかっています。 プログラマーが他のプログラマーではなく、マネージャーや顧客であるパフォーマンス分析を「作成」するために、プログラマーが余分な時間を費やす必要がある頻度はどれくらいですか?

4
OCamlは数値解析に適していますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 現在、微分方程式の数値システムを解くためにCと一部のFORTRANを使用しています。 私はこれらの両方の言語に少しうんざりしていますが、(かなり)効率的なコードが必要です... OCamlに切り替えることを考えています。 その価値はありますか?

3
チームでの名前変更、リファクタリング、変更の破棄に関するベストプラクティス
チーム環境でのリファクタリングと名前変更のベストプラクティスは何ですか?いくつかのシナリオを念頭に置いてこれを取り上げます。 一般に参照されるライブラリがリファクタリングされ、それを参照するライブラリまたはプロジェクトに重大な変更が導入された場合。たとえば、メソッドの名前を任意に変更します。 プロジェクトの名前が変更され、ソリューションへの参照を更新してソリューションを再構築する必要がある場合。 フォルダを導入し、既存のプロジェクトまたはソリューションを新しい場所に移動することにより、プロジェクト構造が「より整理された」ものに変更された場合。 いくつかの追加の考え/質問: この問題のような変化は、結果として生じる痛みが構造が正しくなくなったことを示しているのでしょうか? 重大な変更に関連するエラーを修正する責任は誰にあるべきですか?開発者が重大な変更を行った場合、影響を受けるプロジェクトに参加してそれらを更新する責任があるのか​​、それとも他の開発者に警告して変更を促すべきなのか? これは定期的に実行できるものですか、それともできるだけ頻繁に実行する必要があるものですか。リファクタリングがあまりにも長く延期されると、調整がますます困難になりますが、同時に1日を費やして1時間を費やして、他の場所で起こった変更のためにビルドを修正します。 これは正式なコミュニケーションプロセスの問題ですか、それとも有機的なものですか。

4
インタビューの質問ランキングFizzBu​​zz(1)、malloc(10)の実装[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 次のインタビューの質問の難しさについて、ご意見をお聞かせください。 O(n)時間の整数の配列で、合計が最大の連続するサブ配列を見つけます。 この些細な響きの問題は、ジョンベントレーがプログラミングパールで有名にしたもので、アルゴリズムの設計手法を示すために使用されています。 1〜10のスケールで、1はFizzBu​​zz(またはHoppityHop)テストで、10はC stdlib関数malloc()の実装です。上記の問題をどのようにランク付けしますか? この質問に最もよく答えられるのは、Programming Pearlsを読んで自分でこの問題を解決しようとした人だと思います。「プログラミングの真珠」は、そうでない人のやる気を引き出すために、「プログラミングブックのトップ10」リストで何度も取り上げられます。 いくつかのコメントはより良い評価を得るために役立つかもしれません: malloc()の実装は、見かけほど手ごわいものではありません。たとえば、K&RのCプログラミング言語を参照してください。マイクロソフトで時々尋ねられます。 CLRSによる問題解決の観察:特に時間の制約の下で作業する場合は、明確に提示された解決策を検証するよりも、問題を最初から解決する方が難しいことがよくあります。

4
基盤と見なすことができるソフトウェア開発方法論
私はソフトウェア開発方法論を含む小さな研究論文を書いています。私は利用可能なすべての方法論を調べていましたが、すべての方法論から、他の方法の基礎を提供しているものはあるのでしょうか。 例として、 アジャイル、プロトタイピング、クリーンルーム、反復、RAD、RUP、スパイラル、ウォーターフォール、XP、リーン、スクラム、Vモデル、TDDの方法論を見てみましょう。 私たちはそれを言うことができます: プロトタイピング、反復、スパイラル、ウォーターフォールは他のものの「基礎」です? それとも「基礎」などはなく、それぞれの方法論には独自の歴史がありますか? もちろん、私は自分の論文ですべての方法論について説明したいと思いますが、それを行う時間がないので、どの方法論を代表として見ることができるかを知りたいのです。

7
関数型プログラミングの引数[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 私は最近、F#を楽しみに学んでいます(私はVB.NET/C#の開発者です)。理論的にはそうです。しかし、C#ではなくF#でコーディングすることを選択するシナリオを考えるのに苦労しています。何か案は?

1
情報過多への対処法または対処法[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 たとえば、Javaに関する本など、何かを読みたいときはいつでも、多くのチュートリアルや多くの電子書籍のようなものを見つけて、どれを選択するか決定できません。 私は1つを読んでから2つを読むのに少し時間を費やしますが、結局私は去って何も得ません。 ハードブックが1冊のようにリソースがほとんどなかった昔は好きで、少なくとも最初から最後までそれを終えて、今日では多くを手に入れました。 情報がたくさんあるので、心はある情報源から別の情報源に飛び移って何も得られません。 私は何をすべきか?

4
ソースコードとアプリケーションライフサイクルの分岐に関するベストプラクティス
私たちは小さなISVショップであり、通常、毎月新しいバージョンの製品を出荷しています。コードリポジトリとしてSubversionを、IDEとしてVisual Studio 2010を使用しています。多くの人々がMercurialやその他の分散ソース管理システムを主張していることは承知していますが、現時点では、これらのメリットをどのように享受できるかわかりませんが、私は間違っているかもしれません。 私たちの主な問題は、ブランチとメイントランクを同期させる方法です。 これが今日のやり方です。 新しいバージョンをリリース(Subversionでタグを自動的に作成) 来月リリースされるメイントランクの作業を続けます そしてこのサイクルは毎月繰り返され、完璧に機能します。この問題は、緊急のサービスリリースをリリースする必要がある場合に発生します。メイントランクから解放することはできません(2)。開発中のため、緊急に解放するのに十分な安定性がないためです。 このような場合、次のことを行います。 手順(1)で作成したタグからブランチを作成します バグ修正 テストとリリース 変更をメイントランクにプッシュします(該当する場合)。 私たちの最大の問題は、これら2つをマージすることです(ブランチとメイン)。ほとんどの場合、次の理由により、自動マージに依存できません。 メイントランクに多くの変更が加えられました 複雑なファイル(Visual Studio XMLファイルなど)のマージがうまく機能しない 別の開発者/チームが理解できない変更を加えたため、マージできない したがって、これら2つの異なるバージョン(ブランチとメイン)を同期させるためのベストプラクティスは、あなたが考えることです。職業はなんですか?

3
大画面の不動産の設計の課題をどのように克服しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 この質問はもう少し主観的ですが、私はいくつかの新しい視点を得ることを望んでいます。私は特定の画面サイズ(通常は1024x768)の設計に慣れているので、そのサイズは問題にはなりません。サイズを1280x1024に拡大しても、かなりの違いを生み出すのに十分な画面領域は購入できませんが、少し余裕ができます。基本的には、「グリッドサイズ」を拡張するだけで、わずかに小さい画面でも同じ基本設計が機能します。 ただし、最後の2つのプロジェクトでは、私のクライアントはすべて1080p(1920x1080)画面を使用しており、可能な限り多くの不動産を使用するソリューションを求めていました。幅1920ピクセルの幅は、私が慣れている幅の2倍をわずかに下回っています。ワイドスクリーンを使用すると、昔の設計の一部がうまく機能しなくなります。私が遭遇している問題は、非常に多くのスペースが提示されると、いくつかの大きな問題に直面することです。 いくつの列を使用する必要がありますか?ワイドフォーマットは、2:1:1の分割(つまり、コンテンツ列が他の2つよりも大きい)での3列の分割に適しています。ただし、3つの列を使用する場合、その追加の列はどうすればよいですか? 画面の領域を効率的に使用するにはどうすればよいですか?すべてを一度に画面に表示したいという誘惑はありますが、情報が多すぎると、実際にはアプリケーションが使いにくくなります。空白は、複雑な情報を理解するために重要ですが、多すぎると、関連する概念の分離が強すぎます。 私は通常、複雑なデータを持つWebアプリケーションを使用しています。生データを理解するには、視覚化とプレゼンテーションが重要です。ユーザーも大画面(少なくとも24インチ)を使用している場合、一部の情報は視界の外にあり、ポインターを遠くに移動する必要があります。必要なものすべてを視覚的なホットポイント内に確実に収めるにはどうすればよいですか? ブログのような単純なサイトは、幅が制限されていると実際にパフォーマンスが向上し、その結果、多くの無駄な不動産が発生します。テキストボックスとテキストプレビューを並べて表示することは、そのタイプの画面の管理者側にとって大きなメリットになるのでしょうか。(1:1 2列分割)。 あなたの答えとして、私はデザインのほとんどすべてが「依存する」ことを知っています。私が探しているのは: 使用する一般原則 デザインへのアプローチがどのように変わったか この異なる形式での作業方法を自分で再訓練する必要があることがわかりました。私がこれまで取り組んできた解像度のすべてのバンプは、約25%です。640〜800(25%増加)、800〜1024(28%増加)、1024〜1280(25%増加)。ただし、1280から1920へのジャンプは、スペースの50%の増加に相当します。640から1024へのジャンプに相当します。レッスンを徐々に学習するために一般的に使用される中間サイズはありませんでした。
10 design  gui  usability 

5
サポートされていないIE6ユーザーに何を伝えればよいですか?
次のバージョンのWebアプリでは、IE6が壊れており、修正するつもりはありません。数か月間、IE6ユーザーに対して明確な警告が投稿されました。私たちはそれをサポートしない時がきたと決定しました。 私の質問は次のとおりです。これをユーザーにどのように伝える必要がありますか? ここの一部の人々は、WebアプリケーションにアクセスしようとするIE6ユーザーは機能しないので、ブロックする必要があると感じています。他の人たちは、「これはIE6では機能しない」と言って警告を残すべきであると感じていますが、それらをブロックしないでください。代わりに、クリックして警告を却下した場合は、壊れたサイトにアクセスして、機能しないことを確認してください。 誰が正しいのですか?もっと良い方法はありますか?

7
実装しない機能をユーザーから求められたらどうしますか?
ユーザーが実装できる複雑な機能を要求したときに何をしますか。ただし、1)他のユーザーに不必要な複雑さを追加するため2)オプションとして実行しないため設定パネルを複雑にしたくない。 私はiOSアプリを作成しましたが、上記の理由により実行できない複雑な機能を要求するユーザーが何人かいます。ほとんどの場合、私は彼らに「私たちはそれを考慮に入れます」と答えました。彼らがこの機能を望んでいる少数派であることを彼らに説明することも助けにならないでしょう。では、このような場合はどうしますか?
10 features 

5
課題追跡のバックログを管理する方法
私たちはここ数年Tracを忠実に使用しており、「アクティブチケット」リストは約200アイテムに増えました。これらには、優先度が低すぎて複雑すぎて現時点では修正できないバグ、延期された機能リクエスト、実際に苦情が発生したことはないが誰もがいつか修正すべきであることに同意している問題、計画されたコードリファクタリング、およびその他の設計上の問題失くしたいなど その結果、これらの問題の約200と、リストはほとんど圧倒的です。現時点で取り組む必要のあるもののソースとしてはもはや有用ではありません。 この種の問題を追跡する最良の方法は何ですか? 問題の一部は、これらの問題のいくつかは優先度が非常に低いため、実行できない可能性があることです。私はこれらのアイテムを見失うのが嫌いです(いつか必要になる場合に備えて、家から何かを捨てたくないのと同じです)。(Wontfixとしてマークすることにより)関係なくそれらを破棄する必要があり、将来必要になった場合にそれらを見つけることができると想定しますか?

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