ソフトウェア工学

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

8
プログラマーと一緒に試用期間をどのくらい使用しますか?彼らが才能があり、適切であるかどうかをどのくらい早く確認できますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私が経験したほとんどの仕事には3か月の試用期間があり、その間、雇用主は従業員が十分な仕事をしているかどうかを判断します。 私にとって、3か月はやり過ぎのように見えます。ほとんどの場合、誰かがうまくいっていないかどうかはずっと前にわかっていました。 新しく採用されたプログラマーが才能があり、チームに適しているかどうかを評価するのに、平均してどれくらいの時間がかかりますか?
8 hiring 

2
実際のオブジェクトが動的に作成されるときに、テストオブジェクトをどのように注入しますか?
依存関係注入を使用してクラスをテスト可能にしたい。しかし、クラスは実行時に複数のオブジェクトを作成し、コンストラクターに異なる値を渡します。簡単な例を次に示します。 public abstract class Validator { private ErrorList errors; public abstract void validate(); public void addError(String text) { errors.add( new ValidationError(text)); } public int getNumErrors() { return errors.count() } } public class AgeValidator extends Validator { public void validate() { addError("first name invalid"); addError("last name invalid"); } } (Validatorには他にも多くのサブクラスがあります。) これを変更する最良の方法は何ですか?ValidationErrorの代わりに偽のオブジェクトを注入できますか? …

5
テストが他の開発者によって削除されていないことを確認するにはどうすればよいですか?
仕事中に興味深い協調コーディングの問題に遭遇しました。 私はいくつかのユニット/機能/統合テストを書き、アプリケーションに新しい機能を実装しました。これにより、最大20人の開発者が作業します。すべてのテストに合格し、コードをチェックインしました。翌日、プロジェクトを更新したところ、(偶然に)テストメソッドの一部が他の開発者によって削除されていることに気付きました(開発者側で問題をマージしています)。新しいアプリケーションコードは変更されませんでした。 このような問題を自動的に検出するにはどうすればよいですか?つまり、コードが引き続き機能する(または削除されなかった)ことを自動的にチェックするテストを作成します。テストに対して同じようにするにはどうすればよいですか? 必要に応じて、Java、JUnit、Selenium、SVN、Hudson CIを使用しています。

6
C ++について知っておくべきことは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私は最近C ++の学習を始めましたが、とても楽しんでいます。 私はよく、多くの言語よりもC ++で悪いコードを書く方が簡単で、見た目よりもはるかに深いことを読んだことがあります。 悪いコードを書かないようにしたいので、C ++で良いコードを書くために、私が何をしてはいけないのか、何をすべきなのかを考えていました。
8 c++ 

1
壊れた単体テストを使用して新しい言語を学ぶ[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 先日、ドットネットロックについて聞いていましたが、彼らは、ほとんどの場合、新しい言語を学習するための本当に興味深いツールについて言及していました。彼らは特にF#について話していたと思います。 それはあなたが開いたソリューションであり、壊れた単体テストがたくさんあります。それらを修正すると、言語を学習する手順がわかります。 確認したいのですが、車の中で車を運転していたので、プロジェクトの名前が何なのか、どのドットネットロックのエピソードだったのかわかりません。グーグルはあまり役立っていません。何か案が?

3
多くのユーザーストーリーは同じ技術的タスクを共有しています。
私のケースの少し紹介: より大きな製品の一部として、私のチームはDSL用の小さなIDEを実現するように求められます。この製品のユーザーは、コードで関数呼び出しを行うことができます。また、いくつかの便利な関数ライブラリを提供することも求められます。チームは、POと一緒に、IDEユーザーのさまざまなライブラリに関する特定の数のユーザーストーリーを壁に配置しました。それらの最初のストーリーを推定するとき、チームは関数呼び出しメカニズムが魅力的ではあるが完全に明白ではないタスクであると判断したため、そのユーザーストーリーの推定は単純な3からより危険な5に上がりました。 問題に来る: 次に、チームは他のライブラリに関するユーザーストーリー(実際には10のストーリー)に移動し、これらの2つの「関数呼び出しメカニズム」のことを各ユーザーストーリーに追加しました。これですぐに20ポイントの商品の合計ポイントがアップしました!チーム内の誰もが、各ユーザーストーリーはいつでも次のイテレーションのPOによってピックアップされる可能性があることを知っているので、1つのユーザーストーリーでその部分を分離するべきではありませんが、それらの20ポイントは非常に非現実的に感じられます。 私は解決策を提案しましたが、完全に満足していません: 「デザインストーリー」を作成し、面倒な2点を載せました。しかし、私たちがそれを実現して顧客に示すようになったとき、私たちはその話について彼らにとって本当に価値のあるものを示すことができませんでした! ここでの問題は、孤立したユーザーストーリー(それらの間の依存関係なし)の原則を無視すべきかどうかです。 このような状況で、あなたは何をしますか? (小さな脚注:提案に従って、この質問をstackoverflowから移動しました)

5
インターナショナルプログラマーの管理[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私の上司は最近、母国にある私たちの国際オフィスに戻って、潜在的な新入社員にインタビューしました。私たちは、プログラマーとして数人を採用することにしました。彼らは大学を卒業したばかりで、非常に限られた経験しか持っていません(私が最初にここで働き始めたときの私と同じです)。彼らは英語を読むことができると言われていますが、私は彼らが申請プロセスの一部として書いたコードを見て、すべての変数名、メソッド名、コメントなどはスペイン語で書かれています。彼らには英語を書く能力があるのか​​疑問に思っています。しかし、彼らは学習者であると聞いています。そのため、小規模なトレーニングプロジェクトを提供することで、時間の経過とともに学習できる可能性があります。 私は彼らと緊密に協力して、彼らが優れた設計原則やその他のことを学ぶのを助け、最終的に私が彼らと一緒にコードを作成するようになるでしょう。 誰かがこの種の状況に対処し、それでうまく終わりましたか?どのような落とし穴に注意する必要がありますか?国際的なコラボレーションとトレーニングに役立つ、どのようなツールを知っていますか?

6
オープンソースライブラリのバグが疑われる場合の対処方法
プロジェクトでは、いくつかのオープンソースライブラリを使用しています。それらの一部で問題が見つかることがあります(ライブラリのバグである可能性が高いですが、特にドキュメントが完全に100%完成していない場合は特に、私たちの側での使い方が間違っている可能性があります)。ライブラリは非常に複雑なことが多いため、問題の原因を特定するためにライブラリをデバッグすることは、かなり難しい場合があります。他にどのようなオプションがあり、どのようにそれらを正確に進めるかをまとめるのを手伝ってくれませんか? 最近、WindowsでTCMalloc(Googleスケーラブルメモリアロケータ)を使用しているときに奇妙な問題が発生したので、この特定のライブラリに適用される回答を歓迎しますが、より一般的な回答も適しています。 1)プロジェクトの管理者/所有者に支援を求めます。これはどのように行うことができますか? 2)問題を特定して修正するために誰かを雇う。これを行う方法?特定のライブラリで十分な専門知識を持つ人を見つけるにはどうすればよいですか? ...他のオプションはありますか?

3
概念実証のシュートアウトを行うための最良の方法は何ですか?
私たちの会社が管理しているソフトウェアの新しいリリースに備えて、私はスケーラビリティの問題を解決するための本当に良いアプローチであると私が信じるものに取り組んできました。私は、紙面上のデザインが実際に私が望んでいることを検証するために、概念実証をまとめるつもりです。チームに説明すると、上司は反対の提案をしました。これは、問題のある領域を説明する方法に一部影響を受けています。上司はまた、代替案を評価するために2つの概念実証を行うという私の提案を受け入れました。 それでは、概念実証のシュートアウトを実行するための最良の方法は何ですか?ソリューションの評価に使用している客観的基準と主観的基準の両方があります。リンゴとこれらのかなり異なるアプローチのリンゴを比較していることを確認したいと思います。 スループットとサイズに関する要件があります。つまり、1秒あたり特定の数のオブジェクトを処理し、そのレートを1時間維持する必要があることがわかります。 スケーラビリティを評価する必要があります(コアを追加したり、オブジェクトの数を増やしたりして) 開発のしやすさ(主観的)を評価する必要がある アルゴリズムを理解するのがいかに簡単かを評価する必要があります(主観的) 私は物事がどのように傾くかについて私の理論を持っていますが、それが私の結果に影響を与えたくありません。このプロセスで客観性を維持する方法に関するあらゆる意見、および私が検討する必要があるかもしれないことは、大いに感謝されます。

6
「戦略」デザインパターンの理解を深める
しばらくデザインパターンに興味があり、「Head First Design Patterns」を読み始めました。最初は「戦略」パターンと呼ばれるパターンから始めました。下の画像で概説されている問題を調べ、最初に自分で解決策を提案しようとしたので、パターンの重要性を本当に理解できました。 だから私の質問は、以下の問題に対する私の解決策がなぜ十分ではないということです。パターンに対するソリューションの良い点と悪い点は何ですか?パターンが明らかに唯一の実行可能なソリューションになるのはなぜですか? 私の解決策 親クラス:DUCK <?php class Duck { public $swimmable; public $quackable; public $flyable; function display() { echo "A Duck Looks Like This<BR/>"; } function quack() { if($this->quackable==1) { echo("Quack<BR/>"); } } function swim() { if($this->swimmable==1) { echo("Swim<BR/>"); } } function fly() { if($this->flyable==1) { echo("Fly<BR/>"); } …

1
Schemeを学習することでどのようなメリットがありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私はJavaプログラマーであり、理論的なコンピューターサイエンスについて少し学ぶことにしました。私はその学位は持っていませんが、ソフトウェア開発に関してはコーディング以外に何も知らないので、少しの経歴が私を助けてくれます。 私はこのウェブサイトで回答を検索し、「コンピュータプログラムの構造と解釈」という本を推奨する多くの人を見つけましたが、この本を処理するために必要な数学的なノウハウがないため、私は行くことにしました代わりに「プログラムの設計方法」を使用してください。 ここで私の質問は、この経験から何を得ることができるのですか?それは私が望むように私にコンピュータサイエンスについて教えてくれますか?それとも、代わりにアルゴリズムとデータ構造について読む方が良いですか?

7
フリーウェアプロジェクトの根拠
私はこれまでにいくつかのフリーウェアプロジェクトを見てきましたが、著者は個人的な時間とリソースのかなりの量を投資し、ソフトウェアの課金さえ考慮していませんでした。これらのプロジェクトの多くは寄付ベースであり、私が聞いたところによると、寄付ウェアは(単に開発コストをサポートするためであっても)実行可能なビジネスモデルにはなり得ません。これらのプロジェクトの多くは、作成者がそれを維持することができなかったため、最終的にシャットダウンされました。 確かに、単にコミュニティを幸せにする(または何かをする)ことを好む人もいますが、プロジェクトを存続させるのに苦労している場合は、単に稼働状態を維持するために10ドルなどの少量を請求してみませんか?人々があなたのソフトウェアが有用であると感じた場合(そして多くの人々がそれらのプロジェクトが非常に有用であると感じた場合)、彼らはそのような少額の支払いで問題を抱えることはないでしょう。 問題は、人々が気に入ってダウンロードする人気の高いアプリがある場合、それに値札を付けてみませんか?なぜ無料なのですか?
8 freeware 

12
アプリケーションがカスタマイズしすぎるのはいつですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 デスクトップアプリケーションを開発していて、ユーザーがメニュー、ボタン、キーマッピング、その他のコマンドやコンポーネントをカスタマイズできるようにしたいとします。どの程度のカスタマイズを許可する必要がありますか? 私の環境は、ほぼ無限にカスタマイズ可能であることが好きです。また、環境に適切なデフォルトのセットを用意して、全体をセットアップする必要がなく、必要な設定を微調整できるようにしたいと考えています。私の好みをサポートしたり矛盾したりするユーザーエクスペリエンスはありますか?

7
プログラマーでない人から「プロの」フリーランスのプログラマーまで[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 私は15歳の学生で、彼の最初の車を購入しようと思っています。いつもコンピューターをいじくり回すのが好きなので、プログラミングを学ぶことで追加のお金を稼ぐことができると思いました。 私はここで多くの投稿を読んでいて、自分にとって有益だと思う本のリストを思いついていますが、最初に知っておくべき最も重要な情報や、必要なものがすべてあるかどうかはわかりません。これが私が考えていたものです: 1:プログラミング言語を深く学ぶ。私はステップバイステップの本で約半分の方法で終わりました2.オブジェクト指向のデザインとデザインパターンについて学びます3.ソフトウェアテストについて学びますrent-a-coderのようなフリーランスのウェブサイトでのプロジェクト。 私が必要とするかもしれない、または調査すべき他に何かありますか? ありがとうございました。 Microsoft Visual C#2010ステップバイステップ Professional C#4.0および.NET 4(Wroxプログラマーからプログラマーへ) C#の詳細 C#を介したCLR UML ANDパターンの適用 ヘッドファーストオブジェクト指向分析および設計 設計パターン:再利用可能なオブジェクト指向ソフトウェアの要素 テスト駆動開発:例 テストにガイドされて成長するオブジェクト指向ソフトウェア
8 c#  freelancing 

4
ネストタイプは悪い習慣と見なされますか?
タイトルに示されているように、ネストタイプ(クラスの列挙型や構造体など)は悪い習慣と見なされていますか?Visual Studioでコード分析を実行すると、次のメッセージが返されます。 警告34 CA1034:Microsoft.Design:タイプ 'ClassName.StructueName'をネストしないでください。または、外部から見えないようにアクセシビリティを変更します。 ただし、コード分析の推奨事項に従うと、単一のクラスにのみ適用されるか、またはそのクラスでのみ使用される可能性のある構造体および列挙型がアプリケーション内に多数存在する傾向があることがわかりました。そのような場合、その場合はタイプsinをネストするのが適切でしょうか、それともより良い方法がありますか?

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