ソフトウェア工学

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

5
モバイルアプリのブームに関して、サーバーサイドテクノロジーの世界で何が起こっていますか?
モバイルテクノロジーの人気が高まるにつれて、これらのアプリのほとんどがバックエンドと通信する必要があるときにサーバー側で何が起きているのでしょうか? 私は、10年前にテクノロジーの世界に慣れていました。ほとんどのリソースにアクセスする際、サーバー側の言語を使用してリレーショナルデータベースから必要な情報を取得する動的なWebページを要求していました。 これはまだ当てはまりますか?もしそうでなければ、大きな変化は何ですか?

7
OO言語は、オーバーライドされたメソッドがベースを呼び出すことを保証するメカニズムをサポートしていますか?
これは便利な言語機能である可能性があり、すでにサポートされている言語があるのではないかと考えていました。 あなたが持っている場合のアイデアは次のとおりです。 class C virtual F statement1 statement2 そして class D inherits C override F statement1 statement2 C.F() 上記のコードの最後の行を削除するとコンパイラエラーが発生するようにCF()に適用されるキーワードがあります。「このメソッドはオーバーライドできますが、ここの実装は何でも実行する必要がある」ということです。

7
スクラムでは、バックログを機能的なバックログと技術的なバックログに分割する必要がありますか?
スクラムチームでは、バックログを使用します。バックログには主に機能的なトピックが含まれますが、技術的なトピックも含まれる場合があります。バックログが1つあることの利点は、次のスプリントのトピックを選択しやすくなることですが、いくつか質問があります。 まず、私にとっては、開発者自身が純粋な技術項目を追加できる個別の技術的バックログを持つ方が論理的だと思われます。開発者は常に製品所有者を経由してトピックをバックログに追加する必要がありますが、これは製品所有者にとって追加の不必要な作業のようです。 第二に、純粋な機能アイテム、純粋な技術アイテム(技術文書の欠落、浸食されてリファクタリングされるべきコード、デバッグ中に常に問題を引き起こすクラスなど)安定した基盤であり、リファクタリングする必要があります、...)「顧客に直接サービスを提供しない」ため、常にリストの最後になります。個別の技術バックログを持ち、これらの純粋な技術アイテムのすべてのスプリントで時間を確保することにより、アプリケーションを機能的に改善するだけでなく、内部の健全性を保つことができます。 最善のアプローチは何ですか?1つまたは2つのバックログ?

5
動的言語はアジャイル開発にとって不利ですか?
私が読んだアジャイル開発から、コードをダイアグラムにリファクタリングまたはリバースエンジニアリングすることがよくあります。もちろんそれ以上のものがありますが、これら2つの方法に依存するプラクティスを考慮すると、動的に型付けされた言語は不利になりますか? 静的に型付けされた言語は、リファクタリングとリバースエンジニアリングをはるかに容易にするようです。 動的に型付けされた言語では不可能ではないにしても、リファクタリングまたは(自動化された)リバースエンジニアリングは困難ですか?現実のプロジェクトは、アジャイル手法のための動的に型付けされた言語の使用について何を教えていますか?

1
それでは、「デザインパターンに言語機能が欠けていますか?」[閉まっている]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 ここでプログラマーに、この質問への答えを見ました:動的で弱く型付けされた言語で、設計パターンとOOPプラクティスに関する考え方はどのように変わりますか?そこで、率直なタイトルの記事へのリンクを見つけました:デザインパターンには言語機能がありません。しかし、私にとって非常にキャッチーであると思われるスニペットを見つけた場合、それはおそらく次のようなインセンティブがあるので、経験に対して検証することができます: PaulGraham氏は、「Peter Norvigは、Design Patternsの23パターンのうち16パターンがLispで「見えない、または単純である」ことを発見しました。」 JavaScriptでクラスをシミュレートしようとしている人に最近見たものを確認する別の文: もちろん、ほとんどの言語が「機能」パターン、「クラス」パターン、または他の多くのことを当たり前だと言っていることはありません。ほとんどの言語が組み込み機能として提供しているからです。OTOH、純粋にPrototypeOrientedLanguageのプログラマーですか?プロトタイプを使用してクラスをシミュレートすると便利かもしれません... また、デザインパターンが通信ツールであることも考慮しています。アプリケーションの構築に参加した経験が限られている場合でも、たとえばアンチパターン(非効率的および/または逆効果)として見ることができるため、小規模のPHPチームに中小規模のイントラネットアプリのGoFパターンを学習させる必要があります。規模、範囲、目的が何が効果的および/または生産的であるかを決定できることは承知していますが、それでも技術的な概要を見つけることができませんでした。 OOPと機能が混在し、なおかつ保守可能である小さな商用アプリケーションを見ました。シングルトンを記述するために、たとえばPythonで多くの人が必要かどうかはわかりませんが、私にとっては単純なモジュールでも同じことができます。 設計パターン対回避策対それを行う簡単な方法、または言語機能による置換を考慮した研究、網羅的な記事、または他の形式の説明はありますか?

5
別の言語の概念をエミュレートすることから、どのような問題が生じる可能性がありますか?
あなたの言語が何らかの概念、たとえばオブジェクト指向、または関数呼び出しをサポートしていない場合、ウェブ上で何度も読みましたが、この他のコンテキストでは良い習慣と考えられているので、それを行うべきです。 私が今目にすることができる唯一の問題は、他のプログラマーがあなたのコードを通常とはあまりにも異なって見つけ、彼らがプログラムするのを難しくしているかもしれないということです。これから他にどんな問題が生じると思いますか?

6
スクラム:一度に1つのストーリーに取り組む方法
私は、新しく形成されたスクラムチームのスクラムマスターにノミネートされました。すでにいくつかのスプリントを行っています。最初は、チームが一度に1つのストーリーに取り組むようにしようとしました。しかし、うまくいきませんでした。私のチームは、1つのストーリーで同時に作業できるようにタスクを分散するのが困難でした。たぶん私たちは何か間違ったことをしているのでしょうか? たとえば、新しいダイアログを作成するストーリーがあります。次のタスクを作成します。 モデルクラスを作成する データベースからモデルデータを読み取る モデルクラスをビューに接続する ダイアログ処理を実装する 閉じるときにデータを保存する テスト文書 ソリューションの説明 一度に複数の人がこれらのタスクを実行できますか?タスク-多かれ少なかれ-は互いに構築されます。または、間違った方法でタスクを設計していますか?

7
「時間の終わり」の定数はありますか?
一部のシステムでは、時間値9999-12-31が、コンピューターが計算できる時間の終わりとして「時間の終わり」として使用されます。しかし、それが変化したらどうなるでしょうか?今回は組み込み変数として定義する方が良いと思いませんか? Cおよびその他のプログラミング言語では、通常MAX_INT、整数が持つことのできる最大値を取得するための変数などがあります。MAX_TIME多くのシステムで通常9999-12-31である「時間の終わり」に変数を設定するために、同様の機能がないのはなぜですか。間違った年(9999)にハードコーディングする問題を回避するために、これらのシステムは「時間の終わり」に変数を導入できますか? **実際の例** End of validity date: 31/12/9999.(公式文書はこのようにリストされています)ブロガーは、常に一番上にあるページ、ウェルカムページを書きたいと考えています。したがって、可能な限り将来の日付が与えられます。 3000?はい、あなたが直面しているウェルカムページは3000年1月1日に投稿されています。したがって、このページは永久にブログの上部に保持されます=)実際には2007年8月31日に投稿されています。

2
C ++ライブラリAPIの設計
C ++ライブラリの優れたAPIデザインについて学び、共有オブジェクト/ dllなどを調べるための優れたリソースを探しています。ソースレベルでの優れたAPI、優れたクラス、テンプレートなどの記述に関する多くのリソースがありますが、共有ライブラリと実行可能ファイルに物事をまとめる。John LakosのLarge-Scale C ++ Software Designのような本は興味深いものですが、非常に時代遅れです。 私が探しているのは、テンプレートの取り扱いに関するアドバイスです。APIのテンプレートでは、実行可能ファイル(または他のライブラリ)にライブラリコードが含まれることが多いため、そこでバグを修正すると、新しいライブラリを単純に展開することはできませんが、そのコードのすべてのクライアントを再コンパイルして再配布する必要があります。(そして、はい、少なくともライブラリ内の最も一般的なバージョンをインスタンス化するなどのいくつかのソリューションを知っています。) また、C ++ライブラリでの作業中にバイナリ互換性を維持するために注意すべき他の注意事項や事柄も探しています。 そのようなことに関する良いウェブサイトや本はありますか?

3
1つのトランザクションで2つのDAOメソッドを管理する方法は?
インタビューで誰かが私に尋ねました:単一のトランザクションで2つのトランザクション/ダオ方法をどのように管理しますか。必要な機能: それらのいずれかが失敗した場合、両方の方法をロールバックする必要があります。 両方のメソッドは、単一のトランザクションで個別に接続して呼び出すことができます。 管理は、サービス層ではなくDAO層で行う必要があります。 私は思う:質問は春のトランザクション管理に関連しています。

2
n層Entity Frameworkソリューションによる依存性注入
現在、データアクセス戦略としてEntity Framework 5(.net 4)を使用しているn層ソリューションを設計していますが、依存性注入を組み込んでテスト可能/柔軟にする方法を検討しています。 私の現在のソリューションレイアウトは次のとおりです(私のソリューションはAlcatrazと呼ばれます)。 Alcatraz.WebUI:asp.net webformプロジェクト、フロントエンドユーザーインターフェイスは、プロジェクトAlcatraz.BusinessおよびAlcatraz.Data.Modelsを参照します。 Alcatraz.Business:クラスライブラリプロジェクト。ビジネスロジックを含み、プロジェクトAlcatraz.Data.Access、Alcatraz.Data.Modelsを参照します。 Alcatraz.Data.Access:クラスライブラリプロジェクトは、AlcatrazModel.edmxとAlcatrazEntitiesDbContextを収容し、プロジェクトAlcatraz.Data.Modelsを参照します。 Alcatraz.Data.Models:クラスライブラリプロジェクト。AlcatrazモデルのPOCOを含み、参照はありません。 このソリューションがどのように機能するかについての私のビジョンは、web-uiがビジネスライブラリ内のリポジトリをインスタンス化することです。このリポジトリは(コンストラクタを介して)接続文字列(AlcatrazEntitiesインスタンスではなく)の依存関係を持ちます。web-uiはデータベース接続文字列を知っていますが、それがエンティティフレームワーク接続文字列であることはわかりません。 ビジネスプロジェクトで: public class InmateRepository : IInmateRepository { private string _connectionString; public InmateRepository(string connectionString) { if (connectionString == null) { throw new ArgumentNullException("connectionString"); } EntityConnectionStringBuilder connectionBuilder = new EntityConnectionStringBuilder(); connectionBuilder.Metadata = "res://*/AlcatrazModel.csdl|res://*/AlcatrazModel.ssdl|res://*/AlcatrazModel.msl"; connectionBuilder.Provider = "System.Data.SqlClient"; connectionBuilder.ProviderConnectionString = connectionString; _connectionString = …

1
小規模プロジェクトのGitワークフロー/プラクティス(pngのフローチャート)
私は個人的なワークフローを考え出そうとしています。リリースの架空の寿命のフローチャートを作成しました。ある開発者が公開githubリポジトリにプッシュし、友人が何らかの機能を手伝ってバグを修正しました。 これはバージョン管理の合理的なアプローチですか? 主なアイデアは、パブリックリポジトリを整理することです。 新しいリリースはそれぞれ、終了時にマスターブランチで最終的にタグ付けされるまで、独自のブランチになります。 すべての作業は、異常を防ぐために、実際のリリースブランチではなく、「機能」または「ホットフィックス」ブランチで行われます。 高レベルのブランチへのマージは、常にリベースまたはスカッシュされます(混乱を避けるため)。 やり過ぎだとしても、大事なプロジェクトに必要なスキルを習得することが全体的な目的なので、気にしません。唯一の問題は、私が間違っているか不必要なことを完全にやっていることです。 編集2:元のフローチャートの悪い考えを修正し、ナビゲートしやすくしました。

8
メイクファイルを学ぶことはどれほど重要ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は主に趣味としてc ++で働いています(私はまだ学校にいるので、実際の仕事はありません)。IDEは私のためにメイクファイルを生成するので、それを自分で作る方法を学ぶ価値があるかどうか疑問に思っています。「価値のある学習」とは、C ++を学習し続ける前に、すべてを落とし、それらの書き方を学ぶ必要があるということです。それらを学ぶことは本当に必要になるでしょうか?もしそうなら、それらについて(一般的な構文とそれらがどのように機能するかを理解するなど)学ぶべきか、実際にそれらを書く方法を学ぶべきですか?
12 java  learning  c++  syntax  make 

12
データストレージとしてのXMLの使用[終了]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私はXML形式と次の引用について考えていました。 「XMLはデータベースではありません。データベースになることを意図したものではありませんでした。データベースになることはありません。リレーショナルデータベースは、20年以上の実装経験を持つ実績のあるテクノロジーです。彼らは、固体、安定した、有用な製品です。彼らは去りません。XMLは、異なるデータベース間またはデータベースと他のプログラム間でデータを移動するための非常に便利なテクノロジーです。ただし、それ自体はデータベースではありません。いずれかのようにそれを使用しないでください「 - 。効果的なXML:50の具体的な方法をあなたのXMLを向上させることではElliotte Rusty Harold著(230ページ、パート4、項目41、第二段落) これは、XMLをデータストレージに使用すべきではなく、プログラム間の相互運用性にのみ使用すべきであることを本当に強調しているようです。 個人的にはapp.config、プログラムの設定を保存するために使用される.NETのファイルは、XMLファイルのデータストレージの例です。ただし、構成などではなくデータベースにはXMLを使用しないでください。 ポイントを開発するために、2つの例を使用します 。A)すべてが1レベルのフィールドを持つ顧客に関するデータ。つまり、子を持たない1人の顧客にすべて関連するいくつかのフィールド があります。とプロパティは非常に理にかなっています だから私の質問は、これはまだ有効なステートメントであり、XMLを使用してデータを保存することは現在受け入れられますか? 編集:私は彼の入力/追加のコンテキストを求めるためにその引用の著者にメールを送りました。

4
オブジェクト指向プログラミング:ゲッター/セッターまたは論理名
私は現在、書いているクラスへのインターフェースについて考えています。このクラスには、キャラクターのスタイル、たとえば、キャラクターが太字、斜体、下線などが含まれます。これらのスタイル。私は論理名を好む傾向がありますが、それは効率的でも論理的でもないコードを書くことを意味します。例を挙げましょう。 私はクラスの持っているCharacterStylesメンバ変数があるbold、italic、underline(およびいくつかの他の人を、私はそれをシンプルに保つためにそれらを残しておきます)。最も簡単な方法は、あなたが行うことができるように、書き込みgetter / setterメソッドになり、これらの変数にアクセスするには、プログラムの他の部分を可能にstyles.setBold(true)してstyles.setItalic(false)。 しかし、私はこれが好きではありません。多くの人がゲッター/セッターがカプセル化を破ると言っているだけでなく(それは本当にそんなに悪いのですか?)私は、styles.format("bold", true)これらのすべての方法ではなく、1つの方法などでキャラクターのスタイルを設定することを期待しています。 ただし、1つの問題があります。C ++の文字列の内容ではオブジェクトメンバー変数にアクセスできないため、すべてのスタイルに対して大きなifステートメント/スイッチコンテナーを記述するか、スタイルを連想配列に格納する必要があります(地図)。 最善の方法がわからない。ある瞬間、私はゲッター/セッターを書くべきだと思い、次の瞬間、私は他の方法に傾く。私の質問は:あなたは何をしますか?そして、なぜあなたはそれをするのでしょうか?

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