ソフトウェア工学

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

2
イベントバブリングは一般にどのように機能しますか?また、イベントの伝播と同義語ですか?
私は、イベント駆動型(サブ)システムでのイベントディスパッチの一般的な仕組みと原則に頭を包み込もうとしています。 たとえば、Javascript、Flash(Actionscript 2および3)で何度も使用し、一度にPHPで簡単なイベントディスパッチシステムを作成したこともありますが、イベントバブリングやその伝播。 最初の質問: イベントバブリングはイベント伝播の同義語ですか? 2番目の質問: イベントが「バブル」するとき、これはイベントがオブジェクトの階層を「移動」することを意味すると理解して正しいですか? 3番目の最も重要な質問: 質問2の私の理解が正しい場合。これは、一般的に実装されるオブジェクトの階層をどのように「上に」移動するのですか? 一般に、親オブジェクトは同じイベントをその親に「再送信」することを意味しますか(ルートオブジェクトに到達するまで)。そしてそうならば; 階層内のこれらすべてのオブジェクトは、これらのイベントの子をリッスンする必要がありますか、または親オブジェクトが子オブジェクトイベントのリスナーとして自分自身を登録する必要がないイベントバブリングについての理解に重要な原則がありませんか? いくつかの簡単な擬似コードを使用してこれらの基本原理を説明できるとしたら、ありがたいです。

2
オープンスタンダードを公開する方法と場所
私は、開発中のプロトコルのオープンスタンダードを書いています。懸念事項を書く限り、私はそれを管理しています。しかし、主な質問は、そのようなドキュメントをどこで公開できるかです。インターネットで検索してみましたが、TXTまたはPDFファイルをアップロードできるサイトが見つかりませんでした。私は秘密を守るつもりはありません。これを読んで、できればプロトコルを改善してもらいたいです。
11 standards 

3
CC BY-NC-SAなどの商用利用を制限するソフトウェアライセンス
Creative Commons Attribution-Non Commercial-Share Alikeライセンスのようなライセンスでソフトウェアを配布したい ソースコードとバイナリの再配布は自由です。 プログラムの修正バージョンは、同じライセンスの下で配布する必要があります。元のプロジェクトへの帰属を提供する必要があります。 あらゆる種類の商用利用を制限します。 ただし、CCはソフトウェアにライセンスを使用することを推奨していません。適用できるこの種のソフトウェアライセンスはありますか?パブリックライセンスの方が良いのですが、私が知る限り、EULAだけが受け取ったコピーの使用を制限できると米国の法律が言っていますか?

3
循環的な複雑さを理解する
最近、Cyclomatic Complexityに出くわしました。それをよりよく理解したいと思います。 複雑さの計算に使用されるさまざまな要因の実用的なコーディング例は何ですか?具体的には、Wikipediaの方程式についてM = E − N + 2P、次の各用語の意味をよりよく理解したいと思います。 E =グラフのエッジの数 N =グラフのノードの数 P =接続されたコンポーネントの数 EまたはNのいずれかが、コードブロック内の決定ポイント(if、else、for、foreachなど)の数であると思われますが、どちらがどちらを意味するのかはよくわかりません。また、Pは関数呼び出しとクラスのインスタンス化を指すと推測していますが、私が見ることができる明確な定義はありません。誰かがそれぞれの明確なコード例でもう少し光を当てることができれば、それは助けになるでしょう。 フォローアップとして、Cyclomatic Complexityは、100%パスカバレッジに必要な単体テストの数と直接相関していますか?例として、複雑度4のメソッドは、そのメソッドをカバーするために4つのユニットテストが必要であることを示していますか? 最後に、正規表現は循環的複雑度に影響しますか?

4
「make」だけでなく「make clean」を使用する場合の一般的なルールはありますか?
私は今、複数ファイルのプログラムを書いていますが、何らかの理由で「make」だけを実行しているようです(ほとんどの状況で直感的に実行する必要があると思うように)。問題の詳細を提供できると思いますが、重要なことは、「make clean」を使用したときに実行されることです。だから、誰かが「メイク」ではなく「メイククリーン」を実行するための一般的な経験則を知っているのだろうかと思っていました
11 c++  builds  make 

2
米国/英国出身でない場合に有料のAndroidアプリを公開する方法
アプリの1つを作成している間、私はかなり興奮していましたが、米国または英国に住んでいない場合、実際にはGoogle Checkoutにサインアップできないことがわかりました。そして、Google CheckoutがAndroidマーケットがあなたに支払う唯一の方法なので、私の努力はすべて無駄になっているようです。私はインドに住んでいるので、アプリを販売することはできません。 これについてさまざまな方法でGoogleに連絡しようとしましたが、今のところ何の反応もありません。他の方法では支払いができないことを知るためだけに、ウェブも検索してみました。 ここにいる多くの人々が同じ問題を経験したのではないかと確信しています。どのように解決しましたか? PayPalアカウントとAdSenseアカウントも持っています。彼らは何らかの形で助けることができますか? 何も解決しない場合、どのようにアプリを販売することになっていますか?

6
ユーザーストーリーを使用して複雑なビジネスルールを定義する方法
ユーザーストーリーの迅速で汚い定義: "As a <role>, I want <goal/desire> so that <benefit>" この一般に受け入れられている定義では、ビジネスルール、制約、またはユーザー入力を定義するためのスペースがほとんどありません。 説明のための簡単な例: "As a <librarian>, I want to <register new books> so that <students can find their availability online>" このばかげた例では、本を登録するときに必要なフィールドをどこで定義しますか?どこにでも書かれるべきですか?または、必要なビジネスルールをプロダクトオーナーから口コミとして渡す必要がありますか?

4
Javaの代わりにscalaが良い選択でしょうか?
Java(frameworks / ECOシステムなど)のすべての.net開発者をトレーニングする新しいプロジェクトを開始します。C#で記述された多くのコードがあり、すべてJavaで書き直す必要があるため、これらはすべて無駄になるようです。私が見る問題は、最初の1年かそこら(おそらく2年)は以前のものが今はJavaであったものを再現するためにほとんどの時間を費やすため、何も提供できないことです。 私たちのチームは世界中のさまざまなオフィスに分散しており、多数のJava開発者(20から30)と10人の開発者が.netを使用しているため、すべての開発者が同じ言語/プラットフォームを使用して、コンポーネント/モジュールを再利用します。だから私は経営者の視点を理解できます。 昨日、Scalaに出会い、現在の製品(C#で記述されている)でこれを使用する方が良いかどうか疑問に思っていました。少なくとも1年で機能する製品ができます。また、製品の他の部分を移行しながら、1年でJavaの世界で使用できるモジュールがあります。 私たちが達成しようとしていることを考えると、ScalaはJavaよりも良い選択でしょうか?
11 java  c#  scala 

4
チームリーダーの作業をリモートで行うことはできますか
私は現在、ソフトウェア開発者です。私のキャリアの次のマイルストーンとして、成果物や展開などを満たすために、小さな開発チームを率いるチームリーダーとしての地位を確立する必要があると考えています。家で働く。しかし、この側面が非常に議論/議論されたかどうかはわかりません。私はそれ自体がチームをリードする役割に踏み込んでいませんが、タイトルに伴う責任と、在宅勤務中に管理できるかどうか(およびその方法)を知りたいと思います。

3
単体テスト作成の自動化
ユニットテストケースの作成を自動化するために使用できるいくつかの戦略は何ですか?少なくともまともなテストケーススケルトンを生成できるようにするには、各クラスでどの側面を検討する必要がありますか? 包括的な自動ソリューションは実用的ではないことがわかりますが、少なくともスケルトンを作成することで、テストの作成を少しスピードアップしたいと思います。私はコード例を探しているのではなく、おそらくどこから始めたらいいか、このようなことをした例がいくつかあるので、彼らがどのようにアプローチし、何が可能かを見ることができます。 特に、PHPで単体テストスケルトンを作成する方法に興味があります。これは、たとえば完全なタイプヒンティングなど、他の言語が提供するすべてのツールを提供するものではありません。
11 php  unit-testing 

4
TDDの「明白な実装」は最初にコードを意味し、その後にテストを意味しますか?
私と私の友人は比較的新しいTDDで、「Obvious Implementation」テクニック(Kent Beckによる「TDD By Example」より)について論争しています。私の友人は、実装が明らかな場合、その新しい動作をテストする前に、先に進んでそれを書くべきだと言っています。そして実際、この本はこう言っています: 簡単な操作をどのように実装しますか?それらを実装するだけです。 また: 操作を実装する方法を知っていることが確実な場合もあります。どうぞ。 著者が意味するのは、最初にテストしてから「実装する」ことです。「フェイクイット( 'Till You Make It)」や実装段階でより小さなステップを必要とする他のテクニックとは対照的です。また、これらの引用の後、著者は「Obvious Implementation」を行うときに「赤いバー」(テストに失敗)を取得することについて話します。テストなしで赤いバーを取得するにはどうすればよいですか。 しかし、「自明」とはまだ最初のテストを意味するという本の引用を見つけることができませんでした。 どう思いますか?実装が「自明」な場合(TDDによると)、最初にテストするか、その後にテストする必要がありますか?それを言っている本やブログの投稿を知っていますか?
11 tdd 

8
GPLライセンスのソフトウェアは再販できますか?
私の研究グループは、研究目的のソフトウェアを開発しています。プロジェクトリーダーは、ソフトウェアがオープンソースであることを望み、GPLが好きですが、ソフトウェアを販売できないことを保証したいと考えています。 GPLを正しく読んでいますか?ソフトウェアは自由に修正、(再)配布、販売できますか?そうだとすれば、なぜソフトウェアを効果的に販売することが難しいのかがわかります。ただし、GPLは私たちのニーズに十分厳密ではありません。 助言がありますか?
11 licensing  gpl 

9
ライブWebサイトの展開バグの数を減らすために何ができますか?
多くの皆さんがこの問題を経験していると確信しています。WebサイトまたはWebアプリケーションが実行中であり、ライブです。次のバージョンをアップロードしたいが、設定ファイルで値をfalseに設定したり、データベースに別のレコードを挿入したり、20個以上のパラメーターにカウントされることがある多くのマイナーな処理を行うなど、すべてを理解していません。 新しいバージョンをアップロードするとすぐに、すべてが壊れます。現在、問題の修正には最大20分しかかかりませんが、許容できる全体的なストレス、および会社への財政的および信用上の損害は忘れられない場合があります。 新しいバージョンの展開の初期構成から生じるこれらのタイプのバグを減らす方法は何ですか? PS:チェックリストについては言及しないでください。すでにリストがあります。チェックリストの問題は、常に更新されるべきですが、更新されないということです。

6
皮肉を検出するスクリプトを教える方法は?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 私は現在、基本的に指定されたフレーズと一致し、一致ポイントに基づいて事前定義された応答を提供する楽しいスクリプトを作成しています。ライブフィードに基づいて情報を取得したり、タスクを実行したり、逸話を伝えたり、彼女とチャットしたりできます。 既にbadwords、caps lock、またはその両方の検出機能が組み込まれています。プログラムには女の子の名前があり、私はロジック用語でできるだけ女の子らしい女の子になるようにしようとしました(たとえば、ほとんどの女の子が質問に答えるために700ミリ秒かかることは誰もが知っています、もちろん冗談です)。以下に小さな例を示します。 クライアント:あなたの問題は何ですか? キク:私と一緒に使ってはいけません! クライアント:####あなた Kiku:どうしてあなたは私にそんなに意地悪なのですか:/ しかし、私は本当に皮肉の機能を追加したいと思います。皮肉に何かを書くと、彼女はそれを検出し、それに応じて対応します。さて、これはトリッキーな部分です。スクリプトをどのように教えますか、皮肉は何ですか? より具体的に私に。今日使用されている最も一般的な皮肉な言葉は何ですか?または、その統計を取得する方法は?特定のフレーズのコンテキストをスクリプトに理解させるにはどうすればよいですか? 更新 この質問は多くの誇大広告になっているので、私は物事がもう少しクリアされるべきだと思います。スクリプトが皮肉を完全に検出することは基本的に不可能であることは非常に明白です。少なくとも合理的な問題では。ただし、ある程度の皮肉が検出される可能性があると思います。 現在のところ、スクリプトで非常に限定的な皮肉を検出できるようになっています。いくつかの一般的な皮肉な言葉を事前に定義しました(しかし、それだけでは役に立ちません)。そして、大文字と引用符で囲まれた:THANKS you are so smartやのような単純なものに最初に一致しますoh you are so "SMART"。 スクリプトの主な機能はタスクを実行するか、情報を取得することであり、あとがきはそれが意図したものかどうかを尋ねます。それから私は、「感謝」を特別な変数として追加することを考えました。だから、yeah thanksまたはwhatever thanks可能な皮肉をトリガすると、スクリプトがあなたに尋ねます:「?私は皮肉を検出ください」あなたの最善の策は、「申し訳ありません」と言うことです。そうしないと、警告ポイントが追加され、制限に達すると、無視され始めます。 これらの非常に単純なアルゴリズムは実際に機能するように見えるため、このアイデアには、もちろん多くのチューニングと微調整の後、未来があります。ただし、同じアイデアを念頭に置いてオープンソースソフトウェアを作成する方が賢い人がいるかもしれません。次に、この機能をWeb上の多くの機能にフックできます。カスタマーケアはおそらく最も恩恵を受けるでしょうが、この種のソフトウェアは「フラグ可能」コンテンツの検出にも使用できます。

5
新しい機能に焦点を当てたプロジェクトで壊れていない既存のコードをリファクタリングする必要がありますか?
アプリケーションに新しい機能を追加することを目的とする小さなプロジェクトを考えると、導入された変更は、特定の領域でこれらを更新することを含む既存のコードに影響を与えます。実装中に、更新されたこれらのコードの一部にリファクタリングの候補があることがわかりました。 これは、影響を受けるコンポーネントのリグレッションテストを必要とするリファクタリングの適切な時間ですか(したがって、元々プロジェクトの一部ではないスコープを導入している可能性があります)?または、機能を延期し、機能を完成させ、おそらくリファクタリングのための別個のプロジェクトを用意する必要があります(ただし、ビジネスユーザーは、コードの保守性を重視しない限り、機能を追加しないプロジェクトを完全に後援できないため、少しためらっています...)?

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