ソフトウェア工学

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

9
Web開発とデスクトップ開発-Web開発はさらに悪いですか?[閉まっている]
最初の大規模なWebアプリケーションの実行を検討している長年のデスクトップ開発者として、Web開発を行うことの長所と短所は何ですか? Webアプリケーションの開発は、デスクトップアプリの開発よりもはるかに悪いですか?たとえば、それはより退屈なのですか、それとも迷惑ですか?市場投入までの時間はずっと悪いですか?Webプラットフォームは過度に制限されていますか?これらのいずれかの答えがイエスである場合、なぜですか? (そして、FlashまたはSilverlightアプリの開発はどのように比較されますか?)


3
コードのオープンソースライセンスは後で制限されますか?
便利なライブラリを開発し、それをオープンソースとして公開することにしたとします。しばらくして、オープンソースライセンスに準拠しない何かをする必要があります。許可してもらえますか? 所有権を保持し、将来ライブラリを使用することを妨げない方法で、ソフトウェアをどのように公開する必要がありますか? 少なくとも理論的には、他の開発者が私のオープンソースプロジェクトに貢献することを決定する可能性があることに留意してください。元の開発者が自分の貢献の所有権を取得することをライセンスで指定できますか?ここで誤解しないでください、私は悪で他の仕事の所有権を取得しようとはしていません-私の所有権を保持したいだけで、誰かが重要なバグ修正を投稿した場合、元のコードを使用できないようにすることができます私も彼の作品を使用しています。

28
ツールへの過度の依存は、あなたが怠zyであることを意味しますか?[閉まっている]
私はuniでC ++のプログラミングを始めましたが、とても気に入りました。次の用語でVB6に変更し、私はそれを嫌っていました。 何が起こっているのかわかりませんでした。ボタンをフォームにドラッグすると、IDEがコードを作成します。 VBが機能する方法が嫌いだったが、C ++で同じことを行うよりも速くて簡単だったとは言えないので、なぜそれが人気のある言語であるかを見ることができます。 今、私はVB開発者をC ++より簡単だと言って怠け者とは呼んでおらず、多くの新しい言語がこのようなC#のような傾向に従っていることに気付きました。 これは、より多くのビジネスが迅速な結果を望んでいるので、より多くの人々がこのようにプログラムし、遅かれ早かれ、私たちが現在プログラミングと呼ぶようなものはないだろうと思うようになります。将来のプログラマーはコンピューターに自分が望むものを伝え、コンパイラーはスタートレックのように彼らのためにプログラムを書くでしょう。 これは、ジュニアプログラマーの十分な情報に基づいていない意見ですか、それともプログラマーは一般的に怠lazで能力が低下していますか? 編集:多くの答えは、なぜ車輪を再発明するのかを言い、私はこれに同意しますが、利用可能な車輪があるとき、人々は車輪の作り方を学ぶことを気にしません。どの言語でもほとんど何でもできる方法をグーグルで検索できますが、デバッグに関しては半分の言語があなたのために多くのことをしますが、エラーを修正する方法のコードが何であるかわかりません。 それは、プログラマーが怠慢になり、能力が低下するという理論を理解する方法です。

8
リファクタリング時にユニットテストをどのように機能させ続けるのですか?
別の質問で、TDDの問題の1つは、リファクタリング中およびリファクタリング後にテストスイートをコードベースと同期させることであることが明らかになりました。 今、私はリファクタリングの大ファンです。TDDをやめるつもりはありません。しかし、マイナーなリファクタリングが多くのテストの失敗につながるような方法で書かれたテストの問題も経験しました。 リファクタリング時にテストが中断しないようにするにはどうすればよいですか? テストを「より良い」と書いていますか?もしそうなら、あなたは何を探すべきですか? 特定の種類のリファクタリングを避けていますか? テストリファクタリングツールはありますか? 編集:質問の意味を尋ねる新しい質問を書きました(ただし、これは興味深いバリエーションとして残しました)。

30
プログラミング言語で直面した最大の設計上の欠陥は何ですか?[閉まっている]
すべてのプログラミング言語に設計上の欠陥があるのは、他のほとんどの(すべて?)それはさておき、プログラミング言語のどの設計上の欠陥がプログラマとしてのあなたの歴史を通してあなたを最も悩ませましたか? 特定の目的のために設計されていないという理由だけで言語が「悪い」場合は、設計上の欠陥ではなく、設計の機能なので、そのような煩わしさを挙げないでください。言語がその設計目的に適していない場合、それはもちろん設計の欠陥です。実装固有のことや内部的なことも考慮されません。

19
プログラマはどんな帽子をかぶるべきですか?[閉まっている]
私の経験では、ソフトウェア開発者は複数の帽子をかぶって、複数の役割を異なる責任で満たす傾向があります。コーディングだけでなく、SQLの作成、ユーザーインターフェイスの設計、データベースの設計、グラフィックス操作、QAテストまでも行います。 主な役割がソフトウェア/コードの作成である場合、開発者はどのような役割を引き受けるべきではありませんか? いずれかがあります? この質問の意図は、開発者が別の役割を果たせないためではありませんが、追加の役割を持つことは実際には主な役割に対して機能するか、実際には主にプログラムしない人の専用の役割でなければなりません。
29 team  roles 

2
なぜフラグ/列挙型を整数ではなく文字列としてデータベースに保存するのですか?
Drupal 7、Wordpress(非常に古いバージョン)、Pythonベースのカスタムアプリケーションなど、いくつかの有名なCMSのSQLダンプを参照しています。 これらのすべてのダンプには、整数の代わりに文字列フラグを持つデータが含まれていました。例えば、ポストの状態は次のように表現されたpublished、closedまたはinheritよりむしろ1、2または3。 データベースの設計の経験はかなり限られており、単純なSQLを使用したことは一度もありませんが、このようなデータには数値/整数フラグを使用する必要があることを常に教えられました。tinyintたとえば、データベース内で消費するスペースがの場合よりもはるかに少ないことは明らかですvarchar(9)。 だから私は何が欠けていますか?これはデータストレージとデータの冗長性の浪費ではありませんか?これらの列が文字列ではなく整数を使用している場合、ブラウジング、検索、およびインデックス作成が少し速くなりませんか?

3
アプリケーションまたはドメインサービスのDDDリポジトリ
私は最近DDDを勉強していますが、DDDでリポジトリを管理する方法について質問があります。 実際、私は2つの可能性に出会いました: 最初の1つ 私が読んだサービスを管理する最初の方法は、アプリケーションサービスにリポジトリとドメインモデルを挿入することです。 このように、アプリケーションサービスメソッドの1つで、ドメインサービスメソッドを呼び出し(ビジネスルールをチェック)、条件が良好な場合、データベースからエンティティを永続化/取得するために、リポジトリが特別なメソッドで呼び出されます。 これを行う簡単な方法は次のとおりです。 class ApplicationService{ constructor(domainService, repository){ this.domainService = domainService this.repository = repository } postAction(data){ if(this.domainService.validateRules(data)){ this.repository.persist(new Entity(data.name, data.surname)) } // ... } } 二つ目 2番目の可能性は、代わりにdomainService内にリポジトリを挿入し、ドメインサービスを介してのみリポジトリを使用することです。 class ApplicationService{ constructor(domainService){ this.domainService = domainService } postAction(data){ if(this.domainService.persist(data)){ console.log('all is good') } // ... } } class DomainService{ constructor(repository){ this.repository …


5
解釈とコンパイル:有用な区別?
ここでは、インタプリタ言語とコンパイル言語の実装について多くの質問があります。区別が実際に意味をなすかどうか疑問に思っています。(実際には、質問は通常言語に関するものですが、それらの言語の最も一般的な実装について本当に考えています)。 現在、厳密に解釈される実装はほとんどありません。つまり、コードを一度に1行ずつ解析して実行する人はほとんどいません。さらに、マシンコードにコンパイルする実装も一般的ではなくなりました。ますます、コンパイラはある種の仮想マシンをターゲットにしています。 実際、ほとんどの実装は同じ基本戦略に集中しています。コンパイラーは、JITを介してネイティブコードに解釈またはコンパイルされるバイトコードを生成します。コンパイルと解釈の伝統的なアイデアのミックスです。 したがって、私は尋ねます:最近、解釈された実装とコンパイルされた実装の間に便利な区別はありますか?

6
なぜリフレクションを使用する必要があるのですか?
私はJavaが初めてです。私の研究を通じて、クラスとメソッドを呼び出し、どのメソッドが実装されているかを知るためにリフレクションが使用されることを読みました。 いつリフレクションを使用する必要がありますか?リフレクションを使用してオブジェクトをインスタンス化し、従来の方法でメソッドを呼び出すことの違いは何ですか?
29 java  reflection 


5
エンティティオブジェクトをデータ転送オブジェクトとして使用することをお勧めしますか?
エンティティフレームワークが、レイヤー間でデータを転送するために同じプロパティを持つ新しいオブジェクトを作成するロジックを提供しないのはなぜですか? エンティティフレームワークで生成したエンティティオブジェクトを使用します。

2
オープンソースのフォークの名前を変更するエチケットは何ですか?
GithubでTestNG javaテストフレームワーク(Apache 2ライセンス)をフォークして、必要に応じていくつかのマイナーなものを追加/変更できるようにします。 私の変更がすべてメインプロジェクトで承認されることや、他の人が私のフォークを使用することはまずありません。これは決してメインプロジェクトとの競争にはなりません。 ここで、命名の観点から、アーティファクト名(testng-mycompany)またはバージョン(6.8.mycompany)を変更して、mavenリポジトリーの公式バージョンと混同しないようにします。これは悪いエチケットと見なされますか?はいの場合、フォークを区別するための最良のアプローチは何ですか?

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