ソフトウェア工学

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

10
Javaで開発中としてクラスにフラグを付ける方法
私はインターンシッププロジェクトに取り組んでいますが、すべてを終える前に辞めなければなりません。 実稼働で使用するには十分に安定していないクラスが1つあります。このクラスをマーク/フラグ付けして、他の人が実稼働で誤って使用しないようにします。私はすでにJavadocに通知を出しましたが、それでは十分ではないようです。コンパイラーのエラーまたは警告の方が良いでしょう。 コードは次のように構成されています。 [Package] | company.foo.bar.myproject |-- Class1.java |-- Class2.java |-- Class3.java <--(not stable) パブリックメソッドでこれらのクラスを呼び出す単一のファクトリクラスがある場合、メソッドをclass3asに設定できますprivate。ただし、APIはそのようには公開されません。ユーザーはこれらのクラスを直接使用します。たとえばnew Class1();、トップレベルのクラスをプライベートにすることはできません。この状況に対処するためのベストプラクティスは何ですか?
12 java 

8
小さな繰り返しコードセグメントの関数/メソッドを作成するときの適切なコードプラクティスは何ですか?
大規模なプログラムの作成中に何度も、コピーまたは貼り付けの回数を関数またはメソッドにコードを入れるのが理にかなっていて、良い経験則は何かを疑問視しています。私は4行以上の経験則を使用しており、2回以上表示され、そのコードを含む単純な関数/メソッドを作成します。より良いプラクティスを考えたり、何か指針を提供できますか?これは、言語固有の質問というよりも、一般的なデザインパターンの質問です。

9
OOPの概念/原理を実際に学ぶにはどうすればいいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 オブジェクト指向プログラミング言語を学びたかったのですが、OOPの概念全体を知ることだけを目的にしたくないのです。だから、誰が私がどの言語を学び始めるべきか教えてくれますか?

11
コンピューターサイエンス以外の学士号は、ソフトウェア開発のキャリアを傷つけますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 私は地質学の理学士号を持っています。学士号の半分しか得られなかったときに、本当の才能があるところを見つけました。私の基本的な学位は、ソフトウェア分野で進歩するための問題になりますか(多くの大手企業が基本的な学位を検討していると感じています)?また、コンピューターサイエンスの強力な理学士号を取得している人に対して、同等に有能な立場に身を置くことをお勧めします。 前もって感謝します。

6
.NET BigIntegerが何のために設計されているかを正確に述べているドキュメントはありますか?
私は.NET BigIntegerをいじっていますが、基本的には(予測される答えは問題ないでしょう) の曲線の偏差点((操作に必要な時間の増加)と(BigIntegerの値))? または、1から無限へのBigIntegerの値と操作に必要な時間の増加をプロットすると、滑らかな曲線になるように、そのような偏差なしで設計されていますか? たとえば、配列が50個のアイテムを処理できるように設計されていると仮定します。つまり、アイテムが1つある場合、操作はf(1)時間です。そして、私が2つのアイテムを持っているとき、操作はf(2)時間です。50個のアイテムがある場合、操作はf(50)時間です。ただし、50個のアイテムのみを処理するように設計されているため、51個のアイテムがある場合に実行される操作はg(51)で、g(51)> f(51)です。 適切に実装された場合、BigInteger演算の複雑さは滑らかな曲線になります。たとえば、乗算の時間計算量はO(NM)で、Nは最初の被乗数の桁数、Mは2番目の被乗数の桁数です。もちろん、数値がマシンに収まらないほど大きいNとMを選択できるという点で実用的な制限があります。 それがそのように実装されていると主張するドキュメントを知っていますか?
12 c#  .net  vb.net  numbers 

5
Windowsで開発し、Linuxでテストして実行する方法は?
私は、社内のいくつかの内部ソフトウェア(Pythonで作成)の2人の開発者のうちの1人です。ソフトウェアは、専用のLinuxボックスで実行するように設計されたサーバーアプリケーションです。現在、SVNリポジトリを保持するボックスが1つあり、このボックスはテストにも使用されます。問題は、Windows上のEclipseを使用してワークステーションで開発しているため、このアプリをWindowsで実行できないことです。 このような環境を適切に整理して、プロジェクトとコードの転送に貴重な時間を無駄にしないようにして、テストできるようにする方法は? 現在、私はsvnチェックアウトを行っており、いくつかのコードを変更してから、テスト用に開発サーバーにアップロードしています(svn経由ではありません)。サーバー上でテストし、何かを変更し、再度テストします。すべてがコミットされます。この絶え間ないアップロードとテストは、私を夢中にさせます。プロジェクトをサーバー上に保持しようとしました(ホームディレクトリにチェックアウトします)が、これによりEclipseで多くの問題が発生します。 明らかに私はこれについて多くの経験を持っていないので、この種の問題に関するベストプラクティスは何ですか?

3
クラスと構造体
C ++およびその他の影響を受ける言語には、Structure(struct)と呼ばれる構造体と、と呼ばれる別の構造体がありclassます。どちらも関数と変数を保持できます。いくつかの違いは次のとおりです。 クラスには、ヒープ内のstructメモリが割り当てられ、スタック内のメモリが割り当てられます(注意:これはC ++では間違っていますが、OPが「影響を受けた言語」と呼んだものでは正しいかもしれません) クラス変数はデフォルトでプライベートであり、structそれらはパブリックです 私の質問はstruct、クラスはどういうわけか放棄されたのですか?もしそうなら、なぜですか?上記の違いをstruct除けば、クラスと同じことをすべて行うことができます。なぜそれを放棄するのですか?

6
Try-Catch内ですべてのステートメントを記述する必要があるのはなぜですか?
私の会社長は、すべてのコード、つまりTry-catchステートメント内のすべてのコードを記述する必要があると言います。ここで、「申し訳ありませんが安全です」というアプローチはここで理解できますが、ラベルが作成され、フォームの位置が設定されたときに例外があると考えるのはあまりにも簡単ではありません。このような単純な操作で例外が発生する場合があります。

2
ホストが去った後、オンラインゲームはどのように続きますか?
注:これは、ゲームではなくネットワーキングに関する質問です。私はStarCraftを単なる例として使用しています。 ゲームStarCraft(StarCraft 2ではない)はオンラインプレイをサポートしています。1人がホストし、他の人が参加します。ホストがゲーム中に退場した場合、ゲームはホストなしで無期限に続行できます。それはどのように機能しますか? 次のシナリオを検討してください。 3対3をホストします。参加できるようにするには、ルーターをポートフォワード6112、TCPおよびUDPに設定する必要があることに注意してください(ブリザードサポートを参照)。 5人が参加します。全員(自分も含む)はルーターの背後にいます。ゲームを開始します。 ゲーム開始から3分後、約20人の熱狂者が私の基地に流れ込みます。誰も私を助けません。 私のベースは排除されたので、私は去ります(ゲームはあなたに選択肢を与えません)。 ゲームはホストなしで続行します(ホームチームには2人のプレイヤーが残っています)。 残りの5つのクライアント(転送された6112を必要としなかった)はどのように接続されたままになりますか? 私が正しく理解している場合:2つのプログラムが互いに通信する場合、1つは「サーバー」であり、ポート上の接続をリッスンする必要があり、もう1つは「クライアント」であり、その接続要求を開始する港。彼らは単純にお互いにパケットを送信し始めることはできません(そして、両方がルーターの後ろにあるなら、私は彼らがどうするかさえ知りません)。 ゲームをホストしている人はサーバーであり、ゲームに参加している人はクライアントです。クライアントがサーバーとの通信を開始する方法を簡単に確認できます。私が取得できないのは、サーバーを経由せずにクライアントがどのように互いに通信を開始するのですか?インターネットプロトコルにより、サーバーはクライアント間の接続を開始できますか? StarCraftの場合、ゲームのトラフィックがBattle.netサーバーを通過することは完全に可能です。StarCraftは、ゲーム中(友人からのメッセージなど)にBattle.netへの接続を維持します。ただし、ゲームのトラフィックが通過するとは思えません。 私の質問は次のとおりです。複数のクライアントが接続されたサーバーは、それらの間の接続を開始できますか?
12 networking 

4
JavaScriptコードはウェブサイト、オープンソースのみに使用されていますか?
書き換えられた質問: JavaScript関連の質問はしていませんが、Webで使用されているすべての「クライアント」言語(HTML5、JavaScript、CSSなど)です。JavaScriptコード(つまりGPL)をWebサイトに配置し、このWebサイトにWeb上の誰からでもアクセスできる場合、何らかの方法でGPLに違反していますか? クライアントコード(HTML、CSS、JavaScript)を誰かに販売したい場合はどうなりますか?この場合、別のライセンスが必要ですか? JavaScript(Webサイトに使用する場合)は常にオープンソースではありませんか?Webページを開くと、いつでもソースを読むことができます。 JavaScriptのGPLコードを含むWebサイトを販売している場合、サーバー側のコードもリリースする必要がありますか? このWebサイトは部分的にアクセス可能(一部は無料で、もう一方は有料)で、GPLコード(同じ部分)がWebサイトの両側で使用されている場合はどうなりますか? GPLコードが、アクセスするために料金を支払う必要があるWebサイトの一部にのみある場合はどうなりますか この方法でウェブサイトを顧客に販売している場合: すべてのクライアント関連コード(JavaScript、HTML、CSS)を販売しています(1回限りの料金) 私はあなたにサーバーサイドコードを売るのではなく、あなたはそれをレンタルしています(私のサーバーサイドコードを再利用させたくありません) JavaScriptのGPLコードを使用している場合、何か違反していますか?(ウェブサイトはウェブ上の誰からでもアクセス可能です。) 編集2: 新しい特定の質問を追加しました: Webサイトがサーバー側のコードなしで機能する場合、JavaScriptはJSON形式のデータを含むPHPページを呼び出しているだけです。他の人はクライアント側でウェブサイトを構築できますが、データを提供する必要があります。この場合、JavaScriptは「PHP」コードを呼び出しています(ただし、反対ではありません)。この場合、GPLに違反していますか?

7
ソフトウェア品質の客観的指標[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 ソフトウェア製品で測定できる品質には、目的への適合性(最終用途など)、保守性、効率など、さまざまな種類があります。これらのいくつかはやや主観的またはドメイン固有です(たとえば、優れたGUI設計原則は文化によって異なる場合や、使用状況に応じて、軍事的使用と消費者使用を考えます)。 私が興味を持っているのは、タイプのネットワーク(またはグラフ)に関連するより深い形式の品質とそれらの相互関係、つまり、各タイプが参照するタイプ、適切に関連する相互接続性の明確に識別可能なクラスターがあることです階層型アーキテクチャ、または逆に、型参照(「モノリシック」コード)の大きな「ボール」があります。また、各タイプおよび/またはメソッドのサイズ(たとえば、Javaバイトコードまたは.Net ILの量で測定)は、より複雑で管理しやすいものに分解される代わりに、大きな複雑なアルゴリズムがコードのモノリシックブロックとして実装されている場所を示す必要がありますチャンク。 このような考えに基づいた分析は、少なくとも品質の代用となる指標を計算できる可能性があります。高品質と低品質の間の正確なしきい値/決定点は主観的であると思われます。たとえば、保守性とは人間のプログラマーによる保守性を意味するため、機能の分解は人間の心の働きと互換性がなければなりません。そのため、考えられるすべてのシナリオで考えられるすべてのソフトウェアを超越する、数学的に純粋なソフトウェア品質の定義があるのではないかと思います。 また、品質の客観的なプロキシが普及すると、ビジネス上のプレッシャーにより、開発者は全体的な品質(プロキシで測定されない品質の側面)を犠牲にしてこれらのメトリックを追求することになるので、これは危険な考えかと思います。 品質に関する別の考え方は、エントロピーの観点からです。エントロピーは、システムが秩序状態から無秩序状態に戻る傾向です。中規模から大規模の実際のソフトウェアプロジェクトに携わったことのある人なら誰でも、コードベースの品質が時間とともに低下する傾向があることを理解するでしょう。一般に、ビジネス上のプレッシャーは、新しい機能に焦点を当てた変更(品質自体がアビオニクスソフトウェアなどの主なセールスポイントである場合を除く)、および回帰の問題と「適合」が合わない「シューホーン」機能性による品質の低下をもたらします品質とメンテナンスの観点。それでは、ソフトウェアのエントロピーを測定できますか?もしそうなら、どのように?

10
完全な初心者から開発者への論理的なジャンプをしますか?
私はここ数年、非常に軽くプログラミングを行ってきましたが、あまり進歩していません。それは間違いなく私の興味を引くものですが、私はやる気を起こしていないだけです。それから、私は何が私を殺しているのかを理解したと思います。私が読んだすべての本、私が見たすべてのスクリーンキャストは、1つの重要なことを見逃したようです。 印刷ステートメント、変数などからより複雑なものにするにはどうすればよいですか? たとえば、Posterousのようなサイトを見てみましょう。知らない人のために、それは電子メールでブログ投稿を受け入れるブログプラットフォームです。ブログの作成者には、ブログの投稿を送信する特別な@ posterous.comメールがあり、自動的にフォーマットされて投稿されます。 開発者は、バックエンドでこのようなことを達成するために、関数とステートメントのツールボックスをどのように使用しますか? この質問が本当に広範であるように思える場合、申し訳ありません。私は基本的な概念を十分に把握しているように感じますが、実際に何かをする方法がわかりません。

12
多くの場合、C ++が大学で最初の言語として教えられるのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け付けていません。 私の学校は、C ++プログラミングコースでコンピューターサイエンスのカリキュラムを開始しています。つまり、これは多くの学生が学ぶ最初の言語です。 私は、多くの人がC ++を嫌うのを見てきました。その理由はさまざまです。C ++はあまり良い言語ではないというのが、一般的な意見のようです。StackExchangeに関するいくつかの質問と次のような投稿に基づいて、あまり好かれていない印象を受けます: http ://damienkatz.net/2004/08/why-c-sucks.html http://blogs.kde.org/ node / 2298 http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/ など (注:C ++が悪い言語であるというのは私の意見ではありません。実際、C ++は私が使用する主要言語です。しかし、インターネットや一部の教授は、C ++はあまり好きではないという印象を与えています。 、私の教授の一人は常にC ++に耳を傾けていますが、それでも私の大学ではまだ最初の言語です!) それを念頭に置いて、なぜこれが多くの学校で最初の言語が教えられているのですか?C ++でプログラミングカリキュラムを開始する理由は何ですか? 注:この質問は「C ++は第一言語として適していますか」と似ていますが、それが適しているかどうかには興味がありませんが、なぜ選ばれたのかは少し異なります。
12 c++ 

4
オープンソースプロジェクトのドキュメントを管理するには?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私は成長しているオープンソースプロジェクトの作成者です。現在、ドキュメントを管理する最良の方法を見つけようとしていらいらしています。私が検討したオプションは次のとおりです。 HTMLウェブサイト Github Wiki Githubでホストされるマークダウンファイル Github README.mdにすべてのドキュメントを配置する ドキュメントは既にMarkdownで書かれていますが、どのようにそれを利用可能にしたいのかわかりません。ソースを分岐およびタグ付けできるのと同じように、ドキュメントを分岐およびタグ付けできるので、Gitに本当に惹かれています。 Markdownライブラリを使用して、MarkdownをHTMLに変換し、スタイル付きのWebサイトに表示できます。変更があった場合はいつでもWebサイトに変更をアップロードする必要があり、ドキュメントのさまざまな「タグ」をすべて管理することは困難です。 Github Wiki(私の知る限り)は、あなたがいるブランチによって変わりません。そのため、Github Wikiフォームには常に「マスター」バージョンのドキュメントしかありませんでした。 すべてをGithubのREADMEに入れておくと、とてもきれいになります。分岐とタグ付けはできますが、使用するのは少し面倒で、簡単なナビゲーションには向いていません。 素晴らしいソリューションがありませんか?他にどんなオプションがありますか?

7
プライベートクラウドとはどういう意味ですか?
SEでクラウドコンピューティングに関するいくつかの議論を読みました。それらから、私はクラウドを「異なるエンティティが所有するコンピューティング/データストレージ施設。オンデマンドで簡単にスケーラブルにするハードウェアとソフトウェアアーキテクチャを使用し、したがって、レンタル可能なスケーラビリティモデルをサポートする」と理解しています。 また、「所有エンティティには、同じハードウェアから複数の異なる顧客に対応するために仮想化の概念が使用される大きなデータセンターがあります」。さらに、「冗長性、セキュリティなどは、プロバイダーによって注意が払われると想定されます。」 クラウドコンピューティングを祖母に説明することに関するSEでの議論を読みました。「ガーデンvsスーパーマーケット」、「オーナーvsホテル」の例は完全に適合しています。 この理解では、「プライベートクラウド」を視覚化することはできません。率直に言って、「プライベートクラウド」は私にとって矛盾した言葉のように聞こえます。(「プライベートスーパーマーケット」、「所有ホテル」などに関連)。私の無知を許してください。 それで、「プライベートクラウド」とは何ですか?

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