ソフトウェア工学

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

5
Entity Frameworkを使用する必要がありますか?
現在、次のスタックがあります。 VS 2005 Webフォーム SQL Server 2005 IIS 6 これへの移行を計画しています: VS 2010 MVCとWebフォーム SQL Server 2008 IIS 7 私の質問は、VS 2010でMVCに移行するとき、Entity Framework(または別のORM)、micro ORM(Massiveなど)、または単なるSQLを使用する必要がありますか? VS 2010について読んだすべてのチュートリアルは、データトランザクションにEntity Frameworkを使用することを目的としていますが、それは近い将来(5年以上)続くでしょうか? 問題があれば、クライアントのアプリケーションには10〜1,000人のアクティブユーザーを含めることができます。

2
O(…)とは何ですか。どのように計算しますか?
助けて!アルゴリズムまたはコードのBig-Oを分析する必要がある場所について質問があります。 Big-Oが何であるか、またはBig-OtaとBig-Thetaまたはアルゴリズムの複雑さを分析するその他の手段にどのように関連するかは正確にはわかりません。 Big-Oがコードを実行する時間を指すのか、それとも必要なメモリ量(スペース/時間のトレードオフ)を指すのかわかりません。 私はコンピューターサイエンスの宿題を持っています。そこでは、いくつかのループ(おそらく再帰アルゴリズム)を使用し、そのためのBig-Oを考え出す必要があります。 私は、既知のBig-Oを持つ2つのデータ構造またはアルゴリズムから選択できるプログラムに取り組んでおり、どちらを選択するかわからない。 Big-Oを計算してプログラム、宿題、またはコンピューターサイエンスの一般的な知識に適用する方法を理解するにはどうすればよいですか? 注:この質問は、コミュニティによって決定された他のBig-O質問の標準的なターゲットです。多くのBig-Oの質問に役立つ情報を大量に含めることができるのは、意図的に広いことです。これが広いという事実を、同様の質問が受け入れられることを示すものとして使用しないでください。

13
言語の大文字と小文字を区別しないキーワード[非公開]
カスタムスクリプト言語を記述しようとしています。大文字と小文字を区別しないキーワードを提供することで言語を容認する提案がありました。 私は個人的にこのアイデアが好きではありませんが、エンドユーザーを幸せにするだろうと言っている私のチームの人はほとんどいません!FORTRAN、BASIC、SQLなどの言語の例では、大文字と小文字が区別されないことを示しています。 これはいい考えですか?

5
トップダウンまたはボトムアップのどちらを設計するのが望ましいですか?
私が理解しているように、トップダウン設計は、最小の構成要素が定義されるまで、抽象的な高レベルの概念をより小さなコンクリートのわかりやすい部品に改良することです。一方、ボトムアップは低レベルのパーツを定義し、システム全体が形成されるまで徐々に高レベルのブロックを構築します。 実際には、2つの方法を組み合わせることをお勧めします。ドメインの知識、その関係、および制約を完全に指定するために、高レベルの仕様から始めます。問題が十分に理解されると、最小の構成要素が作成されてシステムが構築されます。 のプロセス: 要件仕様の作成 設計仕様を作成します(図を使用) 実装する 届ける 繰り返します(反復開発では、各フェーズでチャンク全体を行うのではなく、少しずつ繰り返し行い、顧客の動的な要件に適応するために毎日ミーティングを行います) 私には完全に正常に見えます(仕様としての計画)。それには欠点がありますが、それが反復開発を行った理由です:1つのフェーズに時間を費やす代わりに、変更(場合によっては毎日)を受けるドメイン知識のあらゆる可能性を調査するための要件分析ではなく、少し分析します、少し設計してから実装します。 別の方法は、各反復がミニウォーターフォール形式であり、分析が数日(または1週間)で行われることです。同じことが設計にも当てはまります。残りの時間は実装に費やされます。反復的な開発と組み合わせたトップダウンアプローチには本質的に何か問題がありますか? 彼のエッセイであるプログラミングボトムアップでは、ポール・グラハムは完全にボトムアップからビルドを奨励するか、ボトムアップからプログラムするように思われますが、要件分析/設計段階ではありません。 経験豊富なLispプログラマーは、プログラムを異なる方法で分割します。トップダウン設計と同様に、彼らはボトムアップ設計と呼ばれる原則に従います-問題に合うように言語を変更します。 私が知る限り、彼が意味したのは、Lisperがまだトップダウン設計を実行しているが、プログラムはボトムアップであるということです。彼が書いた別のポイント: ボトムアップ設計とは、同じプログラムを異なる順序で書くだけではないことを強調する価値があります。ボトムアップで作業すると、通常は別のプログラムになります。単一のモノリシックプログラムの代わりに、より抽象的な演算子を備えたより大きな言語と、その中に記述されたより小さなプログラムを取得します。まぐさの代わりに、アーチを取得します。 これは、Lispでプログラムを作成している間に、一般的なツールになるということですか?
31 design  c++  lisp 

18
クライアントがオブジェクト指向プログラミングを使用しないように要求した場合はどうしますか?
グリッド内のアリの活動をシミュレートするプログラムを作成しています(PDF)。アリは動き回り、物を拾い、物を落とします。 問題は、アリのアクションと各アリの位置をクラス属性で簡単に追跡できる(そして、そのようなアリの多くのインスタンスを簡単に作成できる)一方で、クライアントは関数型プログラミングのバックグラウンドがあるため、関数型プログラミングを使用して行われるシミュレーション。 明確にするために、クライアントからの元の単語は「クラスなし」のみであり、「関数型プログラミング」ではありません。だから私は彼が関数型プログラミングを意味するのではなく、私が命令的にそれを行うことができると思います。さらに、関数型プログラミングの経験はありません。 ただし、単に「命令的に実行する」よりも、特に関数型プログラミングの要件に関するこの質問に焦点を当てることが有益だと思います。 この状況にどのように対処しますか?クライアントに、オブジェクト指向プログラミングを使用する方がはるかにクリーンであると説得して、彼が要求したものに従い、質の悪いコードを与えようとしますか、それとも何か他のことをしますか?

2
CVでスキルレベルを説明する方法 [閉まっている]
CVのさまざまなプログラミング言語でのスキルレベルを説明するための可能な/標準的な言葉は何ですか?現在、次の3つを使用しています。 専門家 高度な 初心者 私は自分自身をプログラミング言語の専門家とは見なしていないため、すべてのスキルを初心者または上級者に分類しています。しかし、もっと差別化したいと思います。特に上級者と専門家の間の何かを探しています。助言がありますか?それとも、それ以上詳細に区別するのに煩わされるべきではないでしょうか?
31 skills 


4
並行性に対処するためにPythonに固執するか、放棄する必要がありますか?
私はDjangoで書かれた10K LOCプロジェクトを持っています。非同期性と必要なバックグラウンドジョブのためにかなりのセロリ(RabbitMQ)があり、並行性を高めるためにシステムの一部がDjango以外で書き直されることで恩恵を受けるという結論に達しました。理由は次のとおりです。 シグナル処理および可変オブジェクト。特に、あるシグナルが別のシグナルをトリガーする場合、ORMを使用してDjangoでそれらを処理すると、インスタンスが変更または消滅したときに驚く可能性があります。渡されたデータがハンドラー内で変化しないメッセージングアプローチを使用したいと思います(Clojureのコピーオンライトアプローチは、それが正しければ素晴らしいと思われます)。 システムの一部はWebベースではないため、タスクを同時に実行するためのより良いサポートが必要です。たとえば、システムはNFCタグを読み取り、読み取りが行われるとLEDが数秒間点灯し(Celeryタスク)、サウンドが再生され(他のCeleryタスク)、データベースが照会されます(他のタスク)。これはDjango管理コマンドとして実装されますが、DjangoとそのORMは本質的に同期しており、メモリを共有するのは制限されています(NFCリーダーを追加することを考えています。より優れたメッセージパッシング機能を確認したい)。 ErlangやClojureなどの言語を使用する場合と比較して、TwistedやTornadoなどを使用する場合の長所と短所は何ですか?私は実用的な利益と不利益に興味があります。 システムの一部が別の言語でより良くなるという結論にどのように到達しましたか?パフォーマンスに問題がありますか?これらの問題はどの程度深刻ですか?より高速にできる場合、高速であることが重要ですか? 例1: HTTPリクエストの外部で動作するDjango: NFCタグが読み取られます。 データベース(および場合によってはLDAP)がクエリされ、データが利用可能になったときに何かを実行したい(赤または緑のライト、サウンドを再生する)。これはDjango ORMの使用をブロックしますが、利用可能なCeleryワーカーが存在する限り問題ではありません。より多くのステーションで問題になる場合があります。 例2: Djangoシグナルを使用した「メッセージの受け渡し」: post_deleteイベントが処理され、他の目的は、このために変更または削除することができます。 最後に、通知をユーザーに送信する必要があります。ここで、通知ハンドラーに渡される引数が削除済みまたは削除予定のオブジェクトのコピーであり、ハンドラーで変更されないことが保証されていると便利です。(もちろん、ORMが管理するオブジェクトをハンドラーに渡さないことで、手動で行うことができます。)

14
優れたプロジェクトリーダーまたは上司に立ち向かうとき
私たちのプロジェクトヘッドは、天才的なソフトウェアアーキテクトであり、一般的には穏やかで思いやりのある人であり、自然のオタクであり、声で繊細です。しかし、時々、私たち(私のチームメイトと私)は意見が異なります-特にソフトウェアアーキテクチャの問題、システム設計の問題、UIの問題など、リーダーと。 意見の違いをいつ、どのように(もしあれば)表現すべきですか?
31 teamwork 

17
誰かが開発者として10時間シフトで働いていますか?[閉まっている]
週5日から4日に切り替えたいが、週40時間の勤務を維持したい。 10時間は生産性に影響しますか?私は公共交通機関が嫌いなので、輸送を20%削減できれば幸いです。 10時間のシフトで働く他の開発者が、それを使った経験が私を助けてくれることを明確にすることができれば。 私の上司は十分に柔軟であると思うので、彼はそれでクールです。

9
複数のコンピューターを使用している場合、どのようにすべてを同期しますか?[閉まっている]
現在、4台または5台のコンピューターがあり、すべてを同期するためのより良いシステムが必要です。私はgitとgithubを使用してプログラミングプロジェクト用にファイルを同期していますが、データベース、.bash_profileファイル、bashスクリプトなどがあります。ファイルを同期する代わりに、あるコンピューターから別のコンピューターにsshするだけです。しかし、これはかなり混乱しています。私のコンピューターのいくつかはUbuntuであり、他のコンピューターはOS Xです。 複数のパソコンにまたがるワークフローを管理するための提案はありますか?

6
EntityFrameworkを使用していくつかの引数は何ですか?[閉まっている]
現在作成しているアプリケーションは、ストアドプロシージャと手作りのクラスモデルを使用してデータベースオブジェクトを表現しています。一部の人々はEntity Frameworkの使用を提案しており、私はプロジェクトにそれほど遠くないので、それに切り替えることを検討しています。私の問題は、EFを主張する人々が悪い面ではなく、良い面だけを教えてくれると感じていることです:) 私の主な懸念は次のとおりです。 DataAnnotationsを使用してクライアント側の検証が必要であり、とにかくクライアント側のモデルを作成する必要があるように思えるので、EFがそのようなコーディング時間を節約するかどうかはわかりません ネットワークを経由するときにクラスをできる限り小さくしたいのですが、EFを使用すると、多くの場合、不要な追加データが含まれることがあります 複数のデータベースにまたがる複雑なデータベースレイヤーがあり、EFがこれを処理できるかどうかはわかりません。ユーザー、ステータスコード、タイプなどを含む共通データベースと、アプリケーションの異なるインスタンス用のメインデータベースの複数のインスタンスがあります。SELECTクエリは、データベースのすべてのインスタンスに対してクエリを実行できますが、ユーザーは、現在作業しているデータベース内のオブジェクトのみを変更できます。アプリケーションをリロードせずにデータベースを切り替えることができます。 オブジェクトモードは非常に複雑で、多くの場合、多くの結合が関係します EFの引数は次のとおりです。 並行性。各保存の前にレコードが更新されたかどうかを確認するためにチェックをコーディングする必要はありません。 コード生成。EFは私のために部分クラスモデルとPOCOを生成できますが、検証といくつかのカスタム解析メソッドのためにクライアント側モデルを作成する必要があると思うので、これは本当に多くの時間を節約するだろうと確信しています。 すべてのデータベースオブジェクトに対してCRUDストアドプロシージャを作成する必要がないため、開発の速度 現在のアーキテクチャは、パラメーター化されたストアドプロシージャを介してデータベース呼び出しを処理するWPFサービス、WCFサービスとWPFクライアントとの間でやり取りされるPOCOオブジェクト、および検証のためにPOCOをクラスモデルに変換するWPFデスクトップクライアントで構成されますデータバインディング。 私の質問は、EFはこれに適していますか?EFについて私が知らない落とし穴はありますか?

14
10代の若者にソフトウェアウイルスについて教えることは倫理的ですか?[閉まっている]
私は、息子の中学校で放課後のコンピュータークラブの指導を志願しました。コンピュータウイルスには多くの関心が寄せられています。同じディレクトリ内の他のバッチファイルに感染する単純なバッチファイルウイルスを作成する方法を示すことを考えていました。また、同じ名前のバッチファイルを作成する方法を示しますが、それはパスに近いため、別のプログラムを置き換えることができます。 また、ウイルスとウイルスのような動作を認識する-ウイルス対策技術の議論を可能にすることができます。 私は妻にこのアイデアを言ったが、彼女はそれがひどいアイデアだと思った。それらに搭載された武器を与えることと比較しました。この手法は、現代のオペレーティングシステムの実際のいたずらにはすぐには適用されないため、危険だとは思いません。 私は無頓着すぎるのですか、それとも彼女が心配しすぎているのですか?これは私の質問に対するこの議論を解決するものではなく、私はただ別の意見を得ようとしています。 更新:システム(またはディレクトリ)間の移動や悪意のある動作をカバーする予定はありません。そして、誰もが私が深い暗黒の秘密を明らかにしていると思わないように、ここに私が図書館で見つけた1996年の本があります。悪意を抱く人がいるなら、彼らは道を見つけるでしょう。
31 security  ethics 

7
ストアドプロシージャの代わりにORMの使用を提案するにはどうすればよいですか?
私は、すべてのデータアクセスにストアドプロシージャのみを使用している会社で働いています。そのため、新しいプロシージャを実行する必要があるコミットごとにローカルデータベースの同期を維持するのは非常に面倒です。私は過去にいくつかの基本的なORMを使用しましたが、この経験ははるかに優れており、よりクリーンです。今後の開発のために何らかのORMを使用することを検討していることを開発マネージャーとチームの残りに提案したいと思います(チームの残りはストアドプロシージャに精通しており、他のことは一度も使用していません)。現在のアーキテクチャは、.NET 1.1のように記述された.NET 3.5です。ActiveRecordの奇妙な実装を使用し、コードビハインドファイルでループされる型指定のないDataSetを返す「ゴッドクラス」を使用します。クラスは次のように機能します。 class Foo { public bool LoadFoo() { bool blnResult = false; if (this.FooID == 0) { throw new Exception("FooID must be set before calling this method."); } DataSet ds = // ... call to Sproc if (ds.Tables[0].Rows.Count > 0) { foo.FooName = ds.Tables[0].Rows[0]["FooName"].ToString(); // other properties set …

11
一人のプログラマーのためのスクラム?[閉まっている]
私は非常に小さな会社で「Windowsエキスパート」と呼ばれています。この会社は、私、セールスおよびトレーニングの役割を担う機械エンジニア、および設計、開発、サポートの役割を担う社長から構成されています。 私の役割も同様に一般的ですが、主に、現在のWindowsのバージョンで製品を実行するために必要な、製品のプログラミングを設計および実装します。 ウェブキャストで提供されたスクラムパラダイムの高レベルの概要を見終えました。私の質問は、「製品の国際化とローカライズ」など、開発作業項目が通常非常に高いレベルで与えられることを考えると、製品開発へのこのアプローチについてもっと学ぶ価値があるかどうかです。 もしそうなら、スクラムを一人のプログラマーの使用に適応させることをどのように提案しますか?そのためには、クラウドベースのツールやその他のツールが有用でしょうか? そうでない場合、一人のプログラマーが日々努力を整理するためにどのようなアプローチを提案しますか?(おそらく、質問はその単純な質問に還元されます。)

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