ソフトウェア工学

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

2
ライブラリに実装する「良い数」の例外とは何ですか?
私はいつも、ソフトウェアのさまざまな部分にいくつの異なる例外クラスを実装してスローすべきかと考えていました。私の特定の開発は通常C ++ / C#/ Java関連ですが、これはすべての言語の問題だと思います。 スローする例外の良い数と、開発者コミュニティが良いライブラリに期待するものを理解したいと思います。 私が見るトレードオフには以下が含まれます: より多くの例外クラスにより、APIユーザーの非常に細かいレベルのエラー処理が可能になります(ユーザー構成やデータエラー、またはファイルが見つからない) 例外クラスを追加すると、単なる文字列メッセージやエラーコードではなく、エラー固有の情報を例外に埋め込むことができます 例外クラスが増えると、コードのメンテナンスが増えます 例外クラスが増えると、APIがユーザーに近づきにくくなる可能性があります 例外の使用法を理解したいシナリオは次のとおりです。 ファイルのロードやパラメーターの設定を含む「構成」段階 ライブラリがタスクを実行し、おそらく別のスレッドで何らかの作業を行う「操作」タイプのフェーズ中 例外を使用しない、またはより少ない例外を(比較として)使用しないエラー報告の他のパタ​​ーンには、次のものがあります。 例外は少ないが、ルックアップとして使用できるエラーコードを埋め込む エラーコードとフラグを関数から直接返す(スレッドからは不可能な場合がある) エラー時にイベントまたはコールバックシステムを実装(スタックの巻き戻しを回避) 開発者として、あなたは何を見たいですか? 多数の例外がある場合、とにかくそれらを個別に処理するエラーを気にしますか? 操作の段階に応じて、エラー処理タイプを優先しますか?

6
クラウドコンピューティングは単なるリソースのレンタル方法ですか?
私が最近働いている会社は、Windows AzureでWebサービスをホストし、それを発表しました。現在、オンラインマガジンでは、「企業Xがクラウドに移行する」、「企業Xがクラウド用のデスクトップを削除する」など、無意味なものがたくさんあると言われています。 非常に長く、「サービス」や「低エントリー価格」などについて多くのことを話している(Wikipediaから始まる)たくさんの資料があるように見えますが、それらをすべて読みましたが、どのように見えるのかわかりませんクラウドのサービスと、サービスでもあるがコロケーションの実店舗サーバーで実行されるStack Exchangeの間に線を引くのに素人にとって役立つかもしれません。 Windows Azureでの私の経験から、本当の違いは次のとおりです。クラウドでは、サービス所有者がハードウェア、ネットワーク帯域幅、ミドルウェア(たとえば、Azureの役割で使用されるWindows 2008)を使用する権利をオンデマンドでレンタルし、メンテナンスの補助もあります(役割を実行しているコンピューターが別のコンピューターをクラッシュした場合など)が自動的に検出され、ロールが再デプロイされます)。クラウドがなければ、サービス所有者は自分ですべてを処理する必要があります。 それは正しい区別でしょうか?

7
どのような電子的なユーザーストーリーマッピングツールをお勧めしますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 アジャイルソフトウェア開発は、ユーザーストーリーと呼ばれるワークアイテムタイプに大きく依存しています。たとえば、ユーザーストーリーでいっぱいのバックログがあり、それらのいくつかを選択して次のスプリントで作業することができます。 しかし、バックログに入れるユーザーストーリーをどこでどのように見つけますか?ストーリーマッピングと呼ばれる一般的な手法があります。ジェフパットンがそれを発明しました、そして、ここにそれをする方法に関する決定的なガイドがあります。 問題は、Pattonのストーリーマッピング手法をサポートする電子ツールは何ですか? 私は少し調査を行ったところ、Pivo​​talおよびRallyプラグインが見つかりましたが(どちらの顧客でもありません)、現在SilverStoriesを試しています。 他にどんなツールがありますか?何を使いましたか?あなたは何をお勧めしますか(しません)?どうして? 更新:コメントを書いた人の中には、この手法を電子ツールで適用することは単に不可能であるという答えに傾いているようであり、それを受け入れるべきです。誰かが答えとしてそれを書くことはできませんか? 更新(Alex Feinmanのコメントを踏まえて質問を明確にするため):質問は、ストーリーマッピングのオプションを識別することです。ジェフ・パットンのテクニックは、明らかにスティッキー付きのホワイトボードで実行できるため、質問は電子ツールで提供される可能性のある追加オプションに焦点を当てています。(未熟な)特定のツールまたはツールのクラスに対するコミットメントは、この質問のポイントではありません。

12
一般的なUnixスキルのために誰かにインタビューする[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 * nixシェルの使用経験があると主張する開発者をどのようにテストしますか(明確にするために、誰かが* nixで開発できるかどうかはテストしたくありません。 ログファイルから情報を取得する問題を解決することを考えていました。これには、cat、grep、cutなどの基本的な作業と、パイピングの組み合わせが含まれます。 他にどんな基本的な知識を求めますか?繰り返しになりますが、これは* nixシステム用に開発する人へのインタビュー用ではなく、* nixシステム管理者用ではなく、* nixシステムで作業を行う必要のある通常の開発者用です。
20 interview  linux  unix  shell 

8
チームにおけるシニアWeb開発者の役割は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 他の3人のWeb開発者のチームで、私は1年間主任Web開発者としての肩書きを持っています。これがリードとしての最初の仕事です。 私は自分の役割が経営陣から何であるかについてかなり設定されています。他の上級レベルの開発者が何をしているのか興味があります。私は主に、他の組織のリーダー/シニア開発者として他の人々の責任が何であるかについて興味があります。私は中小企業でしか働いていなかったので。 (a)組織のシニア/リードWeb開発者に何を期待しますか(サイズに関係なく)。 (b)Web開発リーダーとシニアWeb開発者に違いはありますか? 私はいくつかのスレッドをレビューしましたが、自分自身をシニア開発者と呼ぶべきであるが、シニア開発者が彼/彼女のチームですべきことの役割を包括的に議論していない場合について議論したものがありました。

4
最初の階層ファイルシステムは何でしたか?
この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 8年前に移行され ました。 「ディレクトリとファイルを含むディレクトリ」は永遠に存在していたようですが、最初のものがあったに違いありません。
20 history 

5
コーダーと競争するのが好きな上司/マネージャーに取り組む方法[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私たちの会社で最近の再編が行われた後、新しいラインマネージャーを迎えました。彼は一般に大丈夫であり、前のものほど卑劣ではありません。「卑劣」というのは、彼が邪悪なマネージャーであったという意味ではありません-私はこの用語で、ほとんどの情報を自分自身に保持し、他のチームメンバーと共有せず、人」-あなたはアイデアを得る。 しかし、それにもかかわらず、私は前のマネージャーと非常に良い関係を維持することができました-そして、私は非常に生産的でした。 私の新しい上司はよりオープンであり、良いことですが、問題をできるだけ早く解決するために別の開発者に同じタスクを与えることで、彼の品質の1つが嫌いです。すでに理解しているかもしれませんが、私たちのような環境では情報は自由に流れません。だから、私のマネージャーが10分前に話していた人は、私が今取り組んでいるのと同じ問題に取り組み始めているかもしれません。それは数回起こり、同じ問題に取り組んでいる人がいると耳にするたびに-私は行って、問題を所有しているマネージャーに尋ねましたが、彼は通常彼の答えを非常に避けていました。 だから私の質問は-私のマネージャーがそれをするのを止める方法は?半ダースの開発者からなる小さなチームでは、私は最も上級の開発者であり、通常はレースから免れていますが、それが私を襲ったとき、それは本当に私の神経を引きます。 そしてもう一つ:私はマネージャーが悪い/悪のボスであることをほのめかしていません。世界が公平であるか、そうあるべきだとも信じていません。ただ、彼にレースをやめさせる方法を見つけたいです。一度に一つのことを。

5
値コンバーターは価値がある以上に問題がありますか?
多数の値の変換を必要とするビューを持つWPFアプリケーションに取り組んでいます。当初、私の哲学(XAML Disciplesに関するこの活発な議論に一部影響を受けました)は、ビューのデータ要件のサポートについて厳密にビューモデルを作成することでした。つまり、データを可視性、ブラシ、サイズなどに変換するために必要な値の変換は、値コンバーターと多値コンバーターで処理されます。概念的には、これは非常にエレガントに見えました。ビューモデルとビューの両方に明確な目的があり、うまく分離されます。「データ」と「外観」の間に明確な線が引かれます。 まあ、この戦略を「古い大学の試み」にした後、私はこの方法で開発を続けたいかどうか疑問に思っています。私は実際に、値コンバーターをダンプし、(ほとんど)すべての値変換の責任をビューモデルの手に直接置くことを強く考えています。 値コンバータを使用する現実は、明確に分離された懸念の見かけの価値まで測定しているようには見えません。値コンバーターの最大の問題は、使用するのが面倒なことです。新しいクラスを作成し、実装するIValueConverterかIMultiValueConverter、値をobject適切な型にキャストし、DependencyProperty.Unset(少なくとも多値コンバーターの場合)テストし、変換ロジックを記述し、コンバーターをリソースディクショナリに登録する必要があります [下記の更新を参照]、最後に、かなり冗長なXAMLを使用してコンバーターを接続します(バインディングとコンバーターの名前の両方にマジックストリングを使用する必要があります)[以下の更新を参照])。特にVisual Studioのデザインモード/ Expression Blendでは、エラーメッセージはしばしば不可解であるため、デバッグプロセスもピクニックではありません。 これは、すべての価値変換を担当するビューモデルを作成するという代替策が改善であると言っているわけではありません。これは、草が反対側でより緑であるという問題である可能性が非常に高い。関心事のエレガントな分離を失うことに加えて、派生プロパティの束を記述し、RaisePropertyChanged(() => DerivedProperty)ベースプロパティを設定する際に慎重に呼び出す必要があります。これは、不快なメンテナンスの問題であることがわかります。 以下は、ビューモデルに変換ロジックを処理させ、値コンバーターを廃止することの長所と短所をまとめた最初のリストです。 長所: マルチコンバーターが排除されるため、総バインディング数が少なくなります 少ないマジックストリング(バインディングパス+コンバーターリソース名) 各コンバータを登録する必要はありません(さらにこのリストを維持します) 各コンバーターを作成する作業が少なくなります(インターフェイスの実装やキャストは不要) 変換に役立つ依存関係を簡単に挿入できます(例:カラーテーブル) XAMLマークアップは冗長ではなく、読みやすい コンバーターの再利用は引き続き可能です(ただし、ある程度の計画が必要です) DependencyProperty.Unsetに不可解な問題はありません(複数値コンバーターで気づいた問題) *取り消し線は、マークアップ拡張機能を使用すると消える利点を示しています(以下の更新を参照) 短所: ビューモデルとビューの間のより強い結合(たとえば、プロパティは可視性やブラシなどの概念を処理する必要があります) ビュー内のすべてのバインディングの直接マッピングを可能にする、より多くのプロパティ RaisePropertyChanged派生プロパティごとに呼び出す必要があります(以下の更新2を参照) 変換がUI要素のプロパティに基づいている場合、コンバーターに依存する必要があります おそらくおわかりのように、この問題については胸焼けがあります。私は、リファクタリングの道を進むのを非常にためらっていますが、値変換を使用するか、ビューモデルで多数の値変換プロパティを公開するかどうかにかかわらず、コーディングプロセスが同じように非効率的で退屈です。 賛否両論ありませんか?価値変換の両方の手段を試した人にとって、あなたにとってどちらがより効果的であると思いましたか?他の選択肢はありますか?(弟子たちは、タイプ記述子プロバイダーについて何かを言及しましたが、彼らが話していることを理解できませんでした。これについての洞察はありがたいです。) 更新 本日、「マークアップ拡張機能」と呼ばれるものを使用して、値コンバーターを登録する必要をなくすことができることを発見しました。実際、これらを登録する必要がなくなるだけでなく、を入力しConverter=たときにコンバーターを選択するためのインテリセンスが実際に提供されます。:ここでは私が始まった記事ですhttp://www.wpftutorial.net/ValueConverters.htmlが。 マークアップ拡張機能を使用する機能により、上記の長所と短所のリストと議論のバランスが多少変わります(取り消し線を参照)。 この啓示の結果として、私はハイブリッド私がコンバータを使用するシステムで実験てるBoolToVisibilityと私は呼んでMatchToVisibility、他のすべての変換のためのビューモデル。MatchToVisibilityは基本的に、バインドされた値(通常は列挙型)がXAMLで指定された1つ以上の値と一致するかどうかを確認できるコンバーターです。 例: Visibility="{Binding Status, Converter={vc:MatchToVisibility IfTrue=Visible, IfFalse=Hidden, Value1=Finished, Value2=Canceled}}" 基本的にこれは、ステータスが終了またはキャンセルのいずれかであるかを確認します。そうである場合、可視性は「可視」に設定されます。それ以外の場合、「非表示」に設定されます。これは非常に一般的なシナリオであることが判明し、このコンバーターを使用すると、ビューモデルの約15個のプロパティ(および関連するRaisePropertyChangedステートメント)が節約されました。を入力するとConverter={vc:、「MatchToVisibility」がインテリセンスメニューに表示されることに注意してください。これにより、エラーの可能性が著しく減少し、値コンバーターの使用が面倒になりにくくなります(必要な値コンバーターの名前を覚えたり検索したりする必要がなくなります)。 興味があれば、以下のコードを貼り付けます。この実装の一つの重要な特徴は、MatchToVisibilityそれがバインドされた値であるかどうかをチェックしていることでenum、それがあれば、それはチェックを確認するためにValue1、Value2なども同じ型の列挙型です。これにより、列挙値のいずれかが誤って入力されているかどうかの設計時および実行時チェックが提供されます。これをコンパイル時のチェックに改善するには、代わりに以下を使用できます(手で入力したので、間違えた場合はご容赦ください): Visibility="{Binding Status, Converter={vc:MatchToVisibility IfTrue={x:Type {win:Visibility.Visible}}, IfFalse={x:Type {win:Visibility.Hidden}}, …
20 silverlight  wpf  mvvm  xaml 

7
if / elseブロックで真理値表を最小にする方法
真理値表を取得して、それをコンパクトなifブロックに変換するにはどうすればよいですか? たとえば、AとBが条件であり、x、y、zが可能なアクションであるこの真理値表があるとします。 A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 ブロックの場合、これは以下に変換できます。 if(A) { if(B) { do(x) } else { do(y) } } else { do(z) } これは簡単なサンプルですが、多くの場合、さまざまな方法で組み合わせてさまざまな出力を生成するいくつかの条件があり、ifブロックでロジックを表現する最もコンパクトでエレガントな方法を見つけるのは困難です。

6
マーケティングおよびUIの命名が変更された場合、エンティティの内部命名(クラス、メソッド、データベーステーブルなど)を変更する必要がありますか?
この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 8年前に移行され ました。 約8年間、長寿命の製品を提供しています。時間が経つにつれて、概念とエンティティの名前が変わります。これらの新しい名前と一致するように、すべてのコードベースとデータベースのテーブルと列の名前を変更する作業を行う必要がありますか? これに関する調査や公開されたベストプラクティスはありますか? ありがとう

5
プライベートメソッドからargumentexceptionまたはargumentnullexceptionをスローしますか?
私はしばらく前に書いたコードをレビューしていましたが、メソッドのパラメーターに問題がある場合にargumentnullexceptionsおよび/またはargumentexceptionsをスローするプライベートメソッドがいくつかあることがわかります。 私の理論的根拠は、誰かが将来メソッドを「誤用」しようとする場合、アプリケーションの将来の証明に役立つと思います。ただし、それがプライベートメソッドであり、このメソッドを呼び出す可能性のある人々が関連するコメントとコードを見ることができる場合、これをスローする必要はありません。混乱させることはありますが、確かにそれらを使用しても害はありません。 私の考えでは、これらの例外は、一般に公開されるAPIのようなものでは一般的により有用であると考えています。
20 exceptions 

5
HRをバイパスしてインタビューを取得する[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 私は最近、私が資格のある職種の申請書を送り、この応答を受け取りました。「現在の資格が現在の求人に必要なものと一致しないことをお知らせすることを残念に思います。スキルセットとほぼ一致している場合は、その時点でご連絡いたします。」リストされた職位には、XとYの持ち主がいる技術スキルA、B、C、D、およびEが必要でした。 Yの経験はありません。これは、私がその職に適任であり、人事担当者(会社の一員ではないようだ)が間違っていると思うようになります。私はどの資格を失っていたのかを明確にするよう求めましたが、まだ返答はありません。 会社と一緒に仕事をする開発者についてかなりの研究をしましたが、働くのに最適な場所になると思います。私はそんなに簡単に答えに否定したくありません。会社の開発リーダーに直接(Twitter経由で)連絡して、履歴書を見てもらうように考えています。彼は私が誰なのか知りません。これはいい考えですか?
20 interview 

10
仲間のプログラマーの成長をどのように支援しますか?
チームリーダーとして、プログラマーの成長をどのように支援できますか? 私がこれを頼む理由は、私と一緒に働いているプログラマーが何人かいるからです。そして、私は本当に彼らを最大限に活用し、彼らの幸せを保ちたいと思っています。 しかし、私はこれを行う方法をよく知りません、私はする必要があります 頻繁にやり取りするか、静かな時間を与えて、邪魔されないようにしますか? 単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか? 彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど? 推測すると、各ポジションには独自のポイントがあり、さまざまな人々がさまざまなことを主張します。このような混乱により、人の管理が無期限に難しくなります。 どう思いますか?
20 management 

9
インタビュー中にコードを送信する[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はインターネットの新興企業での職に就くためにインタビューしています。位置は、ユーザー情報の非常に大規模なデータベースでのデータマイニングの実行に関連しています。データベースのサブセットの調査を伴う(長距離)インタビュー手順の一環として、分析に使用したコードを提出するように要求されました。 私の主な関心事は、このコードが「独自の」ものであり、より良い言葉がないことです。私が彼らのために働くことになった場合、私は彼らに私のすべてのコードを与えることに問題はありませんが、彼らが潜在的にコードを取り、私を雇わず、収益を生み出すために彼らのより大きなデータベースでそれを使用できることを考えると、私はためらっています。私はただ妄想しているだけですか?これは正当な懸念事項ですか?
20 interview 

7
独自のデータアクセス/データマッピングレイヤーの作成は「良い」アイデアですか?
現在、すぐに使用できるオブジェクトリレーショナルマッパーを使用するか、独自のロールを作成するかを選択できる状況にあります。 残念ながら、データ層とビジネス層が一緒にマッシュされたレガシーアプリケーション(ASP.NET + SQL Server)があります。システムは、データアクセスに関して特に複雑ではありません。相互に関連するテーブルの大規模グループ(35〜40)からデータを読み取り、メモリ内で操作し、サマリー形式で他のテーブルに保存します。現在、いくつかのリファクタリングの機会があり、データアクセスを分離して適切に構造化するために使用する候補技術を検討しています。 どんなテクノロジーを選択したとしても、 ドメインモデルに、持続性に無知なPOCOオブジェクトがある モックアップされた基礎となるデータソースに対してドメインモデルオブジェクトをユニットテストできるようにする抽象化レイヤーがあります パターンとフレームワークなどに関しては、明らかにこれに関するものがたくさんあります。 個人的には、EFをADO.NET Unit Testable Repository Generator / POCO Entity Generatorと組み合わせて使用​​することを推進しています。これはすべての要件を満たし、Repo / UnitOfWorkパターン内に簡単にバンドルでき、DB構造は適度に成熟(既にリファクタリング済み)であるため、モデルに毎日変更を加えることはありません。 ただし、グループの他のメンバーは、独自のDALを完全にゼロから設計/ローリングすることを提案しています。(カスタムDataMappers、DataContexts、リポジトリ、どこでもインターフェイス、具体的なオブジェクトを作成するための依存性注入過剰、カスタムLINQから基になるクエリ変換、カスタムキャッシングの実装、カスタムFetchPlanの実装...)狂気として私。 投げかけられた議論のいくつかは、「少なくとも、私たち自身のコードを制御できるようになる」または「以前のプロジェクトでL2S / EFを使用したことがあり、頭痛に過ぎなかった」です。(私は以前に実稼働環境で使用したことがありますが、問題はごくわずかであり、非常に管理しやすいものでした) だから、あなたの超経験豊富な開発者/アーキテクトには、この製品を完全な災害になると思われるものから遠ざけるのに役立つかもしれない知恵の言葉があります。EFの問題をかわすことで得られる利益は、車輪の再発明を試みることで、すぐに失われると思います。

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