ソフトウェア工学

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

3
JavaのCollectionインターフェースを使用する正当な理由はありますか?
そのインターフェイスの特定の実装に縛られないように、利用可能な最も一般的なインターフェイスを使用すべきだという議論を聞いたことがあります。このロジックはjava.util.Collectionなどのインターフェースに適用されますか? 私はむしろ次のようなものを見たいです: List<Foo> getFoos() または Set<Foo> getFoos() の代わりに Collection<Foo> getFoos() 最後のケースでは、どの種類のデータセットを扱っているのかわかりませんが、最初の2つのインスタンスでは、順序付けと一意性についていくつかの仮定を立てることができます。DOES のjava.util.Collectionはセットとリストの両方のための論理的な親であることの有用性の外側を持っていますか? コードレビューを行うときにCollectionを使用するコードに出くわした場合、その使用法が正当であるかどうかをどのように判断し、より具体的なインターフェイスに置き換えるためにどのような提案をしますか?

4
なぜMVC over Web Formsを使用するのですか?
最近、建築家は、トヨタ(Web Forms)だけが必要なときにロールスロイスソリューション(MVC)を提供していると当社を説明しました。 アーキテクチャの選択としてのWebフォームとMVCについてのあなたの考えを知りたいと思います。

10
オブジェクト指向の設計スキルをどのように評価しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 どのような洞察や質問があなたの人のOOADスキルを決定するのにつながるでしょう。

3
オーバーヘッドAPI /テクノロジーにどのように対処しますか
ほとんどの人はこのような状況にあったと思います。 最初のプロジェクト計画が開始されます。要件の概要を説明します。アーキテクチャのレビューとAPI / Frameworksによる並べ替えの後、フィッティングテクノロジーが選択されます。開発が始まります。 そして、それが始まります。おそらく簡単なサポートを行う必要があるとすぐに、フレームワーク/ APIが裏目に出始め、作業を行う代わりに、テクノロジーと戦うことになります。研究時間は急増し、フォーラムは沈黙しており、何も行われていないようです。また、何か機能するようになったとしても、それが正しく行われたかどうかは本当にわかりません。 これらの状況でどのように管理しますか?あなたはハッキングに行きますか、さらに調査しますか、経営陣に何を言いますか?

3
オープンソースに貢献するよう会社を説得するにはどうすればよいですか?
私は、ASP.NET Webアプリ用のライブラリ/コンポーネントを具体的に構築するオープンソースソフトウェアに貢献するために、私が働いている会社を説得しようとしています。Googleの1週間に1日のポリシーに似ていますが、1か月に1回であるという点を除いて、職場で個人のペットプロジェクトに取り組むことができる「イノベーションデイ」があります。オープンソース。 他の会社はこれをします、例えば。Headspring Systems(http: //automapper.codeplex.com- 上部のバナーを参照)。 私は彼らに何を伝えますか?会社にとって有益なメリットを彼らに伝えることができますか?私たちの会社や評判などにさらされる可能性についてはすでに言及しましたが、次に雇用が始まるとトップソフトウェア開発者を引き付けます。しかし、他にどのような議論ができますか? 更新:私が働いている会社は、主にASP.NETおよびMS StackでWebアプリケーションを構築するソフトウェア会社です。クライアントは主にNHS(英国の公衆衛生部門)です。

2
Static Createメソッド—コンストラクターと比較した賛否両論
コンストラクターに対して静的オブジェクト作成メソッドを使用することの長所と短所は何ですか? class Foo { private Foo(object arg) { } public static Foo Create(object arg) { if (!ValidateParam(arg)) { return null; } return new Foo(arg); } } 私が考えることができることはほとんどありません: 長所: 例外をスローする代わりにnullを返します(名前を付けますTryCreate)。これにより、クライアント側でコードがより簡潔でクリーンになります。クライアントがコンストラクターの失敗を期待することはほとんどありません。 明確なセマンティクスでさまざまな種類のオブジェクトを作成します。たとえばCreatFromName(String name)、CreateFromCsvLine(String csvLine) 必要に応じて、キャッシュされたオブジェクト、または派生した実装を返すことができます。 短所: 発見しにくく、コードのスキミングがより困難です。 シリアル化やリフレクションなどの一部のパターンはより困難です(例Activator<Foo>.CreateInstance())

5
GWTについてどう思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はこの期間にJavaを学び、チュートリアルを終えたばかりなので、プロジェクトに貢献し始める準備ができていると思います(経験から、これが本当に学ぶための最良の方法だからです)。 GWTを見たことがありますが、おもしろそうなので、試してみようと思いました。ただし、GWTはJavaScriptでJavaアプリケーションをデプロイするため、実際のことを学習できるのにGWTを学習する必要があるのはなぜかと考えています(これがJavaScriptです)。私の質問:それは価値がありますか?JavaやGWTを使用する代わりに、JSアプリケーションを構築したい場合、JavaScriptを習得した方がいいでしょう。GWTを使用して特定のものを構築する方が簡単かもしれませんが、最終的にはそれだけの価値があると思いますか? ありがとう。
11 java  javascript  gwt 

3
インストーラーまたはポータブル
私はインストールが必要なプログラムをたくさん恐れていました。アンインストール後もレジストリに痕跡が残ります。また、一部のアンインストーラーはプログラミングが不十分です(つまり、一部のプログラムはアンインストールできません)。これはWindowsに適用されます。 インストーラーの良い面は、ショートカットとファイルの関連付けを作成することです。ただし、LinuxのKomodoはセットアップにシェルスクリプトを使用し、フォルダーを削除することで安全にアンインストールできます。 インストーラーはすべて廃止すべきだと思いますか?インストールの効果をシェルスクリプトに置き換える必要があると思いますか?すべてのコンピューターゲームは移植性があると思いますか? 「/ Applications / $ {AppName} / Informationフォルダーをスキャンし、アプリアイコンを一覧表示する」デザインを将来のデスクトップ環境に使用する必要がありますか?
11 installer 

5
右脳は、大規模な左脳のコードをどのように処理できますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 私はアーティストであり、ほとんどが、自分自身をアーティスト/物理学者と表現しています。私は数学、言葉、そして左脳と見なされる「論理的」なものを扱うことができますが、それは努力であり、間違いを犯します。思考-空間的関係、全体的な全体像の文脈など。もちろん、左右脳理論は単純化されており、精神活動はそれほど単純ではないため、これらはすべて曖昧です。それでも、私はアーティスト、ビデオディレクター、シェフ、その他の非言語的思考、創造的なタイプにうまく適合していると感じていますが、「IT」またはハードコアソフトウェアエンジニアのほとんどの人は、細部に注意して、一度に多くの詳細を念頭に置いて、強力で合理的かつ言語的な能力。 したがって、ここで私は、オブジェクト指向に非常に重いC ++ソフトウェアの大群の厄介であいまいなバグを修正するための仕事に就いています。それらの間の関係、実行の流れ(非常にスパゲッティのような)およびその他の詳細。 それに加えて、私は現代のC ++およびOOスタイルの多くに対してもかなり強い。このコードを書いた人は、深いオブジェクト指向とモダンなC ++クールドを本当に飲みました。実際、コードを追跡するのがはるかに難しくなり、何かを修正または変更する場所を決定するのがはるかに難しくなります。これが左/右の差の一部であるかどうか(またはあなたがそれを呼びたいもの)かどうかはわかりません。 しかし、私がしなければならないC ++に取り組む-人々は私の収入を私に依存しています。雇用主にとって可能な限り効果的であるために、この状況に対処するためのヒントとテクニックは何ですか?
11 technique  tips 

6
チームワークの計画を支援するためにどのソフトウェアを使用していますか?その理由は何ですか?
計画は非常に困難です。私たちは自然に自分の将来を予測するのが得意ではなく、多くの認知バイアスが問題を悪化させています。グループ計画はさらに困難です。不完全な情報、一貫性のない状況の見解、およびコミュニケーションの問題は、困難をさらに悪化させます。 アジャイルメソッドは、グループ計画を整理するための1つのフレームワークを提供します。全員に見える計画(ユーザーストーリー)を作成し、それを小さなチャンク(スプリント)に分割し、レトロスペクティブ分析を提供して計画を改善します。しかし、これらのプラクティスをサポートするための優れたツールを見つけることは難しいことです。 これらの目標を達成するためにどのソフトウェアツールを使用していますか?なぜそのツールを使用しているのですか?どのような成功はしているあなたは、特定のツールを使用していましたか?

10
大学のCSコース用のJavaまたはC ++?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は、CSの学位を取得するために学校に入学するのが苦手です。私が見ている学校は、入門的なソフトウェア開発コース(オブジェクト指向プログラミング、設計パターン、そのようなこと)のためにJavaベースとC ++ベースの両方を実際に提供しています。追跡するトラックは学生が選択しますが、追跡する時間はあります。 あなたが今知っていることを知っていて、あなたに選択があったなら、あなたはJavaまたはC ++でCSカリキュラムの基礎を築くでしょうか? 私の現在の議論は現在次のようになっています。 良い友人(AIの博士号を持っている)は、後で仕事の機会を広げるためだけに、私が何をするかに関係なくJavaをより良い選択肢として売り込んでいますが、彼の仕事はすべてJavaすき)。私は米国マサチューセッツ州ボストンに住んでいますが、JavaとCの仕事量は同じです。 反対に、終了した時点で学位をどうするかについてはまだ完全には決着していませんが、私の好みはMac向けに開発することです。そのため、C ++にはすでにある程度の露出がありますが、Javaを使用していないため、私の仕事で自分のプロジェクトを見ていると、すぐにそれを使用する必要がありません。少なくとも2年。 私はおそらく20年後に学校に戻る大人であることに注意する必要があります(私は現在、どんな種類の学位も持っていません)ので、できる限り最大限の機会と時間を費やすことを目指しています。私はC ++に傾いていますが、私はまだあいまいであり、外部の客観的なアドバイスがここで役立ちます。 または、私はそれについて考えすぎているかもしれません。 更新:言語の選択は、当初考えていたほど明確ではなかったことがわかりました。いくつかのコアコースはJavaに焦点を当てていますが、他のコアコースのいくつかは主にCとJavaで動作しますが、他のいくつかは適切な方法でスローされます。実際、私の学期の残りは、JavaとJavascriptで時間を過ごした後、Objective-Cになります。前学期は、C、Javascript、およびPHPに加えて、割り当てが必要になったために投げ込まれた他のいくつかの学期でした。全体がほぼ真ん中に分かれていて、これに対する答えがまだ得られているので、現在、学位の要件をすべて満たすようにカリキュラムを作成しようとしていますが、合理的に処理できる限り多くの言語を吸収しています。これまでのところ、私の成績はこれをしようとして苦しんでいません。
11 java  c++  education 

5
JVMとJavaのWORAは、他の高レベル言語とどのように違いますか?
Javaの世界では、JVMについてよく話しますが、Javaが新しくなったとき、おそらく「Write Once、Run Anywhere」というキラー機能がありました。 人々が話したり書いたりする方法からすると、これは、たとえばPythonが機能する方法とは異なるようです。しかし、私が書いたPythonコードが別のマシンで異なる方法で動作することを認識していません。(私はそれほど多くのPythonを書いていませんが。) だから私は何が欠けていますか?JVMはPythonインタープリターとどう違うのですか?PythonにJavaのプラットフォームに依存しない方法はありますか?または、これは単なる文化的な違いですか?

5
EE対コンピューターサイエンス:開発者のアプローチ、スタイルへの影響?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 ソフトウェア開発者(SWエンジニア、アーキテクト、職種など)と、電子工学やその他のエンジニアリングのバックグラウンドとの間に、コンピューターサイエンスを通じて専門職に就いた人と体系的な違いはありますか? 電子工学の背景とは、EEの学位、または独学の電子工学の修得者、他の種類のエンジニア、実験物理学者を意味します。 フリップフロップ、トライステートバッファー、クロックエッジの立ち上がり時間などの強力な知識からソフトウェア作成の専門家になると、通常、特定の専門分野と欠如の問題、考え方、または優れたスキルへの明確なアプローチにつながるかどうか疑問に思っています抽象データ型、オブジェクト指向、データベースの正規化、プログラミング言語で「クロージャー」を話すような概念に満ちたコンピューターサイエンスタイプと比較した場合、他のスキルのスキル-はんだごての群衆にとってほとんど意味をなさないもの十分なプログラミングを学びます。 現実の世界では、個々の例外が広範囲にわたっていると確信していますが、ほとんどの場合、全体的な違いがあると言えますか?これらは、たとえば「何かを構成するために」「データベース設計を行うために電子ラングラーを雇うな」という雇用への影響があるでしょうか?違いを知ることは、求職者がより適切な何かをより効果的に見つけるのに役立ちますか?または、特定の職務で自分が不適当であると感じる人に、啓発や実践的なアドバイスを提供しますか? (ところで、私はコンピュータサイエンスの授業を受けたことがありません。それらがカバーするものの正確な印象はあいまいです。私はエレクトロニクス/物理学/アートタイプです、私です。)

9
新興企業と既存企業の雇用[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 私はいつもこれについて疑問に思っており、おそらくここで経験豊富な人々がこれについてコメントすることができます。Google、Microsoftなどの有名なソフトウェア会社は、常に仕事の要件を満たさないソフトウェアエンジニア/(または他の関連する専門家)を雇うことに慎重であり、むしろ「はい/たぶん」と断ります「決定。 また、一般的に、新興企業はそのような「完璧に満たない」従業員を採用するほうが一般的だという認識もあります。しかし、私にはこれは直観に反しているように思えます。スタートアップは一般的にはるかに小さく、リソースに制約があるため、実際には「10/10」の雇用が必要になります。レンタル中。 誰もが直接の経験からこれについて何かコメントがありますか? おかげで、
11 hiring  startup 

2
パンくずリストは、WebサイトやWebアプリをナビゲートするための実行可能な方法ですか?
現在、次の種類のWebサイトとアプリに取り組んでいます。 Amazonのようなeコマース 予約システム(部屋の空室状況をチェックするホテルの受付係を考えてください) Freshbookのような請求書管理 アマゾンでは、パンくずリストに気づかず、左パネルのファセットだけに気付きました。ただし、neweggはブレッドクラムとファセットの両方を使用しています。 ホテル予約や請求書管理などの管理システムでは、通常、システム全体で検索する一意の予約番号または顧客番号があります。各予約は、たとえば次のようにさらにセクションに展開できます。 Reservations > Reservation #123456 > Guests > Room > Airport pickup > Payment 一意の予約ページごとに、パンくずリストを使用して、サイトに対する現在のページの位置を示しています。それはそのような情報を提示するのに良い方法ですか?タブやその他のテクニックを使用する必要がありますか?

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