ソフトウェア工学

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

3
MySQLデータベースでリレーショナルデータをバージョン管理するためのパターン?
ユーザーがレコードを編集し、それらのレコードの過去のバージョンを表示できるプロジェクトのアプローチを見つけようとしています。リストを使用した、簡単なスキーマの例を次に示します。 TABLE list ( id int auto_increment primary key, user_id int, title varchar(255) ); TABLE list_tasks ( id int auto_increment primary key, list_id int, title varchar(255), order int, is_complete tinyint ); したがって、ユーザーがリストにアクセスして、リストにいくつかの編集を加え(タスクの追加または削除、タスクの並べ替え、完了のマーク付け、名前の変更など)、保存します。この時点で、リストとタスクの「バージョン2」を生成し、以前のバージョンを表示できるようにしますが、リストにアクセスするときは常に最新バージョンを取得します。 MySQLデータベースでこのようにバージョン管理データを処理するための一般的なアプローチ/設計パターンはありますか?
12 mysql  versioning 


3
WCFデータサービス(OData)対ASP.NET Web API?ハイパーメディア?
RESTサービスとさまざまなクライアント(Silverlight、iOS、Windows Phone 7など)で構成される分散アプリケーションを設計しています。WCF Data Services(OData)を使用してRESTサービスを実装することを決定する準備ができていましたが、MVC 4 Web APIによってその決定に疑問が生じました。 ODataで気に入ったのは、無料で入手できるURIクエリ機能とハイパーメディア機能です。私が嫌いなのは、ODataペイロードの冗長性です。多くの不要なキャラクターがネットワーク上に来ます。 私がWeb APIで気に入っているのは、ペイロードがはるかに簡潔であり、ODataのURIクエリ機能を備えていることですが、ハイパーメディアが欠けているようです(少なくとも、箱から出して)。私の上司もWeb APIを推し進めています。「Microsoftの力がそれを後押ししており、ODataが勢いを増していないからです」。 そこで、2つの質問があります。 1)誰でもWeb APIとODataのバッキング/トラクションについてコメントできますか? 2)Web APIは、リリース時間までにハイパーメディアをネイティブにサポートすることを期待されていますか、または検討すべき市販の実装または例がありますか? ありがとう!

4
ソースコードの引き継ぎ計画の準備[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 当社は巨大な製品のソースコードを取得しようとしています。 ハンドオーバーの開始時に考慮すべきことは何ですか?すべてを確保し、将来的にその製品を維持できるようにするためですか?

9
Greenspunの第10規則、すべての大規模プロジェクトにはLispインタープリターが含まれていますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 Greenspunの10番目のルール(実際には唯一のルール)は次のように述べています: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. 私の記憶は、おそらくBorlandのQuattro(スプレッドシート)プロジェクトとおそらく他のもののために、トピックに関するいくつかの論文があるということです。Googleは役に立たず、適切な検索用語が思い浮かばないかもしれません。この主張を支持する論文または記事を探しています。

8
リスク回避環境で半厳格なリリーススケジュールを提唱するにはどうすればよいですか?
最近、私はますます私はこの職業で私の最もイライラすると士気を殺す経験の一つとして記述する必要がありますどのように悩まされてきた:を有するリリースに座ってテストされている、再テストし、上演、およびすべての意図について目的は出荷/展開する準備ができています。 単なる筋金入りのコーダーではなく、万能のソリューションガイとして、適切な変更管理の必要性を理解し、提唱さえしています。しかし最近、私たちの拠点をカバーすることと時間通りに出荷することとの間の微妙なバランスがすべて崩れ、私はそれを健全なものに戻すことにほとんど成功していませんでした。 私は、リスク回避管理を説得するのに役立つ説得力のある議論を探しています: 開発チームは独自のリリーススケジュールを設定できる(またはする必要があります)-当然のことながら(1〜3か月は、Fortune 500の最大の企業を除くすべての企業にとって保守的なものです)。 ソフトウェアリリースは重要なマイルストーンであり、無頓着に扱うべきではありません。言い換えれば、不必要な遅延/停止は非常に破壊的であり、いくつかの重要なビジネス上の問題に対する最後の手段としてのみ考慮されるべきです。そして 関係者が関与することを望んでいる(または要求している)外部(非開発/非IT)エンティティは、特に計画された出荷前の1週間前など、リリーススケジュールを満たすために開発チームと協力する責任があります日付(つまり、ユーザーのテスト/ステージング)。 上記は経験に基づいて私に当てはまる主張ですが、私は今それを証明しなければならない立場にあるようです-そのようなものが存在する場合、私はここで少し肉の何かを求めています。 固定(または半柔軟な)リリースサイクルのアイデアを経営者に「販売」しなければならなかった人は、どの議論/戦略が効果的で説得力があり、何がそうでないかについていくつかの指針を与えることができますか?明らかなスケジュールの競合と埋没費用は別として、「企業」の設定であっても、出荷が実際に重要であると主張するのに役立つハードデータ/証拠はありますか? 代わりに、スケジュールの柔軟性(週/月の期間であっても)がスケジュールどおりに出荷するよりも重要である理由について建設的な議論を聞くことができます。今私が信じるのは難しいが、彼らは私が知らないことを知っているかもしれない。 リリースを段階的に行っていることに注意してください。これは、実動を除くすべての段階を経て行われました。商用バグトラッカーを使用して問題を追跡し、このリリースに割り当てられたすべての問題(100%の問題)は終了しました。信じがたいことであり、それが本当に正確なポイントです-100%、機能が完全で、十分にテストされ、関係者によって承認されたリリースが、原因不明の理由で経営陣によって遅れることは意味がありませんが、それが起こったのは、それが何が起こっているのか、それが解決すべき問題です。

1
GPLが著作権表示をコピーする
「GPLはどのようにするには、」他のプログラムからコピーしたコードの著作権表示を適用するについて言うには、以下があります。 同じライセンスの対象となる他のプログラムからコードをコピーした場合は、それらの著作権表示もコピーしてください。すべての著作権表示を、各ファイルの上部近くにまとめます。 私はC#ライブラリの完全なリファクタリングを行いました。これはVisual Basic(VB)コードからの移植です。元のVBコードは現在、Microsoft Public License(Ms-PL)の下でリリースされていますが、元はGPLの下にあります。C#ライブラリはGPLであり、古いVBライブラリの作業を継続しています。基本的に、私は彼らが使用したのと同じ「技術」のみを使用しました。 ライブラリをGPLにすることは気にしないので、それは問題ではありません。(この回答から、私が収集したライブラリは二次的著作物と見なされるかもしれません。)しかし、すべてのソースファイルに以前の著作権表示をコピーする必要があるのは面倒です。READMEファイルで参照するだけです。この質問では、すべてのソースファイルに通知を追加する必要性について説明しますが、回答の間にコンセンサスはありません。したがって、安全対策としてすべてのファイルにライセンスを追加したいと思います。 ライブラリが基づいているプロジェクトの著作権表示もすべてのソースファイルに含める必要がありますか?
12 licensing  gpl 

2
EJB 3の代わりにSpring + Hibernateが優先されますか?
私の考えでは、新しいJEEプロジェクトが開始されると(これらの技術が適用される場合)、人々はEJB 3ではなくSpring + Hibernateの組み合わせを使用することを好みます。 若手プログラマーにもアドバイスされているようです、EJBの代わりにそのために行くことているようです。 これは個人的な好みですか、それとも適切な理由がありますか?(たとえば、EJBまたは技術の肥大化に対するパフォーマンスの理由または学習曲線に対する不信を引き起こした以前のEJBバージョンによって作成された個人的な傷跡)?

2
GPLv2プログラムはApacheライセンスのライブラリに依存できますか?
GPL(バージョン2)のライセンスを取得したソフトウェアプログラムは、GPLに違反することなく、APLv2の下でライセンスされたライブラリに依存できますか?ここの言語は、おそらくそうではないことを示唆しています。 私の特定のケースでは、いくつかのAPLv2ライセンスの外部ライブラリを使用するデーモンを見ています。 更新 (回答/コメントへの応答) この質問のために、メインプログラム(デーモン)のライセンスを再取得することはできません メインプログラムはapr-util、おそらく他のAPLv2コンポーネントを使用する機能で拡張されています 私の質問は、GPLv2の下で拡張デーモンをリリースすることはできますか、これは私が(a)この拡張機能をリリースすることにコミットしている場合、APLv2なしで自分自身に維持する必要がありますか(ディストリビューションなし)および/または再実装する必要がありますか?(b)デーモンをGPLのままにしますか?

2
Gitを使用してWebアプリケーションの複数のバージョンを管理する
アプリのファミリーがあり、すべてが同じベースを持っています。これまで私はこのベースを開発してきましたが、Gitのワークフローは非常にシンプルでした。 開発はdevelopブランチで行われます name-of-the-featureブランチで新機能が開発されています リリースはrelease-**ブランチで行われます これまで、コードは家族のすべてのアプリで同じでした。彼らが共有する基盤が完成し、今後コードはアプリごとに異なるとしましょう。 同じベースを持つgitとこの複数のアプリをどのように扱うべきかわかりません。 それぞれに独自のgitプロジェクトが必要ですか? それらは同じプロジェクトにあるべきですが、それぞれが独自のブランチにありますか? 重要なのは、それらを別々のプロジェクトに配置すると、アプリのベースで行われたすべての変更は、アプリごとに繰り返されることになります。私はgitにあまり詳しくありませんが、各プロジェクトをブランチに保存すると、ベースの変更を各アプリにマージできますか? 誰もこのような状況を経験していますか?どうすればいいかわかりません。 ありがとう! 編集済みバージョン を言ったとき、バージョン番号のような意味ではありませんでした。実際には、同じベースを共有する異なるアプリです。
12 git 

11
意味のある演算子のオーバーロードの例[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 C#を学習しているときに、C#は演算子のオーバーロードをサポートしていることがわかりました。私は良い例に問題があります: 意味をなす(例:羊と牛という名前のクラスを追加する) 2つの文字列の連結の例ではありません 基本クラスライブラリの例は大歓迎です。
12 c#  .net  operators 

6
ベンダーソフトウェアを変更するリスクをどのように伝えることができますか?
私が働いているところに大きな問題があり、その名前は「カスタマイズ」です。私たちは、ITと会計部門は、以前にその古い(10年以上)ベンダーのソフトウェアシステム持って愛さカスタマイズすることを。このソフトウェアは非常にバグが多くなり始めました。その後、私はカスタマイズの大部分の後に雇われました。 システムで見つかったほとんどすべての問題は、カスタマイズの直接的な結果です。私たちが変更するすべてのものは、ビジネスに不可欠な金融ソフトウェアを破壊するリスクがあります。しかし、会計部門は(私たちは常にそう!と言ったので)とのために少し尊敬があるように思われる変化を示唆し続けてインパクトのある方法の変更があるかもしれません。 一部の変更は問題を引き起こしません。ベンダーソフトウェアでフォームをカスタマイズすることができます(また、意図されています)。フォームフィールドを移動したり、削除したりできます。しかし、無害なカスタマイズのたびに、ストアドプロシージャやトリガーなどの変更を提案して、ベンダーアプリケーションのデータベース内のデータを操作します。 私は最近(ほとんど)、情報が完全に互換性がないため、あるベンダープログラムから別のベンダープログラムに顧客をインポートしようとするのをやめさせました。それがどのように解決されたかという私の問題は、システムがユーザー側で機能しなかったことがわかったためです。タスクは思ったより複雑だったので、あきらめました。ユーザー側のタスクがどれほど簡単であるかに関係なく、必要な操作は実行されるべきではありませんでした。 特にデータの有効性が危ぶまれている場合、このシステムの動作方法を変更するとリスクがあることをどのように伝えることができますか?私は新規(6か月)の雇用者であり、現状のままですが、財務データとサポート契約の有効性を危険にさらしています-ベンダーのサポートが「Xがカスタマイズされた」と聞いた場合私たちをサポートしたり、それが私たちのせいだと言ってください。


5
データベースのインデックス作成
私はデータベースにあまり精通していませんが、現在、インデックス作成メカニズムを理解しようとしています。 私が知っていることから、RDBMSでは、列にインデックスを付けると、その列による検索が高速になります。これはトリプルストアにも当てはまります。インデックスのみが、主にサブジェクト、次にオブジェクトなどで検索することを想定しています。 RDBMSについてはわかりませんが、トリプルストアでは、複数のインデックスを定義して、各クエリに最適なインデックスをストアに選択させることができます(うまくいけばこの権利を理解できました)。当然、次の質問が表示されます。 可能性のあるすべてのインデックスをトリプルストアに追加し、RDBMSに拡張してはいけないのはなぜですか。各列にインデックスを作成しないのはなぜですか(私は怠zyではないと仮定して)。
12 database 

6
クライアントがプロジェクトに貢献できるようにする最良の方法は何ですか?
クライアント用のCRMを構築しています。最初の主要なフェーズが終了し、2番目のフェーズが合意されたので、クライアントは作業の一部をピックアップし、2番目のフェーズを構築する間にデータベーススキーマとビジネスプロセスを若干修正します。 これが実用的かどうかは定かではありませんが、そうであると仮定すると、これを実行可能にするための対策を講じることができる指針が欲しいのです。ここに私がこれまでに得たものがあります: これまで、クライアントは主にユーザーの視点からプロジェクトを見てきました。明らかに、2部構成のセミナーを開催し、内部の仕組みを紹介します。 最初に、既存のデータベーススキーマを表示し、例としてそれを拡張します。 次に、サンプルコードをいくつか表示し、スキーマ拡張のための新しいビジネスプロセスを記述します。 コードは現在、内部Subversionリポジトリにあります。私たちは彼のネットワーク(VPNに接続できる)にパブリックなものをセットアップできましたが、分散システムの方がうまくいくと思います。しかし、そのように感じるのは私だけだと思われるので、説得力のあるいくつかの議論を使用できます。 本番環境で実行されるコードがコミットされることを義務付け/保証する方法がわかりません。「xは休暇に入る直前に重大な、文書化されていない変更を加えたようだ。今ではyはそれ以来ずっと発生しているこのバグを見つけようとしている」災害は避けられない。理想的には、すべての変更は、展開前に次のことを行います。 問題追跡システムに文書化される、 最初に別のテスト環境で発生し、 自動テストに合格する必要があります。 悲しいかな、私はそれらのいずれかの規律が勝つことを疑います。 1)前者は存在せず、2)後者はクライアントが既存のコードを見て、場合によっては変更することを禁止するため、プラグインアーキテクチャまたは個別のプロジェクトは実行可能なオプションではないと想定します。主張する。

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