ソフトウェア工学

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

4
全社的な開発者向けハンドブックの作成
私は小さな会社で働いています。私が雇われる前の会社のソフトウェア開発部門は、独学で働きすぎた1人の男で構成されていました。数年前から会社のソフトウェアを書いてきたので、正式な会社全体のソフトウェア開発プラクティスの確立を任されました。現在、ガイドラインはありませんが、 コードを記述してテストし、.zipファイルに入れてクライアントに送信します。TDDおよびバージョン管理のボーナスポイント。 私の上司は、私たちが物事を成し遂げるために使用する一般的なプロセス、プロトコル、ツール、およびガイドラインを定義するソフトウェア開発者のハンドブックを書くことを望んでいます。言い換えれば、彼は「これが私たちがここでやること」という本を望んでおり、新しい従業員が私たちのやり方に慣れやすくなり、上司が彼の手下が何をしていてどのようにやっているかを理解しやすくしますそれ。 私が見ているように、私は基礎を築いています、それは正しく行われる必要があります。そのようなハンドブックのトピックをどのように選択しますか?サンプルトピックを提供できますか? サイドノート:重要なのは、主にMicrosoft .NETショップです。また、XPやスクラムなどのアジャイルプラクティスを検討していますが、それらを社内で機能させるために大幅に変更する必要がある場合があります。

5
PythonがJavaより遅いが、PHPより速いのはなぜですか[非公開]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 特定のタスクで多くの言語がどのように機能するかを示すさまざまなベンチマークを見てきました。 これらのベンチマークは、PythonがJavaよりも遅く、PHPよりも速いことを常に明らかにしています。なぜそうなのか疑問に思います。 Java、Python、およびPHPは仮想マシン内で実行されます 3つの言語はすべて、プログラムをOS 上で実行されるカスタムバイトコードに変換するため、ネイティブで実行されるものはありません JavaとPythonは両方とも「コンパイル」できますが(.pycPythonの場合)、Pythonの__main__モジュールはコンパイルされません。 PythonとPHPは動的に型付けされ、Javaは静的に型付けされます-これがJavaの方が高速である理由です。 また、dynamic-vs-static引数が正しい場合でも、PHPがPythonより遅い理由は説明できません-両方とも動的言語であるためです。 いくつかのベンチマークはこちらとこちら、そしてこちらでご覧いただけます

4
新しいバージョンをプッシュする際のデータベーススキーマ変更の処理
重い開発の時代には、データベーススキーマは急速かつ継続的に変化し、ベータビルドへの毎週のプッシュが来るまでに、スキーマは大きく変化したため、唯一可能な賢明なオプションは、可能な限りすべてのテーブルを破棄することですdevデータベースから新しいバージョンをコピーします。明らかに、これは起動後は機能しません。プロダクションデータの削除は災害のレシピであるため、あるバージョン/リビジョンから別のバージョン/データベーススキーマへの変更を管理するための戦略はどこにあるのでしょうか。 私が見つけたまたは経験したもの: あるデータベースから別のデータベースへの直接的な核ダンプ(今私がやっていること) スクリプトまたは手動で実行されるSQLステートメントを含むUPDATE.sqlファイルを維持します。 アクティブなデータベースで対応する「db-schema-version」値を持つupdate.phpファイルを維持する 3番目のオプションは最も賢明な方法のようですが、不完全に構築されたSQLクエリがスクリプトの途中で失敗し、データベースが半分更新された状態のままになり、バックアップの復元が必要になる可能性がまだあります。 それは問題ではないように見えますが、チームとしてphpMyAdminを使用しているため、実際に実行されます。実行されたSQLステートメントをコピーしてupdate.phpファイルに貼り付けることを忘れないでください。別のページに移動したら、SQLステートメントを手動で書き直すか、変更を元に戻して再度実行する必要があります。 私が望んでいるのは、確立された開発ワークフローに影響を与えないソリューションですか?

1
ビューモデルを作成するためのファクトリクラスが必要ですか?
私の同僚は、ファクトリクラスを使用して、ASP.NET MVCソリューションでビューモデルオブジェクトを作成することを提案しました。ビューモデルがアプリで構築される方法の設計と保守性に役立つという考えです。 他の誰かがこの経験を持っているかどうかを知りたかった。私はいくつかの研究を行ったが、この実践についてはほとんど発見しなかった。 現在、コントローラレベルでビューモデルオブジェクトを作成しています。 public ActionResult Index() { return this.View(this.BuildIndexViewModel()); } したがって、this.BuildIndexViewModel()は、viewmodelクラス(明らかに:)の作成を担当します。しかし、次の可能性を検討しています。 public ActionResult Index() { return this.View(ViewModelFactory.CreateIndexViewModel()); } これは面白いアイデアですが、私は100%確信していません。これについて他の人の意見に興味がありました。

2
Bucketの意味?
レガシコードでBucketServiceという名前のクラスを見つけました。 英語は私の母国語ではないので、私はそれを翻訳しようとしていましたが、意味がありません。 バケットの並べ替えなどの用語はほとんど見つかりませんでしたが、まだ取得できません。実際、この言葉はプログラミングで非常に頻繁に使用されます 私はその言葉の簡単な説明に役立つでしょう

3
Java空間でのエンタープライズポータル戦略の代替手段は何ですか?
ポータルスペースでの幻滅 エンタープライズポータルの経験、特にWebSphere Portal Server(WPS)の領域に幻滅するようになった、大規模なエンタープライズクライアントの多くが気がかりです。何百万もの投資が行われていますが、集約および統合された共同作業ツールを使用したパーソナライズされたコンテンツの実現は決して実現していません。WPS 7.xへの移行は、大規模なリッピングと置き換えの動きであり、クライアントは完全に別の場所に移動すべきかどうか疑問に思っています。 ポータルソフトウェア:恐ろしいオプションですが、代替手段は何ですか ポータルには多くの嫌悪感があり、ポータルソリューションは実際には過剰すぎる場合がありますが、大規模な多国籍企業について話している場合、ポータルサーバーなしでグローバルソリューションを構築することをどのように推奨しますか? ポータルは、TomcatやJBoss ASほど楽しいとは限りませんが、複数のアプリケーションの統合、コンテンツの管理、個々のwarファイルとしてデプロイされる個々のアプリケーションの更新、ポートレットレベルまでのセキュリティ管理、特定のユーザーへのパーソナライゼーションの量、および大規模企業が社内および社外のWebサイトの一部として持っている数千のページを管理するという圧倒的なタスクを支援するために、より良い技術がありますか? コミュニティの洞察とフィードバックを集める 私はできるだけ多くの洞察を獲得しようとしています。この問題について、TSSに関する小さな記事を書きました。 ポータルには、他にどのような選択肢がありますか? また、CodeRanchでスレッドを復活させて、そのハンサムな乗組員から洞察を得られるかどうかを確認しています。 ポータルソフトウェアの戦略に代わるものを求める更新されたスレッド。2012年頃 twitterati(@potemcam)からの洞察も探しています。 コミュニティからの鋭い洞察を本当に集めようとする試みであるので、クロスポストではありません。確かな反応と経験を得ることができたら、TSSのアドバイス記事にまとめたいと思います。 Javaスペースでのエンタープライズポータルの正しい代替手段は何ですか? ちなみに、他のサイトからもこの質問にクロスリンクして、同じ質問をしている人が行き来して、このトピックに関してコミュニティが何を言っているかを確認できるようにします。

3
TDDで記述されたアプリの実際の例と良好なテストカバレッジ?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 テスト駆動開発を使用して開発されたオープンソースアプリケーションは、単体テストがどのように機能するかのモデルとして機能しますか? C#と.NETの例をご覧ください。(ライブラリだけでなく、アプリケーションについても言及していることに注意してください。) 私は、TDDを信じて実践したい中間層のプログラマーです。私が日々の仕事で取り組んでいるアプリはかなり複雑です(約100万行のコード)。さらに単体テストを導入したいと思います。いくつかの単体テストが用意されていますが、TDDでの努力と、既にテスト中のコードの作業は励みになりませんでした。 私の認められた限られた経験では、TDDはデカップリングの名前の多くの複雑さを奨励するようです。テストするのが難しく、偶然にもクリティカルになる傾向があるアプリの一部は、周辺にプッシュされ、統合テストの領域に書き込まれます。(私はここでの通常の容疑者、ファイルシステムへのアクセス、データベースからのオブジェクトのハイドレーション、非同期ウェブコールなどを考えています) テスト中のコードには、オブジェクト間の多くのコラボレーションが含まれる傾向があり、おそらくいくつかの単純なフローロジックはすべてメモリ内で発生し、すべてを完全に分離する必要がなければ、おそらくよりシンプルで理解しやすい方法で記述できます検査用の。 私は依存関係などをモックするテクニックを理解していますが、私の経験では、モックを多用すると非常に脆弱なテストになります。一連のテストが赤くなるのを見て最初の本能が「すごい、今はすべてのモックを修正しなければならない」という場合、テストはセーフティネットではなくドラッグになっています。 私はこの精神的な障壁を乗り越えようとしていますが、その一環として、マイケルフェザーズの著書「Working Effectively with Legacy Code」を読んでいます。不足しているものの一部を見せてくれることを願っています。 また、コードカバレッジが良好な自明ではない.NETアプリケーション(コンテンツ管理システム、CRUDアプリなど)を調べたいと思います。ボブおじさんが語るFitNesseテストフレームワークは、おそらく検討するものですが、私が最もよく知っている言語で書かれたものを見るといいでしょう。 提案や知恵の言葉は大歓迎です。
17 unit-testing  tdd 

6
PHPとパフォーマンス
PHPは中規模および小規模のWebサイト用であるのに対し、.NETおよびJavaはエンタープライズアプリケーション用であるといつも聞きます。私の質問はPHPについてです。PHPがエンタープライズWebアプリケーションに適したオプションではないのはなぜですか?Webアプリケーションが大きくなると、インタープリター言語であるPHPが遅くなるからでしょうか? 企業の世界は、製品との統合やバックエンドサービスなどのために.NETまたはJ2EEを選択することを知っています。ただし、サイトやWebアプリケーションを構築するためのPHPがある場合、それを使用してどのように実行できますか大きなサイト? 要するに、PHPのパフォーマンスとWebサイトのサイズの間に関係はありますか?PHPが大規模サイトに適したオプションではない要因は何ですか?

6
コントローラーでSQLを回避するための戦略...またはモデルにいくつのメソッドを含める必要がありますか?
したがって、私がかなり頻繁に遭遇する状況は、私のモデルが次のいずれかを開始する状況です。 たくさんの方法でモンスターに成長する または SQLの一部をそれらに渡すことができるため、数百万の異なるメソッドを必要としないほど柔軟です たとえば、「ウィジェット」モデルがあるとします。いくつかの基本的な方法から始めます。 get($ id) insert($ record) update($ id、$ record) 削除($ id) getList()//ウィジェットのリストを取得 それはすべてうまくできていますが、いくつかのレポートが必要です。 listCreatedBetween($ start_date、$ end_date) listPurchasedBetween($ start_date、$ end_date) listOfPending() そして、レポートは複雑になり始めます。 listPendingCreatedBetween($ start_date、$ end_date) listForCustomer($ customer_id) listPendingCreatedBetweenForCustomer($ customer_id、$ start_date、$ end_date) これがどこで成長しているのかを見ることができます...最終的には、非常に多くの特定のクエリ要件があるため、大量のメソッドを実装するか、単一の-> query(query $ query)メソッド... ...または単に弾丸を噛んで、次のようなことを始めてください: list = MyModel-> query( "start_date> X AND end_date <Y AND pending = …

4
C ++で「using」を使用するか、それを避けますか?
ADLによるわずかに異なるセマンティクスの割引、一般的な使用方法using、およびその理由 状況に依存しますか(たとえば、#includedになるヘッダーとそうでないソースファイル)。 また、私は好むべきです::std::かstd::? 名前空間レベルusing namespace: using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } 完全に明示的であること: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); } 名前空間レベルのusing宣言: using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } 関数ローカルusing宣言: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) …
17 c++  namespace 

2
オープンソースプロジェクトのロゴとグラフィックの取得[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 私は約2年間、オープンソースプロジェクトに取り組んでいます。 Webサイトを作成したいのですが、基本的に予算はゼロです。ロゴも必要です。 私の質問:オープンソース開発者は、多額の費用をかけずにプロジェクトの「視覚的魅力」をどのように改善すべきでしょうか?時間を寄付してくれるグラフィックデザイナーはいますか?どのようにしてそれらを見つけるか(存在する場合)。 プロジェクトでは、多くの時間を費やします。見栄えの良いWebサイトを提供して、人々の目を引くようにします。一方、無料で提供しているものにお金をかけたくありません。 誰かが共有できる個人的な経験はありますか?

7
SQLクエリビルダーを使用する利点は何ですか?
生のSQLを使用するのではなく、クエリビルダを使用する利点はありますか? 例えば $q->select('*') ->from('posts') ->innerJoin('terms', 'post_id') ->where(...) 対: SELECT * FROM posts WHERE ... 多くのフレームワークがこの種の抽象化レイヤーを使用していることがわかりますが、その利点を理解できません。
17 php  sql  frameworks 

9
関数の戻り値の交差タイプをサポートする静的型付け言語はどれですか?
最初のメモ: 私が探していたものを正確に述べるための適切な用語が欠けていたため、この質問は数回の編集の後に閉じられました。その後、Sam Tobin-Hochstadtがコメントを投稿しました。これは、関数の戻り値の交差タイプをサポートするプログラミング言語を正確に認識させるものです。 質問が再び開かれたので、(できれば)より正確な方法で書き直すことで改善することにしました。したがって、以下の回答とコメントは以前の編集を参照しているため、意味をなさない場合があります。(そのような場合は質問の編集履歴をご覧ください。) 関数の戻り値の交差タイプをサポートする、静的で強く型付けされた一般的なプログラミング言語(Haskell、汎用Java、C#、F#など)はありますか?もしそうなら、どれ、そしてどのように? (正直なところ、C#やJavaなどの主流言語で交差タイプを表現する方法を誰かがデモンストレーションするのを見てみたいです。) C#に似た疑似コードを使用して、交差タイプがどのように見えるかの簡単な例を示します。 interface IX { … } interface IY { … } interface IB { … } class A : IX, IY { … } class B : IX, IY, IB { … } T fn() where T : IX, IY { return … ? …

4
メンテナンスに費やされた時間の業界平均
最近、マネージャーがバグの修正に非常に多くの時間を費やしていると発表しました。彼は私たちが常に完璧なコードを書くべきだと思っていると思います(もちろん、まだ不可能な締め切りに間に合います!)そして、新しいコードを書くのにバグ修正に費やす時間の業界平均は何だろうと思いました。 だから、新しいコード開発に対するバグ修正に時間を費やした指標はありますか?または、業界全体のバグ修正時間の実証分析はありますか?50%がバグの修正に費やしすぎていますか?20%または33%はどうですか? 個人的な経験からの逸話的な証拠を受け入れることはうれしいです。それは、ここでパフォーマンスを比較できる統計の一部を形成するからです。
17 metrics 

9
技術的な専門知識なしで開発プロジェクトをリードする方法
私は自分のキャリア全体にわたって実践的な開発者であり、コードを扱うことが大好きです。私は常に、特定の技術に関する専門知識がほとんどまたはまったくないチームリーダーにleadしているが、特定の実装を主張しています。 今、私は見ているガラスの向こう側にいることに気づきました。私はC#で実装されるファットクライアントの主な開発者ですが、私の専門はJava Webアプリケーションの構築です。どの言語でもデザインパターンとオブジェクト指向パラダイムを活用できることは知っていますが、コーディング標準、プロジェクトライフサイクルツール、リリース/配布手順に関しては私は迷っています。1〜2か月以内に基本を習得できることは間違いありませんが、時間とともにしか収集できない特定の経験があります。 どうすればよいですか?開発中に嫌っていたプロジェクトリーダーにならないようにするにはどうすればよいですか?

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