ソフトウェア工学

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

7
ソフトウェア開発の実践に関する未確認の声明を誰かが提供した場合、「引用が必要」と答えますか?[閉まっている]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的なものであり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 9年前に閉鎖されました。 最近、グレッグウィルソン(ソフトウェア大工仕事の最高科学者)の講義に出席しました。要約から: ソフトウェア開発の実践についての主張は証拠に基づいているべきであるという考えはまだソフトウェア開発者にとって異質ですが、これはついに変わり始めています:特定のツールまたは実践がソフトウェア開発をより速く、より安く、またはより信頼できると主張する学者は現在ある種の実証研究でその主張を裏付けると期待されていました。 全体として、講義は非常に有益であり、開発への私のアプローチについて非常に深く考えさせられました。特に、私は今、引用を探して多くのステートメントをバックアップしていることに気づきました。以前は、提供された真実を単純に繰り返す習慣に陥っていました。おそらく後で確認するための精神的なメモがありました。 率直に言って、私はだまされていました。 講義からの例を以下に示します。 「コードの25%を超えるリファクタリングが必要な場合、コードを書き直す方が迅速です」。 もっともらしいですが、本当ですか?これを裏付ける研究はどこにありますか?すべての言語に当てはまりますか?等々。 OK、これを極端なものにして、第一原理から自分で導き出さない限り、誰にも信じられないことは十分にあります。その方法は、狂気(または多分数学;-))です。しかし、誰かが「ねえ、これを[瞬間の言語]で行うことで、生産性を[10の倍数]%で]増やす」という文言であなたに近づいたら、それを受け入れるか、実証済みの証拠を求めるつもりですか? 後者の場合(そしてそうであることを願っています) この証拠をどこで見つけますか? あなたはどのくらい厳しいですか? 要するに、誰かがあなたに未確認の声明を提供した場合、あなたは「要出典」で応答しますか?

9
特定された問題の原因を「言い訳」にせずにどのように説明しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 (少なくともできる限り) "エゴレスプログラミング"を実践しているので、関連するコードを書いた人(その人が危険なコードを作成しない場合)の解決に焦点を当てており、確実に問題を完全に理解したいこの問題の原因を解決します。 しかし、誰かが私のコードを指してエラーを表示するとき、私はしばしば欠陥コードを書いている間、自分の考え方を思い出そうとし、エラーの原因を明確にするためにエラーを指している人にそれを説明しようとします一部の名前は不適切に選択されているため、意図しない方法で使用したり、明らかに成功したりする可能性があります...)。 今、私は反射でこれを行い、私の同僚のほとんどはこの反射を理解しています。しかし、私は、ユーモアの有無にかかわらず、特定された問題を起こした人々を非難する同僚がいる会社で働いていました(私にとっては、とにかく同じ正気でない効果があります)。 この種の環境では、間違ったコードを記述しなければならない理由を説明すると、他の人が言い訳をしようとしていると考えるようになります。私は、ほとんどの技術者でない人(またはドメイン専門家ではない、確かに個人的な経験に過ぎない)も、あなたが何か間違ったことをした理由を説明しようとすると、まさにそのように反応することに気付きました。 それで、この種の人々/環境を扱うとき、「言い訳をする」ように見えることなく、エラーの本当の原因をどのように説明しますか?(そして、説明しようとする価値さえありますか?)

8
あなたの会社の学習/開発部門はどのようにあなたに最も役立つでしょうか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 7年前に閉鎖されました。 私は質問の前に免責条項を付けます。私はエンジニアではなく、学習と開発の能力でフルタイムで働いています。 それを考えると、私が開発を任されているエンジニアから私が定期的に受けるコメントの1つは、彼らが開発のためのソリューション(技術的および非技術的の両方)を持っていると感じているということです彼らと相談して、本当に必要なものを判断します。 だから私の質問は-あなたがあなたの会社にあなたが彼らができるトップ3-5のリストを与えることができたら-教室または他の場所で-あなたがより良いエンジニア、より良い従業員、そして長期にわたって会社に留まる可能性が高くなりますが、何が削減されるのか、またその理由は何ですか? 回答ありがとうございます。

10
オプションのパラメーターは役に立ちますか、それともアプリケーションのメンテナンスの妨げになりますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 3年前に閉店しました。 タイトルに記載されているように、C#で使用されるパラメータなどのオプションのパラメータは有用ですか、それともアプリケーションのメンテナンスの妨げになり、コードを理解しにくくするために避けるべきですか?

11
HTML5の関連性:今がその時ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私が受け取っている仕事のほとんどとインターネットのほとんどは、まだ標準のHTML(HTML 4、たとえば)+ CSS + JSを使用しているようです。HTML5が標準としてどこにあるのか、特に受け入れと普及についてのビジョンはありますか?HTML5などの実装間の不整合に関する情報を見つけるのは簡単です。私が知りたいのは、HTML5の関連性です。
14 html5 

10
Java 1.4.2以降に見逃していたものに追いつくのを手伝ってください[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧くださいを。 7年前に閉鎖されました。 私はソフトウェア開発者としての最初のプロとしてのキャリアを開始しようとしています。そして、私は多くのJavaコードを書くことになるでしょう。私が具体的に何を書いているかについてはあまり知りませんが、さらに、とにかくコードに関してはかなり幅広い興味を持っています。 議論するに値しない理由のために、私の最後のインターンシップでは、Java 1.3および1.4 SDKのみをコーディングしました。また、私の大学教育は、言語の機能やライブラリではなく、主にアルゴリズム、データ構造、その他の理論に焦点を当てています。 したがって、上記を念頭に置いて、現在のバージョンのJavaのどの機能、クラスなど(とにかく、現在どのくらいの数になっていますか?)プログラマーとしてのあなたの人生を楽にする1.4.2以来、私が見落としていたことは何ですか? 特定のパッケージなどを見つけて使用する方法の例とストーリーも素晴らしいでしょう。

16
2点で長方形を定義する背後にある考え方は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 これが意味をなさないということではありませんが、99%の時間でうまくいきません。 多くの場合、2Dグラフィックスでは、長方形はポイントのペアとして初期化、保存、および操作されます。特定の言語ではなく、 class Rect: p1, p2: point 次のように、長方形を2つのx値と2つのy値として定義する方が理にかなっています。 class Rect xleft, xright: int ytop, ybottom: int 2つのポイントで、ソースコードのどこかでトップのy値を使用したい場合は、rect.p1.y(hmmm、stop and think、p1またはp2)を言う必要がありますが、 4つの値をプレーンデータメンバーとして、明確かつ直接的なものにします。rect.ytop(思考は不要です!)2つのポイントを使用することは、垂直を扱う際に水平を絡ませる必要があることを意味します。独立した要素間には無関係な関係があります。 この2点のアイデアはどのようにして生まれたのですか?裸のx座標とy座標よりも利点がありますか? 追記:この質問は、ウィンドウマネージャーやGUIツールキットなどのXYに配置された四角形のコンテキストに関するものであり、描画および描画アプリの任意の図形のコンテキストではありません。

9
このソフトウェア開発プロジェクトのチェックリストに何を追加しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 4年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私はチェックリストの大ファンです。ある旅行チェックリストは、チェックリストの移動、さらにはスクラムのチェックリストを。 コンテキスト:大企業に雇われ、ソフトウェア開発環境、プロセス、チームなど全体をセットアップする使命を与えられました。「カルテブランシュ」があります。ソフトウェアの有効な増分を作成する責任があります。プロジェクトサイズ:2000人/日。 次の(意図的に小さく不完全な)チェックリストに追加するアイテムは何ですか。 Continuous Integration Serverをインストールする DoDを書く 1ページのコーディングガイドラインを書く 製品バックログを作成する バグ追跡システムをインストールする 定期的なフェイスタイムのスケジュール

3
クリス・ソーヤーがアセンブラーでジェットコースターの大部分を書くのにどのくらいの時間とどのような複雑さが関与していたでしょうか?
この質問から、別の質問があります... クリス・ソーヤーがアセンブラーでジェットコースターの大部分を書くのにどのくらいの時間とどのような複雑さが関係していたでしょうか? この質問を特定して分類するために、私は興味があります。 クリスが自分でゲームを書くのにかかったと推定されるおおよその工数(推測)または、アセンブラーのコーディング時間の比率のおよその割合を指定して、C / C ++ですべてを記述します。 アセンブラーをよく知っているプログラマーは、これをこのような低レベルの言語抽象化のための過度に複雑なタスクと考えていますか?パフォーマンス上のメリットは別として、これはChrisが持っている異常な自然の能力なのでしょうか、それともその程度の学習に値するスキルセットなのでしょうか?複雑さ/パフォーマンスのことはアセンブラーを習得する価値があると(書くために)考えているのか、それともアセンブラーで自然に発達したスキルをたくさん持っている場合(おそらくハードウェアの操作から) / hardware drivers / electronics / etc)。

6
フリーソフトウェアではなくオープンソース(またはその逆)[クローズ]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 フリーソフトウェア財団の「フリーソフトウェア」の定義: 「フリーソフトウェア」は、価格ではなく自由の問題です。この概念を理解するには、「無料」を「無料ビール」ではなく「言論の自由」と考える必要があります。 フリーソフトウェアは、ユーザーがソフトウェアを実行、コピー、配布、研究、変更、改善する自由の問題です。より正確には、プログラムのユーザーが4つの本質的な自由を持っていることを意味します。 あらゆる目的のためにプログラムを実行する自由(自由0)。 プログラムがどのように機能するかを研究し、それを変更して希望どおりに実行する自由(自由1)。ソースコードへのアクセスは、このための前提条件です。 隣人を助けることができるようにコピーを再配布する自由(自由2)。 変更したバージョンのコピーを他の人に配布する自由(自由3)。これを行うことにより、コミュニティ全体にあなたの変更から利益を得る機会を与えることができます。ソースコードへのアクセスは、このための前提条件です。 ユーザーがこれらすべての自由を持っている場合、プログラムはフリーソフトウェアです。したがって、変更の有無にかかわらず、コピーを無償で配布するか、配布の料金を請求するかを、誰にでも自由に再配布する必要があります。これらのことを自由に行えるということは、(特に)あなたがそうする許可を求めたり、支払いをする必要がないことを意味します。 オープンソースイニシアチブの「オープンソースソフトウェア」の定義: オープンソースは、ソースコードへのアクセスを意味するだけではありません。オープンソースソフトウェアの配布条件は、次の基準に準拠する必要があります。 無料の再配布ライセンスは、いくつかの異なるソースからのプログラムを含むソフトウェアの集合的な配布のコンポーネントとしてソフトウェアを販売または配布することをいかなる当事者にも制限してはなりません。ライセンスは、そのような販売のためにロイヤルティやその他の料金を必要としません。 ソースコードプログラムにはソースコードを含める必要があり、ソースコードとコンパイル済みフォームでの配布を許可する必要があります。何らかの形式の製品がソースコードと共に配布されない場合、合理的な複製コストを超えない範囲でソースコードを取得するための十分に公表された手段が必要です。ソースコードは、プログラマがプログラムを変更する優先形式である必要があります。意図的に難読化されたソースコードは許可されません。プリプロセッサまたはトランスレータの出力などの中間形式は許可されていません。 派生作品ライセンスでは、修正および派生作品を許可する必要があり、元のソフトウェアのライセンスと同じ条件で配布できるようにする必要があります。 作成者のソースコードの整合性ライセンスは、ビルド時にプログラムを変更する目的でソースコードと共に「パッチファイル」の配布を許可している場合にのみ、ソースコードの変更を制限できます。ライセンスは、変更されたソースコードからビルドされたソフトウェアの配布を明示的に許可する必要があります。このライセンスでは、元のソフトウェアとは異なる名前またはバージョン番号を付けるために派生著作物が必要になる場合があります。 個人またはグループに対する差別の禁止ライセンスは、個人またはグループに対して差別してはなりません。 努力の分野に対する差別の禁止ライセンスは、特定の努力の分野でプログラムの使用を制限するものであってはなりません。たとえば、プログラムがビジネスで使用されることや、遺伝子研究に使用されることを制限しない場合があります。 ライセンスの配布プログラムに付随する権利は、プログラムが再配布されるすべての人に、それらの当事者による追加のライセンスの実行を必要とせずに適用されなければなりません。 ライセンスは製品に固有のものであってはなりませんプログラムに付属する権利は、プログラムが特定のソフトウェア配布の一部であることに依存してはなりません。プログラムがその配布から抽出され、プログラムのライセンスの条件内で使用または配布される場合、プログラムが再配布されるすべての関係者は、元のソフトウェア配布に関連して付与されるものと同じ権利を有する必要があります。 ライセンスは他のソフトウェアを制限してはならないライセンスは、ライセンスを取得したソフトウェアとともに配布される他のソフトウェアに制限を課してはなりません。たとえば、同じ媒体で配布される他のすべてのプログラムがオープンソースソフトウェアでなければならないことを、ライセンスが主張してはなりません。 ライセンスはテクノロジーに依存しない必要がありますライセンスの提供は、個々のテクノロジーまたはインターフェースのスタイルに基づいて行うことはできません。 これらの定義は、非常に異なるイデオロギーから派生していますが、広く互換性があり、ほとんどのフリーソフトウェアはオープンソースソフトウェアでもあり、その逆も同様です。ただし、そうではない可能性があると考えています。ソフトウェアがフリーでなくてもオープンソースである、またはオープンソースでなくてもフリーである可能性があります。 ご質問 私の信念は正しいですか?ソフトウェアが他のキャンプではなく、一方のキャンプに入る可能性はありますか? そのようなソフトウェアは実際に存在しますか?例を挙げてください。 明確化 私はすでに答えを受け入れましたが、多くの人々を混乱させたようですので、おそらく説明が整いました。私はしていないと非コピーレフト(「許容」)のライセンス(私はその用語好きではないものの、または「ウイルス」)コピーレフトの違いについて尋ねます。また、「無料」と「オープン」の個人的な特異な定義についても質問しませんでした。「FSFで定義されたフリーソフトウェア」と「OSIで定義されたオープンソースソフトウェア」について質問していました。2つは常に同じですか?他人にならずに一人になることは可能ですか? そして、答えは、オープンでないとオープンになることは不可能ですが、フリーでないとオープンになることは不可能だということです。実際に質問に答えてくれた皆さん、ありがとう。

12
今日、プログラマは何を「最適化」しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 友人のためにシェアウェアをフロッピーにコピーする「古き良き時代」に戻って、かなりの量のアセンブリも使用しました。「マイクロ最適化」という一般的な慣行がありました。1つ少ない命令で表現する方法がわかるまで、アセンブリのラインをじっと見つめていました。数学的に不可能な「もう1つの命令はいつでも削除できます」という格言もありました。今日の(ほとんどの)プログラミングでは、小さな一定の要因によるランタイムパフォーマンスの変更は大きな問題ではないため、他の場所での最適化の取り組み? 言い換えると、ベストプラクティスは、価値のあるものを追加しなくなった極端な状態になりますか?そして、代わりに時間を無駄にしていますか? 例:プログラマーは、1つの場所からのみ呼び出されるプライベートメソッドを一般化するのに時間を浪費しますか?時間を無駄にしてテストケースのデータを削減していますか?プログラマーは(まだ)コードの行を減らすことに過度に関心を持っていますか? 私が探しているものには、2つの素晴らしい例があります。(2)わずかなコードの重複も削除します。 これは、「あなたは何のために最適化するのですか?」という質問とは異なることに注意してください。

5
コードレビューに割り当てられた時間
コードレビューを行っている場合 実装と比較して、コードレビューにどのくらいの時間を費やしますか? どのくらいの変更がコードレビューを受けますか? あなたはそれがはるかに多い/もっとあるべきだと思いますか? 有効性に関する研究はありますか? [編集]回答をありがとう

10
データベース設計にどのように取り組みますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私は主にWeb開発者であり、キックオフしたい個人的なプロジェクトがいくつかあります。 私を悩ませているのは、データベースの設計です。私は学校のdb正規化などを経験しましたが、それは数年前であり、学校を除いてリレーショナルデータベース設計の経験はありませんでした。 それでは、Webアプリの観点からどのようにデータベースにアプローチしますか?どのように始めますか、何に注目していますか?注意すべきフラグは何ですか?

8
Javaでは、チェック例外は何に適していますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Javaのチェックされた例外は、長年にわたっていくつかの悪い報道を受けています。わかりやすい兆候は、それが文字通り世界で唯一の言語であることです(GroovyやScalaのような他のJVM言語でさえも)。SpringやHibernateなどの著名なJavaライブラリもそれらを使用しません。 私は個人的に(レイヤー間のビジネスロジックで)それらの1つの用途を見つけましたが、そうでなければ私はかなりアンチチェックされた例外です。 私が気付いていない他の用途はありますか?

7
オンラインテクニカルスキルテストを使用して上級開発者を雇いますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 プログラミングを含む多くの分野でスキルテストを提供するIKMなどのオンラインサービスがあります。 開発者の上級職に採用する際に、この種のテストを使用しますか? 面接のために候補者を呼び出す前に、候補者を客観的にベンチマークするだけの場合はどうですか?面接後に候補者をリストに載せた後のステップとして使用しますか? このアプローチは、他の状況と比較して状況によって適切ですか?この種のサービスを個人的に使用したことがありますか?
14 hiring  interview 

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