ソフトウェア工学

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

3
高品質のソフトウェア提案の作成[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 最近、ソフトウェアプロジェクトのいくつかの提案を読んでいますが、今まで見てきたことに少し心配です。多くの場合、提案が急ぎすぎたり、考えが不十分だったりしていると感じます。 提案が果物のバスケットのように見える必要はほとんどありませんが、仕事に投球したり、資金調達の承認を求めている場合、「まともな」提案を構成するために利用可能なガイドラインが必要です。 誰かがソフトウェアの提案を書くための良いガイドラインを知っているのか、それとも本/ウェブサイトなどを指し示すことができるのか疑問に思っていましたか?

1
モジュラーサービスアプリケーションの設計
本質的に非常にモジュール化された新しいソリューションの設計を検討しており、その設計をサポートする構造を作成して、将来の拡張、懸念の明確な分離、モジュールごとのライセンス付与などを可能にします。 Webで発見されたモジュラーアプリケーションまたは複合アプリケーションはUI中心で、Silverlight、WPFなどに焦点を当てています。私の場合は、さまざまなUIプロジェクトに取り組んでいる他の開発者が使用するWCFサービスアプリケーションを開発しています。 バックグラウンド 私のプロジェクトの目標は、ビジネス/ドメインロジックの一元化されたソースを作成して、現在プロセスやルールなどを複製しているいくつかのビジネスアプリケーションをサポートすることです。また、モジュール性のすべての利点が得られるわけではありませんが、活用できるこれらの部分を活用するフレームワークを確立する機会。 サービスアプリケーションによって公開されるAPIを見て、設計を開始しました。私が検討していたモジュラー回線に沿ってサービスを分離できることは明らかです。たとえば、FinanceService、InventoryService、PersonnelServiceなどのサービスを使用して、サービス操作をグループ化して、APIで高い凝集度を提供し、カップリングを低く抑えて、クライアントがアプリケーションに関連するサービスのみを消費するようにします。 MyApp.Finance、MyApp.Inventory、My.Personnelなど、これらのサービスごとに個別のモジュールを持つことができるのは理にかなっています。横断的関心事と共有タイプは、MyApp共有アセンブリにあります。ここから少し縛られます。 (ああ、アプリケーションの疎結合を維持するためにDependency InjectionにIoCコンテナーを使用することに言及する必要があります。Pandoraのボックスを開きたくないので、どれに言及しません!) MyApp.ServiceHostで、FinanceService.svcなどの各モジュールに対応するサービスホストファイル(.svc)を作成します。サービスホストには、サービスコントラクトを定義するインターフェイスを含む構成ファイルの情報に対応するサービスの名前が必要です。次に、IoC構成を使用して、使用するインターフェイスの具体的な実装をマップします。 1.サービス層はAPIを実装し、モジュールに委任する必要がありますか、またはモジュールは自己完結型である必要があります(サービス実装を含む、そのモジュールに関連するすべてを含むという点で)。 問題にアプローチする1つの方法は、サービスコントラクトの実装を含むMyApp.Services "モジュール"を持つことです。各サービスクラスは、操作のドメインロジックを含む適切なモジュール内の別のクラスに単純に委任します。たとえば、MyApp.ServicesのFinanceService WCFクラスは、Financeモジュールに実装されて操作を実行する別のインターフェイスに委任します。これにより、シンサービスファサードを維持し、実装をサービス実装に「プラグイン」して、たとえばモジュールがWCFを心配する必要がなくなります。 一方で、インターフェイスと実装を備えているという点で、各モジュールが自己完結していることが望ましい場合があります。サービスホストは、モジュールにあるサービスコントラクトインターフェイスを参照し、モジュールからの適切な実装も使用するようにIoCが構成されます。つまり、新しい.svcファイルとIoC構成情報を追加する以外に、サービスレイヤーを変更せずに新しいモジュールを追加できます。 標準のWCFからRESTfulサービスインターフェイスに切り替えるか、RIAサービスなどにアクセスした場合の影響について考えています。各モジュールにサービスコントラクトの実装が含まれている場合、サービステクノロジーまたはアプローチを変更すると、すべてのモジュールに変更を加える必要があります。しかし、ファサードが独自のモジュールである場合、変更するためにその部分を交換するだけです。モジュールは、共有アセンブリで定義されている可能性のある異なるコントラクト(インターフェイス)のセットを実装する必要がありますか? 2.モジュール間でリソースを共有したり、モジュール間で依存関係を処理する最良の方法は何ですか? たとえば、受信操作を考えます。商品を受け取ることは在庫機能であるため、最初は赤面でこれが在庫モジュールに入ることは理にかなっています。ただし、領収書を生成して支払いを承認する必要があるという点で、財務的な側面もあります。 一方では、操作を伝えるために何らかのタイプのドメインイベント/メッセージングを使用することを期待します。Inventoryモジュールは、Financialモジュールによって処理されるGoodsReceivedEventを発生させて、領収書を生成し、支払いプロセスを開始します。ただし、これは、金融モジュールが受け取った在庫品目について知る必要があることを意味します。IDで単純に参照できますが、名前や説明、単価など、領収書の追加情報が必要な場合はどうすればよいですか?各モジュールが、そのモジュールのニーズに合うように設計されたインベントリアイテムの独自のバージョンを持つことは理にかなっていますか?その場合、GoodsReceivedEventを処理するときに、Financialモジュールは在庫アイテムの独自のルックアップを実行する必要があります。 ... さまざまなERPシステムで多くの作業をしており、このタイプのモジュール方式で設計されていることを知っているため、この例を意図的に使用しました-方法がわかりません。また、上記では明示的に言及していませんが、ドメインドリブンデザインの原則に従ってソリューションを設計し、このタイプのモジュール性がその領域にぴったりと収まると考えています。 私の頭をこれに巻き付ける助けは大歓迎です。

8
変数の命名規則?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 ReSharper(C#用)を使い始めたばかりで、そのコードがファインダの匂いを嗅ぐようなもので、かなり前に修正するつもりだった文章(主に可変命名規則)を示しています。 メソッドとインスタンス変数の命名規則のいくつかを再考することになりました。ReSharperは、インスタンス変数はラクダの小文字で、アンダースコアで始まることを提案しています。しばらくの間、すべてのローカル変数をキャメルケースの小文字にするつもりでしたが、アンダースコアが必要ですか?快適ですか?私はこのコンベンションが好きではありませんが、私はまだそれを試していません、それについてあなたはどう思いますか? 再評価を促された2番目のことは、GUIイベントハンドラーの命名規則です。私は通常VS標準のControlName_Actionを使用し、コントロールは通常ハンガリー語表記を使用します(接尾辞として、ユーザーに見えるものと同様の名前の変数を処理する場合にないものをコードで明確にするため)。 )、それについてあなたはどう思いますか?ReSharperコンベンションに屈するべきですか、それとも他の同等に有効なオプションがありますか?
11 c#  naming  resharper 

2
フローチャートとメソッド呼び出し
私はいくつかのフローチャートを実行していますが、これに正しく近づいているかどうか疑問に思っています。基本的に、いくつかのメソッド呼び出しがあり、それぞれ個別にフローチャートを作成しています。ただし、これらのメソッドのいくつかは、何らかの情報のメソッド呼び出しを行ってから続行します。この例を参照してください。 GetQueue()を呼び出す他の3つのメソッドがあり、これを正しく表現しているかどうか疑問に思っています。AddQueue()フローは視覚的に壊れているように見えます。 注:フローチャートで行った変更:
11 flowchart 

2
誰かがビジネスルール/検証エンジンにWindowsワークフローを正常に使用しましたか?
誰もがWindows Workflow FoundationをBusinessRules / Validationエンジンに正常に使用したかどうか、またはこれに関するサンプルコードや記事を知っているかどうか疑問に思っていました。 以前に使用したことがある場合、それについてどう思いますか?他のBusinessRule / Validationシステムと比較してどうですか? 私は次のようなルールを考えています if (A, B, and C) AllowAccess(); または if (Value between X and Y) return true;

3
確立されたエンタープライズ環境に新しいJVMプログラミング言語を導入する
現在の職場がJavaショップだと想像してください。Java言語については多くの知識が蓄積されており、すべてをスムーズでアジャイルな方法で処理するための包括的なビルドおよび展開プロセスが用意されています。 ある日、たとえばRubyで書かれようと叫ぶプロジェクトが始まります。上級開発者のみがRubyについての手がかりを持っていますが、JVMにはJRubyが存在するため、既存のインフラストラクチャを引き続き使用およびサポートできるという一般的な考え方があります。また、JRubyは、より少ないコードで現在のアプリケーションを実装するより良い方法への道を示すことができるため、これは継続的な移行を表すことができます。 JRubyは単なる例であり、Clojure、Groovy、またはJVM上で実行される他のすべてのものであることを忘れないでください。 問題は、このような変更をどのように導入するかです。

4
ソフトウェア開発ライフサイクル全体で要件を管理するツール[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 ソフトウェア開発プロジェクトの要件または機能を管理するツールを探しています。5〜10人の地理的に多様な小さなチームが要件を提起、議論、追跡するために使用します。したがって、次のものが必要になります。 複数のユーザーのサポート ウェブベース 要件間の階層をサポートします。たとえば、親/子関係 個々の要件を議論する手段を提供する サポートファイルのアップロード 費用対効果。理想的には無料または 使用可能なプロジェクト管理ツールの一部は、機能が過剰であるか、機能や要件ではなくタスクやリソースのスケジューリングに重点を置いています。 誰にも解決策がありますか?

8
悪いマルチスレッドのためにほぼ/実際に失敗したプロジェクトからどのような教訓を学びましたか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 悪いマルチスレッドのためにほぼ/実際に失敗したプロジェクトからどのような教訓を学びましたか? フレームワークは、特定のスレッドモデルを課すことがあるため、物事を1桁正しくするのが難しくなります。 私に関しては、最後の障害からまだ回復していないため、そのフレームワークでマルチスレッドに関係することは一切しない方が良いと感じています。 私は、単純な分岐/結合があり、データが一方向にしか移動しない(信号は円形方向に移動できる)マルチスレッドの問題に長けていることがわかりました。 一部の作業は厳密にシリアル化されたスレッド(「メインスレッド」)でのみ実行でき、他の作業はメインスレッド(「ワーカースレッド」)以外のスレッドでのみ実行できるGUIを処理できません。データとメッセージは、N個のコンポーネント間で全方向に移動する必要があります(完全に接続されたグラフ)。 そのプロジェクトを別のプロジェクトに任せたとき、どこにでもデッドロックの問題がありました。2〜3か月後、他の開発者がデッドロックの問題をすべて解決し、顧客に出荷できるようになったと聞きました。不足している知識の一部を見つけることができませんでした。 プロジェクトに関する何か:メッセージID(スレッドに関係なく、別のオブジェクトのメッセージキューに送信できるイベントの意味を表す整数値)の数は数千になります。一意の文字列(ユーザーメッセージ)も約1,000になります。 追加しました (過去または現在のプロジェクトとは無関係に)別のチームから得た最高の例えは、「データベースにデータを置く」ことでした。(「データベース」は集中化とアトミック更新を指します。)すべてが同じ「メインスレッド」で実行され、すべての非GUIヘビーリフティングが個々のワーカースレッドで実行される複数のビューに断片化されるGUIでは、アプリケーションのデータはデータベースのように動作する単一の場所に格納され、「データベース」が重要なデータ依存関係を含むすべての「アトミック更新」を処理できるようにします。GUIの他のすべての部分は、画面の描画のみを処理します。UIパーツはデータをキャッシュする可能性があり、ユーザーが適切に設計されていれば、ほんの数秒で陳腐化していることに気付かないでしょう。この「データベース」は「ドキュメント」とも呼ばれます ドキュメントビューアーキテクチャ。残念ながら、いや、私のアプリは実際にはすべてのデータをビューに保存します。なぜそうだったのか分かりません。 仲間の貢献者: (貢献者は実際の/個人的な例を使用する必要はありません。逸話的な例からの教訓は、自分で信頼できると判断された場合も歓迎します。)

1
MonoDroidが本当に死んでいるかどうかについての洞察は誰にもありますか?
私の会社は最近、Visual Studio 用のAndroid向けMonoツールに投資しました。多くの.NET開発者がおり、monodroidツールの威力に感銘を受けました。ZDNetの投稿を読んだ後、このプロジェクトが死んでしまったのではないかと悲しくなりました。その記事にリストされているものよりもこれについてもっと知っているかもしれない誰かがそこにいますか?どうやら多数の開発者がモノプロジェクトから手放されたようですが、それが本当かどうか疑問に思っています。どんな情報も大歓迎です。私たちはEnterprise 5ライセンスを購入しましたが、これは非常に高価であり、このものを購入して学習し始めた後に消滅した場合、私はかなり怒ってしまいます!
11 c#  .net  monodroid 

4
Coffeescriptの学習に時間をかける必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 私はフリーランサーであり、他の人がより良いjava-scriptコードを書くのを助けることで、自分のパンとバターを獲得しています。私は、ほとんどのJavaScriptフレームワークで良い経験を持っています。 coffeescriptの学習に時間を費やす価値があるかどうか疑問に思っています。誰がそれを学ぶべきか、誰がそれを学ぶ必要があるか?

3
同じプロジェクトの複数のクライアントに対する分岐モデルの提案
さまざまなクライアントのベースとして機能するいくつかのアプリケーションを含む非常に大きなプロジェクトがあります。 すべてのクライアントは、製品の独自のパーソナライズ、さまざまなマイルストーン、さまざまな要件などを持っているため、各プロジェクトは独自のニーズに基づいて独立して進化します。 プロジェクトの中核は、すべてのプロジェクトで類似していますが(等しくはありません)、各クライアントを個別に処理する(ただし、必要に応じてクライアント間で通信する)チームがあるように編成されています。これまでのところ、インターネットを検索するか、素晴らしいアイデアを思いつくことで、私たちのニーズに合ったスキームを見つけることができませんでした:) これまで、必要な変更のための特定のブランチを備えた製品をすべてのニーズに合わせて取り組んでいますが、製品のアーキテクチャは優れていますが、徐々に大きな問題になりつつあります。私たちが直面している主な問題は次のとおりです。 クライアントごとに異なるマイルストーン:これは、各チームが異なる時間としてバージョンを作成する必要があり、残りのコミットが安定性または製品に影響を与えないことを意味します。 場合によってはシステムのコアに影響する場合としない場合があるさまざまな要件。 大規模なチーム(20人以上のチームメンバー) システム内のバグの処理:チームが他のクライアントに影響を与える可能性のあるバグをプロジェクト内で見つけた場合はどうしますか? 注: LOCが10M以上のプロジェクトについて話している。 注: Team Foundation System、Visual Studio 2008、およびC#(主に)を使用しています。 状況に対処する方法についての提案、情報源、またはアイデアはありますか?同様の問題を抱えているモデルは市場にありますか?

4
簡単な言葉でのニューラルネットワークとは[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 例を使って簡単な言葉でニューラルネットワークを説明していただけますか?

5
構造の悪いソフトウェア開発モデルを克服するにはどうすればよいですか?
私は現在、新入生として働いている会社に入社しました。GISソフトウェア開発の熟練者の数が限られているため、私もその中の1人だったので、プロジェクトマネージャーとして直接採用されました。 私はJavaとGISにかなり精通しており、ロケーションベースのサービスに関する自発的な研究を行ってきましたが、プロジェクト管理や構造化ソフトウェア開発は行っていません。地質学の専門家として卒業してから1年後、前年は大学の学者として働いていました。 仕事に興味を持っていたおかげで、機会が現れ、最終的には会社のビジネスインテリジェンス部門の責任者にもなりました。会社は私を信じていました。私自身はデータウェアハウジングとBIの概念を学び、GISとBIを組み合わせることにも成功しました。 また、私は現在、C#WPFのBIツールで2人の開発者と協力しています。 アジャイルプロジェクト管理で優れたソフトウェア開発手法を採用しようと非常に懸命に努力しましたが、あまり成功しませんでした。また、製品に関する限り、適切に設計されたコードを信じていますが、CEOの技術的知識の欠如(私のすぐ上にいる)のため、通常、それを行うのに必要な時間は得られません。特定のコーディング言語全体(たとえば、JavaではなくWPF)に関する専門知識が不足しているため、所要時間は大幅に短縮されます。また、同様にバージョン管理システムもありません。 私は物事が構造化されていないため、物事の進行方法に非常にうんざりしており、物事を構造化する方法について働くことよりも、ほとんどの時間を考えています。プロフェッショナルな経験のある皆さんがこの状況を克服するのを手伝ってくれることを願っています。

2
他の人のためにAndroidアプリを開発する
いくつかのアプリを開発し、Androidマーケットに公開しました。現在、別の会社が独自のパブリッシャーアカウントを介してブランド化および販売するアプリを作成しています。他の会社は、AndroidマーケットまたはAndroid開発の経験がありません。同様の状況に直面した他の人からの洞察に感謝します。私は特に次の分野に関心があります。 アプリに署名する 表示される代替手段は次のとおりです。通常のキーで署名します。他社に固有の署名キーペアを作成し、それで署名します。または、他社が開発システムをインストールし、キーペアを生成し、自分で署名するのを支援します。後者の場合、プロジェクトソースを送信する必要があり、独自の問題が発生します。ソースの送信に関する懸念以外に、選択はどのように重要ですか? ライセンス ライセンスのチェックはアカウントに対して行われるため、コードはライセンス応答を復号化するために公開キーを埋め込む必要があります。彼らがその鍵を私たちと共有することを心配すべき理由はありますか?鍵を私たちと共有する他の方法はありますか? 出版 他の会社は、すべてのマーケティングと販売を担当しています。私たちはアプリ開発を担当しています。私たちが言えることから、Androidマーケットはこれらの役割を完全に分離できるように設定されていません。(開発者がパブリッシャーでもあることを前提としています。)これにより、パブリケーションプロセスの責任区分を決定することが難しくなります。最初に考えたのは、.apkファイルを提供し、そこから処理できるようにすることでした。ライセンスの問題は、私たちがこれについて素朴であるという最初の兆候でした。公開プロセス自体はかなり技術的であり、2つの選択肢があります。すべての手順を実行するか、パブリッシャーアカウントへのアクセスを許可して自分で行うように依頼します。他の人は何をしますか?


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