ソフトウェア工学

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

3
ビューモデルでのビジネスオブジェクトの使用
再利用可能なビジネスオブジェクトを使用する場合、ビューモデルを構築する際のベストプラクティスとは何ですか? 呼び出すオブジェクトを使用して、Builderビューモデルを構築します。ビューの各論理ユニット(オーダー、ユーザーなど)ごとに1つのビルダー。ここで、各ユニットにはさまざまなビューモデルを含めることができます(オーダーにはサマリー、オーダーラインなどが含まれます)。 ビルダーは、ビューモデルを構築するために、1つ以上の標準ビジネスオブジェクトを介してデータをプルする場合があります。 ビューモデルでビジネスオブジェクト/モデルを使用する場合のベストプラクティスとは何ですか? アプローチ1 ビューモデルでビジネスオブジェクトの使用を許可しますか? //Business object in some library public class Order { public int OrderNum; public int NumOrderLines; //... } //Order builder in website public class OrderBuilder { public OrderSummary BuildSummaryForOrder(int OrderNum) { Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum); //Any exception handling, additional logic, or whatever OrderSummary obModel = …

13
1/6が1.0 / 6.0と同じ動作をするプログラミング言語はありますか?
数日前にC ++でプログラミングしていたときに、この間違いを犯しました(それを作った歴史があります!)。私のコードの一部では、1/6があり、0.16666666666であると予想していましたが、そうではありません。ご存じのとおり、結果は0-C、C ++、Java、Pythonであり、すべて同じように動作します。 私は自分のFacebookページに投稿しましたが、今では1/6同じような動作をするプログラミング言語があるかどうかについて議論があります1.0/6.0。

6
Java開発者はガベージコレクションアルゴリズムについて知っておくべきですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 最近、ガベージコレクションアルゴリズムについて知っているかどうかインタビューで尋ねられました。 ガベージコレクションとは何であるかは知っていましたが、開発者として心配する必要はなく、ガベージコレクタがすべてのハードワークを行っているため、ガベージコレクションアルゴリズムについて学ぶことを考えたことはありませんでした。 Java開発者はガベージコレクタアルゴリズムについて知っておくべきだと思いますか?「はい」の場合、どちらを調べる必要があるか教えてください。


5
Liskov Substitution Principleは、IntrospectionまたはDuck Typingと互換性がありませんか?
アヒル型言語で通常行われているように、オブジェクトを自分自身で検査できる言語では、リスコフ置換原理を遵守できないことを正しく理解できますか? 例えば、Rubyで、クラスの場合B、クラスから継承Aし、すべてのオブジェクトのためxのA、x.class返すために起こっているAが、場合xの目的はB、x.class返却するつもりはありませんA。 LSPの声明は次のとおりです。 ましょうQ(x)はオブジェクトに関するプロパティ証明可能であるxは型のT。次いで、Q(y)は、オブジェクトのために証明可能であるべきであるY型のS Sは、のサブタイプであるT。 たとえば、Rubyでは、 class T; end class S < T; end プロパティq(x) =で見られるように、この形式のLSPに違反していますx.class.name == 'T' 添加。答えが「はい」(イントロスペクションとLSPの互換性がない)の場合、私の他の質問は次のようになります。性質。 更新。参考のために、ウェブで見つけたLSPの別の定式化を以下に示します。 基本クラスへのポインターまたは参照を使用する関数は、知らないうちに派生クラスのオブジェクトを使用できる必要があります。 そしてもう一つ: SがTの宣言されたサブタイプである場合、タイプSのオブジェクトは、タイプTのオブジェクトとして扱われる場合、タイプTのオブジェクトとして動作するはずです。 最後のものには次の注釈が付いています。 LSPはすべて、オブジェクトの予期される動作に関するものであることに注意してください。オブジェクトの予想される動作が明確である場合にのみ、LSPを追跡できます。 これは元のものよりも弱いようで、観察できるかもしれませんが、それが形式化されること、特に予想される動作を誰が決めるかを説明したいと思います。 LSPはプログラミング言語のクラスのペアのプロパティではなく、クラスのペアと特定のプロパティのセットのプロパティであり、祖先クラスによって満たされていますか?実際には、これは、LSPを尊重するサブクラス(子孫クラス)を構築するために、祖先クラスの考えられるすべての使用法を知っている必要があることを意味しますか?LSPによると、先祖クラスは任意の子孫クラスに置き換えられるはずですよね? 更新。 私はすでに答えを受け入れましたが、質問を説明するためにRubyからもう1つの具体例を追加したいと思います。Rubyでは、クラスはClassクラスの子孫であるという意味で、各クラスはモジュールですModule。しかしながら: class C; end C.is_a?(Module) # => true C.class # => Class Class.superclass # => Module module M; end M.class # => …

10
すべてのSQLステートメントはDBAによってレビューされる必要があります—共通ですか?
つまり、スキーマの変更だけではありません。主キーに対する単純なSELECTでさえ、他の開発者によって(コンテキストで)コードレビューされているにもかかわらず、コードから抽出され、EXPLAIN出力で送信されるすべてのステートメントのDBAレビューがなくても、実稼働に入ることはできません。詳細呼び出される頻度など あなたがそのような環境にいた場合、あなたはそれが純利益であるか、開発の足かせであると思いましたか?リレーショナルデータベースを長年使用してきた人として、「開発者がデータベースを使用することを信頼できない」という態度は不当だと感じており、この状況がどれほど一般的かについては興味があります。価値があるのは、これはWeb開発のためだけであり、重要なことではありません。
11 code-reviews  dba 

8
言語コンストラクトにデザインパターンが追加されないのはなぜですか?
最近、同僚と話していて、彼の会社はMVCデザインパターンをPHP拡張機能として追加しようとしていると言いました。 彼は、Controllers, Models and Viewsパフォーマンスを向上させるために言語構成要素に追加するCコードを書いたと説明しました。 MVCはWebアプリケーションで広く使用されているアーキテクチャ設計パターンであることがわかりましたが、たとえばコントローラー用の言語構造を持つ言語に出くわす必要があります。 デザインパターンを言語に統合するIMHOは、優れたオブジェクト指向デザインの重要性を強調できます。 それでは、なぜ最もよく使用されるデザインパターン(MVC、ファクトリ、ストラテジーなど)が言語構成要素に追加されないのですか? 質問が広すぎると思われる場合は、質問をPHPのみに制限できます。 編集: プロジェクトを開発するときにデザインパターンを使用する必要があることを意味するわけではありません。実際、私はそれが機能する限りシンプルに保つ方法論を推進しています。

2
防衛ソフトウェア再利用システム(DSRS)はどうなりましたか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は、防衛ソフトウェア再利用システム(DSRS)と呼ばれる米国国防総省のソフトウェア再利用イニシアチブに関する90年代前半の論文をいくつか 読んでいます。私が見つけた最新の言及は、2000年のソフトウェア再利用リポジトリの調査の論文にありました。 防衛ソフトウェアリポジトリシステム(DSRS) DSRSは、再利用可能なソフトウェア資産(RSA)[14]を保存および取得するための自動リポジトリです。DSRSソフトウェアは、7つのソフトウェア再利用サポートセンター(SRSC)で再利用可能な資産のインベントリを管理するようになりました。DSRSは、品質の高いRSAの中心的な収集ポイントとして機能し、開発者が既存のソフトウェア製品と要件を一致させる機会を提供することにより、ソフトウェアの再利用を促進します。DSRSアカウントは、政府の従業員と政府プロジェクトを現在サポートしている請負業者の職員が利用できます... ... DoDソフトウェアコミュニティは、ソフトウェアエンジニアリングモデルを現在のソフトウェアサイクルからプロセス駆動型、ドメイン固有、アーキテクチャベース、リポジトリ支援のソフトウェア構築方法に変更しようとしています[15]。この変化する環境では、DSRSはDoD全体で複数の相互運用可能な場所を持つ唯一の既存の展開された運用リポジトリであるため、DoD標準再利用リポジトリになる可能性が最も高くなります。7つのDSRSロケーションは、ほぼ1,000人のユーザーをサポートし、ほぼ9,000の再利用可能なアセットをリストしています。DISA DSRSだけで、3,880個の再利用可能な資産がリストされ、400個のユーザーアカウントがあります... DSRSの長期戦略は、仮想リポジトリをサポートすることです。これらの相互接続されたリポジトリは、ドメイン間およびサービス間で再利用可能なコンポーネントを見つけて共有する機能を提供します。効果的で進化しているDSRSは、DoDソフトウェア再利用イニシアチブを成功させるための中心的な要件です。進化するDoDリポジトリの要件により、実際のリポジトリ操作でのテストをサポートし、DoDユーザーをサポートするために、運用中のDSRSサイトがDISAにあり続けることが要求されます。DSRSの分類プロセスは、顧客サポートを提供するための基本的な技術です[16]。このプロセスは、機能的および技術的な移行戦略を実装するために再利用可能な資産を利用可能にする最初のステップです。 ... [14] DSRS -防衛技術の適応のために、信頼性の高いシステム URL:http://ssed1.ims.disa.mil/srp/dsrspage.html [15] STARS -ソフトウェア技術適応のため、信頼性の高いシステム URL:のhttp: //www.stars.ballston.paramax.com/index.html [16] DE PerryおよびSS Popovitch、「Inquire:述語ベースの使用と再利用」 、Proceedings of the 8th Knowledge-Based Software Engineering Conference、pp。 144-151、1993年9月 。... DSRSは死んでいますか?それについての死後報告はありましたか?ソフトウェアの再利用に関する他の最近の米国政府のイニシアチブまたはレポートはありますか?

9
使用するOOデザイン(デザインパターンはありますか?)
「バー/クラブ」(あなたが飲む/社交する場所)を表す2つのオブジェクトがあります。 あるシナリオでは、バーの名前、住所、距離、スローガンが必要です 別のシナリオでは、バー名、住所、ウェブサイトのURL、ロゴが必要です したがって、同じものを表すが異なるフィールドを持つ2つのオブジェクトがあります。 不変オブジェクトを使用するのが好きなので、すべてのフィールドはconstructorから設定されます。 1つのオプションは、2つのコンストラクターを持ち、他のフィールドをヌルにすることです。 class Bar { private final String name; private final Distance distance; private final Url url; public Bar(String name, Distance distance){ this.name = name; this.distance = distance; this.url = null; } public Bar(String name, Url url){ this.name = name; this.distance = null; this.url = url; …

5
開発者がプロ​​ジェクトマネージャーの上司である場合に機能しますか?
私はプロジェクトの計画段階にあり、プロジェクトマネージャーを募集しています。コーディングを行い、プロジェクトのすべての部分に注目したいと思います。しかし、私はプロジェクトマネージャーがより良い結果を得るだろうと感じています。次のオプションがあります:1)コードではなくプロジェクトを管理する2)プロジェクトマネージャーを雇って自分でコーディングする 私は、プロジェクトマネージャーが開発チームにプロジェクトオーナーを置くことによって妨げられるのではないかと心配しています。プロジェクトを実行すると、チームがバラバラになり、プロジェクトが失敗する可能性があります。予算内に収まるためには、何らかの能力に関与する必要があります。 誰でもこの状況を経験したことがありますか? 詳細:それぞれが特定の領域を担当する4人の社内開発者。開発者は、プロジェクトマネージャーの同意がある場合、作業を外部委託することもできます。

8
高解像度のラップトップディスプレイはプログラマにとって重要ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 5年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は主にプログラミングに使用する新しいラップトップを購入しています。私を本当に興味をそそるいくつかのオプションは、Asus Zenbook UX31Aと新しいRetina Macbook Proです。これらのラップトップの高解像度ディスプレイが、エンターテイメント、写真編集などに役立つことは明らかです。私の質問は次のとおりです。これらのディスプレイはプログラマーに利益をもたらしますか?これらの表示はコードを読みやすくしますか?1日中画面を見つめた後、目が楽になりましたか?

5
なぜサービス指向の言語がないのですか?
編集: さらなる混乱を避けるために:私はウェブサービスなどについて話していません。内部でアプリケーションを構造化することについて話しているのですが、それはコンピューターの通信方法についてではありません。プログラミング言語、コンパイラー、および命令型プログラミングパラダイムの拡張方法についてです。 元の: 命令型プログラミングの分野では、過去20年(またはそれ以上)に2つのパラダイムがありました。オブジェクト指向(OO)とサービス指向(SO)です。コンポーネントベース(CB)。 両方のパラダイムは、モジュールの独自の概念を導入することにより、命令型プログラミングパラダイムを拡張します。OOはそれらをオブジェクト(およびクラス)と呼び、データ(フィールド)とプロシージャ(メソッド)の両方を一緒にカプセル化します。SOは対照的に、データ(レコード、Beanなど)をコード(コンポーネント、サービス)から分離します。 ただし、Smalltalk、C ++、Javaおよびその他すべてのJVM互換、C#およびその他すべての.NET互換、Pythonなど、そのパラダイムをネイティブにサポートするプログラミング言語を持っているのはOOのみです。 SOにはそのような母国語はありません。COM / DCOM(バイナリ、C、C ++)、CORBA、EJB、Spring、Guice(すべてJava)などの手続き型言語またはオブジェクト指向言語の上にのみ存在します。 これらのSOフレームワークは、その概念のネイティブ言語サポートが欠落していることは明らかです。 OOクラスを使用して、サービスとレコードを表し始めます。これにより、メソッドのみ(サービス)を持つクラスとフィールドのみ(レコード)を持つクラスが明確に区別される設計になります。サービスまたはレコード間の継承は、クラスの継承によってシミュレートされます。技術的には、厳密に保持されていませんが、一般的に、プログラマーは2つの役割のうちの1つだけを行うようにクラスを作成することをお勧めします。 追加の外部言語を使用して、欠落している部分を表現します。IDL、XML構成、Javaコードの注釈、またはGuiceのような埋め込みDSLです。サービスの構成はサービスコード自体の一部ではないため、これは特に必要ですが、これに限定されません。OOでは、オブジェクトは他のオブジェクトを作成するため、そのような機能は必要ありませんが、SOでは他のサービスをインスタンス化または構成しないためです。 それらは、プログラマーがSOを「駆動」するために必要なすべてのコードを書かなければならないOO(初期のEJB、CORBA)の上に内部プラットフォーム効果を確立します。クラスはサービスの性質の一部にすぎず、多くのクラスを作成して一緒にサービスを形成する必要があります。プログラマーのためにそれを行うSOコンパイラーがないため、そのすべてのボイラープレートが必要です。これは、一部の人々がC ++が存在しないときにOO for Cでそれを行ったのと同じです。オブジェクトのデータを保持するレコードを、メソッドであるプロシージャの最初のパラメーターとして渡すだけです。OO言語では、このパラメーターは暗黙的であり、コンパイラーは仮想関数などに必要なすべてのコードを生成します。SOの場合、これは明らかに欠落しています。 特に、新しいフレームワークでは、AOPまたはイントロスペクションを使用して、欠落している部分をオブジェクト指向言語に追加しています。これは、必要な言語表現力をもたらしませんが、前のポイントで説明したボイラープラットフォームコードを避けます。 一部のフレームワークは、コード生成を使用してボイラープレートコードを生成します。XMLの構成ファイルまたはOOコードの注釈は、このための情報源です。 上記のすべての現象がSOに起因するとは限りませんが、SO言語が必要であることを明確に示すことを望みます。このパラダイムは非常に人気があるため、なぜ存在しないのですか?または、学術的なものもあるかもしれませんが、少なくとも業界では使用していません。

3
データベースをオンラインにするにはどうしますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 ウェブ開発に関して非常に初心者の質問があります。 私は、在庫と販売を追跡するための簡単なシステムを作成するために、JSP、Hibernate、およびMAMPでいくつかの経験をしました。しかし、これはすべて1台のコンピューターでローカルに行われました。 今回は、オンラインでアクセスできるシステムを作成したいと思います。母がどこへ行ってもビジネスを追跡できるようにするためです。そのため、在庫と販売の追跡など、同様の側面があります。すべてのファイルをホストするサーバーが必要であることは理解しています。しかし、データベースにオンラインでアクセスする方法がわかりません。または、どのような種類のアプリケーションまたは製品を使用する必要があります。 現在、データベースのホストはlocalhostです。CRUD操作を実行できるように、どのようにオンラインに設定しますか?これを行うためのガイドはありますか?

3
チームに参加するプログラマーの見積もりを処理する方法は?
反復はすでに開始されており、新しいプログラマーがチームに参加しています。タスクXは別の開発者によって既に30時間と見積もられています。 この状況でのベストプラクティスは何ですか? 新しい開発者は指定された推定値で実行します(速度の計算時に矛盾が修正されるという考えですか?) 新しい開発者はタスクを再評価しますか?(もしそうなら、それが著しく高く、反復にもはや適合しない場合はどうなりますか?) 手を上げて滝に戻る? 完全に何か他のもの?
11 agile  estimation 

6
ブラウザがhamlとsassをサポートしないのはなぜですか?
ウェブサイトのダウンロードに必要な時間は大幅に短縮され、解析も容易になると思います。 これらの言語が標準として課されていないのはなぜですか?明らかに、それらは生のhtmlやCSSよりも優れています... 中間のHTML / CSSコードを排除することから私たちを遠ざけているのは、ブラウザだけです。
11 html  css 

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