ソフトウェア工学

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

4
一部のライブラリを多くのプログラミング言語に書き換えるのはなぜですか?
たとえば、Java(100%pure Javaなど)で記述されたLuceneなど、さまざまなプログラミング言語で記述されたバージョンで使用可能なライブラリがありますが、C ++、C、Perlのバージョンもあります、Ruby、Lispおよびその他の言語。そして、私はFFIインターフェースだけでなく、これらの言語での実装について話している。 なぜ人々はそうするのですか?明白な理由の1つを見ることができます。プロジェクトの依存関係が少ないほど、展開と配布(そしておそらく開発も)が容易になります。しかし、他に何かありますか?どのような状況で価値がありますか?

7
盗みにはどのように対処しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私は最近、数か月前に始めたプロジェクトをハッキングしています。簡単なアイデアでした。Githubで共有したコードの成果を収集できるようにします。 そこで私はこの高貴な努力を始めました。コーディングを手伝ってもらうために友人を掻き集めようとしました。私はこれを取得して実行し、構築するために、自由な時間を費やしました。 音楽の時間経過を入力してください 私の友人たちは、彼らができたときにピッチングしました。ご想像のとおり、私はその成功に非常に執着しました。 その後、リリースに向けて準備を進めていたように、ある会社が非常によく似た製品をリリースします。私の小さなプロジェクトが他の誰かによってリリースされたと聞いたとき、私は非常に落胆しましたが、そのアイデアに対する権利を持っていたようではありませんでした。私は自分のプライドを飲み込んで、彼らにメールを送って、 ねえ、私は似たようなことに取り組んできました。我々は話をする必要があります!とてもクールなものです。 私たちは話します、私は彼が本当に協力したくないという感じがしますが、心からお互いのサイトへのアクセスを許可しています。 数日経つと、私の業績の説明の一部が業績サイトに表示されていることがわかります。最初に彼に話しかけた後、私は彼らに私の達成システムの私の計画の概要を説明したわかりやすいメールを送って、それをやめると言っていました。自分の業績の説明がサイトに表示されたら、それを手放すことはできませんでした。私は反撃することにしました。 私はプロジェクトをオープンソース化して、競技場を平準化しただけで、パートタイムでしか取り組んでいなかったので、競争に対処する必要がなくなりました。 これは毎回行うことができるアクションではありません。将来この位置にいる場合、どのような選択肢があるのでしょうか。訴訟?厳しいメール? ヘッドアップとして、私は弁護士なしでこれに対処する方法に関するアドバイスを探しています。または、これは現実の世界で物事が展開する方法ですか?

2
Playの学習に最適なリソース!フレームワーク[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 しばらく前に、Java、特にPlay!を使用する予定のスタートアップに移行する可能性について説明しました。フレームワーク; まあ、私はそれをするつもりです!私は長い間.NETの人であり、Androidをいじり回したりScalaを少しいじり回したりする以外は、実際にはJavaゲームに参加していません。私はプレイを見ました!以前のフレームワークですが、大まかなレベルのみです。Javaを言語として大丈夫だと思います。これは、教材を学習する前に素晴らしいアドバイスを与えられたからです。 私の質問は、プレイのための非常に素晴らしいサイトは別としてです!フレームワーク私は、いくつかのブログを除いて、他に多くを見つけていません。誰もがプレイのための他の良いリソースを知っていますか!本のようなフレームワーク?Amazon検索の結果はゼロでした。 私はそこら中に浮かんでいる電子書籍があることを知っていますが、この時点では少し時代遅れのようです。とにかく、ご意見ありがとうございます。

10
バグを修正するすべての手段を使い果たした場合の対処方法
私は、クロスプラットフォームモバイルアプリケーション(1人のチーム-だから自分自身)に取り組んでいるジュニアプログラマー(これまでの4か月のキャリア経験)です。 このプログラム/アプリにはかなり大きなバグがあります(30種類のヘッダーファイル、それぞれ独自のcppファイルもあります)。私はバグで何が起こっているのかを正確に追跡し、それを修正しようとしています(いくつかのハックを使用してそれを機能させることさえ試みました)が、約12以上のソリューション(問題の原因について考えていること) )バグが何であるかを正確に追跡したり、バグを修正したりすることはできませんでした。 いくつかの幅広いテクニックのジュニアプログラマーにアドバイスはありますか(実行に行く、すべてのコードを紙に印刷し、ペンでそれを実行するなど)、このバグの支援に使用できますか? バグのコンテキストをもう少し説明します。クロスプラットフォームAPI Mosyncを使用します。特定の一連のアクションを実行すると、現在の画面ではなく、以前に表示された画面がまだポインター/キープレスイベントを受信して​​いるという現在の画面は再描画されません。 特定のシーケンス: -メニュー画面の表示-「前の注文ボタンを表示」をクリック -前の注文画面の表示-「ファイルの読み込み」をクリックしてメニューボタンをクリックして配信画面を開く -配信画面の表示-メニューボタンをクリックして 購入画面を表示-購入画面の表示-ここでのエラー、この画面への入力は表示されない/反応しない、リストビューはスクロールしない、ボタンはクリックに反応しない、リストビューのセルはクリックに応答しない 私はボード上のアドバイスを取ります、バグは毎回同じ手順に従って100%再現可能ですが、ポインターイベントがどのように送信されているのか、実際にはAPIの一部ではないためにどの画面に届く(または方法がわからない)。 また、私は私の仕事を別の目で見て、バグを指摘したいと思っていますが、私が1のチームであると言ったように、私の上司は私に指示し、彼は会社を所有し、アプリのアイデアを持っていますが、 c ++や最近の言語も知らない(cobal?全部だと思う)。会社の知的コード/財産を侵害/誇示せずに2番目の目を取得する方法に関するアドバイスはありますか? ...そして、この有給インターンシップを辞めることは選択肢ではありません。契約では、12分の1契約の6分の1の前に退職すると、年収の30%を支払う可能性があります。

8
PHPはオブジェクト指向ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は同僚と興味深い会話をする機会がありました。それらのほとんどは、フラッシュアクションスクリプトまたはJava開発者です。 phpがOOPをうまく処理することについて話しました。PHPは、PHP 5.2または5.3のほとんどすべてのOOPを処理できると述べました。私が間違っている?はい/いいえで答えようとはしていませんが、開発者からもっと意見を聞きたいです。

7
コードレビューは本当にアジャイルで機能しますか?
そのため、名前に3文字が含まれる大企業で働き始めました。彼らはアジャイルになろうとしていますが、プロセスがたくさんありますが、アジャイルだとは感じません。 私が一番苦労しているのはコードレビューです。私の最後の仕事は、私が見た、今まで聞いた、そして/または聞いたことがある中で最もアジャイルな開発チームだと言うスタートアップの仕事でした。 とにかく、私の意見では、コードレビューは、UX / UIが極端/強烈な反復開発またはアジャイル開発では時間の無駄であるということです(Apple / Steve Jobsの完璧さを考えてください)。たぶん、ここの誰かが私を解雇する前に理解するのを助けることができますか? これが私の開発プロセスであり、最後のスタートアップのプロセスです...非常にアジャイルです。 開発作業/仕事を分類するために、初期の機能作業を行います。フィードバックを得るために、いくつかのバージョンをモックアップし、ユーザー、チーム、マーケティングに提示します。次に、上記と同じ利害関係者から1つのラウンドを取得するために、別のモックアップの反復を行います。次に、作業を分割して開始します。達成すべきマイルストーンと日付はありますが、プラグインは続けます。この間、コードレビューはありません。開発の数週間に何度か、利害関係者とのセッションを開催し、機能/機能/ UX / UIがまだ適切で目標に合っているかどうかを確認します。 8週間の反復サイクルの終わりに近づくと、QAがテストを開始し、アルファユーザー、そして最終的にベータユーザーに進みます。しかし、アルファ版およびベータ版の開発者は、UXを改善するために、UIを毎日または1時間ごとに繰り返し変更して、新しい機能と古い機能を検討しています。したがって、このリリースで開発されていた機能は、最後の4週間でさらに3回変更されて、改善および完成されるか、いくつかの小さな機能が追加されます(たとえば、コンポーネントを少しスマートまたはスマートにします)。時々、変更は表面的なものであり、CRUD操作は変更または変更されず、すべてのUIが変更されるだけです。 このタイプの開発プロセス、極端なアジャイルでは、コードレビューは時間の無駄ではないでしょうか?別の開発者または2人がコードをレビューしたが、そのコードがさらに3回変更されると、UI / UXのすべての改善により、最初の3回のレビューに時間を無駄にしないという意味です。そのコード/コンポーネント/ UIが廃棄されたコード このプロセスで品質の問題はあまりありませんでした。開発者がすべての知識を手放した場合、そうです。 はい、テスターは3〜4回再テストする必要があるため、多くのテスターがいます。また、すべてのUI / UXが変更される理由を尋ねるのに夢中にならないでください...それがまさにその方法です...それが、アプリがUI / UXに対して多数の賞を受賞し、ユーザーがアプリ。思考プロセスは、1時間余分に時間をとってから何かを2%改善できるかどうかです。ユーザーはより幸せになり、より多くの$またはユーザーを意味します。はい、私たちのユーザーは、アプリが絶えず変化していることで大丈夫です。なぜなら、それが初日から行われている方法であり、悪いまたはネガティブとは思わないからです。 この投稿が華々しいものにならないことを願っていますが、コードレビューが無駄にならないことはわかりません。おそらく、レビューしたコードのすべてのコードの2%にバグがあります。各リリースでは、コードレビューで3つのバグが見つかる可能性があります。それで、リリースごとに開発者ごとに40時間のコードレビュー(4 x 40 = 160時間)になって3〜5個のバグを見つけることになりますか?とにかく3〜5個のバグがQAによって検出される可能性が50%です。開発者が新しい機能を追加したり、既存の機能を改善したりするのに、開発者ごとに40時間を費やす方が良いと思いませんか?

8
命名規則のガイドラインは注意する価値がありますか?
.Net規則を使用して変数に名前を付けます。 変数とフィールド用のcamelCase(クラスのプライベートフィールドには_camelCaseを使用する傾向があります) メソッド、プロパティ、クラスのPascalCase 私が逸脱する唯一の場所は、実際にJava SCREAMING_CAPSスタイルを好む定数と列挙です。 私の会社のコードベースには、VB6とVBScriptの疑似ハンガリー表記スタイルが散りばめられています。 文字列の場合はsまたはstr Intsの場合はiまたはint dは10進数(または場合によっては2倍) oまたはあらゆる種類のオブジェクトのobj そのコードスタイルが他の人のコードで使用されているのを見たときはいつでも(レガシーフィールドだけでなく、グリーンフィールドコードでも)私はうんざりし、自分でそのスタイルを使用することを拒否します。過去に.Net命名規則を標準化してきましたが、無視されました。ハンガリー語表記で書いている人はそうし続けています。私が好きではない人は自分のスタイルを使い続けています。標準化を行うと(私はそれを押し続けますが、誰も気にしないようです)、それはハンガリーの表記法であり、推奨される方法ではなく、そのようなコードを書くことを余儀なくされることを少し恐れています。 これに関して、モグラ塚から山を作っていますか?コードに説明的な名前ではなく冗長な識別子が散らばっているかどうか気にせず、独自の方法を使い続けて標準になるようにプッシュする必要がありますか?

3
Webサービスを使用するデスクトップベースのクライアントのオフラインフェールオーバーを実行する最良の方法は何ですか?
共通の問題を共有する次の3つのプロジェクトがあります。 Webシステム上にロジックが必要であり、RESTful Webサービスを介してそのようなシステムと通信するローカルアプリケーション(POSなど)が必要です。 私のソリューション 私が思いついたソリューションは、デスクトップアプリケーションにメッセージキューを実装して、サービスがオフラインである間、より正確には非同期メッセージキューを操作を保存することです。しかし、それは簡単な部分です(もしそれが最良の解決策であるなら)。また、データの同期と競合の解決にも関心があります。 利害関係者によるレポートと監視にはWebアプリが必要であり、Webサービスは複数の施設の要求を処理するため、メインシステムはWebベースである必要があります。 デスクトップクライアント(できればシン)はJava(より具体的にはNetbeans)で実装され、WebシステムはSymfony2で実装されます。2つのプロジェクトにはクライアントのハードウェア統合が必要であるため、Webテクノロジー(Appcelerator Titaniumなど)を使用してデスクトップアプリケーションを作成することは大きな苦痛になる可能性があります。 私の質問 最小の労力で最大の効率を意味する、拡張可能な優れたソリューションとは何ですか(ローカル操作用にバックアップサーバーを購入するなどの追加コストは不要)。 他に誰がこれに対処しましたか?どのようにして問題を解決しましたか?どんな教訓を共有できますか? 同期はどのように対処しましたか? 編集:ポイント#3で私の質問に不足している部分を追加しました


2
クラスターでタスクを1回だけ実行するにはどうすればよいですか?
サーバーのクラスターで一度だけ実行したいタスクがある場合、定期的にこれを達成するための最良の方法は何ですか?この場合のクラスターの定義は、ロードバランサーの背後に分散セッションを持つ2つ以上の同一サーバーです。 使用例: X時間に1回のみ実行する必要がある実行コストの高いタスクがあります。このジョブは、たとえば多数のレコードを反復処理し、そのステータスを更新できます。 最悪のシナリオは、ジョブを2回実行するとデータが無効になることです。 最良のシナリオは、ジョブがすべてのサーバー上のリソースを利用することです。 要件の概要: ノードの1つがダウンしている場合でも、ジョブを実行する必要があります。 ジョブは、スケジュールごとに1回のみ実行する必要があります。 複数のジョブが同時にまたは重複してスケジュールされている場合、実行中のジョブの数はサーバー間で均等に分散されます。 マシンは同じコードベースを持ち、NTPを介して同期する必要があります。 環境変数によって、構成はノードごとに異なる場合があります。 ジョブは時間どおりに、または割り当てられた時間の特定の間隔内で開始する必要があります。(たとえば5分と言います) 可能な解決策 1つのノードをマスターノードとして設定します。上記1に違反するため、これは機能しません。 ロードバランサーのバランスを取り、ジョブを開始するよう要求します。残念ながら、これには、同時に複数のジョブを実行している場合、それらがすべて同じマシンで実行されるという副作用があります。 これは、Javaのサーブレットコンテナで実行する必要があります。しかし、それは私が探している仕事をコーディングしていません。 確かにこれは既知の最良の解決策を備えた解決された問題です。 関連する質問。 /programming/5949038/schedule-job-executes-twice-on-cluster 上記の5つの要件に従ってソリューションが不十分であるため、これは重複ではありません。最も投票されたソリューションは人種問題に苦しみ、2番目のソリューションは要件3に違反します

8
LGPLプロジェクトに基づいてプログラムを作成しましたが、ソースコードを公開することはできません
LGPLは、MIT、BSD、Apacheのような寛容なライセンスだと思いました。しかし、今日は、LGPL(ライブラリなど)へのリンクのみがクローズドソースコードから許可されていることを読みました。 LGPLプログラムに基づいた雇用主向けのプログラムを作成しましたが、かなりの修正が加えられています。もちろん、その変更されたソースコードをそこに置くことは許可されていません。同時に、私はそれを配布する必要があります(そうですか?)。 だから私はこれに回避策があるのだろうかと思うので、私はこのクローズドソースを維持することができます(ソースを公開できるといいのですが)-提案はありますか? 私のアイデア:オリジナルのLGPLアプリのほとんどの機能を外部ライブラリに入れて、最初からコア実行可能ファイルを記述できますが、変更していないすべての機能についてはライブラリを参照できますか? 現在、すべてが.jarファイルにあります(Java / Swingです)。あなたが私の考えが法的に/技術的に実行可能であると思うなら-私が書いたものとオリジナルが何であるかを分離するのにどれだけの労力がかかるでしょうか?私はJavaに精通していません。

7
誰でも私にスレッドを理解するのに役立つプロジェクトを書くことを提案できますか?
私は現在、C#の開発者であり、スレッドの理解がかなり不安定です。 これらのリンクは両方とも他の投稿で提案されています: http://www.yoda.arachsys.com/csharp/threads/ http://www.albahari.com/threading/ 基礎に戻って、このテーマに関するコンピューターサイエンスのテキストをいくつか見てください。 私が飛び込んでc#ライブラリを使用すると、構築するための強固な知識の基盤が本当になくなると思います。com sciの学生のように、このテーマをゼロから学び、C#ライブラリを使用する必要があると思います。 スレッドを学習するためのアプローチ、おそらくいくつかのリンクやプロジェクトのアイデアを誰でも提案できますか? 前もって感謝します! 編集、すべての返信に感謝します。一部の人は、本は良いアイデアかもしれないと言っていますが、誰かがそれを提案できますか?私は言語にとらわれない何かを好むでしょう。コンピューターサイエンスの学位でこのクラスがカバーされるクラスを誰もが知っていますか?Googleで無料のオンラインメモと割り当てを探しています。

5
暗黙的な並列処理/同時実行性がそれほど普及していないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 暗黙的な並列処理^は、多くのプログラマーから大きな負担を取り除き、コンピューターに置くことができます。だから...なぜそれが現在それほど普及していないのですか? ^暗黙的な並列処理とは、スレッドなどを使用してこの作業を行う必要のあるプログラマーの代わりに、コンピューターが一度に複数のことを行う方法を把握できるようにすることです。

5
コンポーネントオブジェクトモデルを学ぶのに最適な場所[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 現在のプロジェクトでCOMを学ぶ必要があります。私は初心者であり、COMの良い出発点を見つけることができませんでした。私はMSDNを調べてグーグルで調べています... codeproject.comで興味深い記事を見つけましたが、満足していません。なぜCOMを使用するのですか?なぜ存在するのですか?どの場所に存在しますか?.....などなど..では、これらの質問に対する答えをどこで見つけられるか教えてください。
13 microsoft 

6
正規表現でできること/すべきことは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 私は最近、正規表現を学び、それらを書く/使うのが大好きです。アイデアとそれらを使用する機会を探していますが、人々からよく警告されるように、万能ツールとしてそれらを使いすぎたくありません。 どのような種類の正規表現を使用する必要があり、どこで使用しないのですか?(明らかなことは別として:HTML解析)。

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