ソフトウェア工学

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

6
オブジェクト指向の「正規化」
データベースプログラミングには、保存するデータに対して行う「正規化」と呼ばれる手法があります。 誰もがこの概念をオブジェクト設計に適用しようとしましたか?どのようにしていた?どのようにうまくいきましたか? 編集:拡張/明確化するために、データベースの正規化は冗長性を減らすための一連の原則以上のものです。実際にあなたが通過するステップと段階があり、あなたがどの段階にいるかを示す少なくとも中程度に客観的な尺度があります。オブジェクト設計には独自の原則があり、匂いの概念がありますが、あなたに伝える同様の何かをする方法はありますかあなたはXX-form0,1,2 ...などにいて、次の「正規化された」レベルに移動する方法ですか?
28 design 

5
アジャイルとISO 9001はうまく相互作用できますか?
無駄のないソフトウェア開発とISO 9001の対象となる慣行との関係を扱った学術論文はほとんどありません。ほとんどの記事は、これらのアプローチの相違は大きいと述べていますが、アプローチします。 学問的にはとても美しいですが、実際にはとにかくですか? 質問は次のとおりです。ISO9001としてアジャイルの両方を適用している会社で働いていますか、または働いていましたか?あなたの認識は何ですか?本当に良いものと不適切なものは何ですか?
28 agile  lean  iso 

6
ダイクストラは、母国語の非常に優れた習得を勧めるとき、どういう意味ですか?[閉まっている]
ダイクストラはここに書いています: 数学的な傾向に加えて、母国語の非常に優れた習熟は、有能なプログラマーの最も重要な資産です。 この引用の後半部分は理解できません。説明または詳しく説明してください。 PS私はインドで育ちました。私は家でベンガル語を話します。私は住んでいるコミュニティでマラーティー語を話します。ヒンディー語は国語であり、非常に広く話されているので、私はそれを知っています。学校や大学では英語を第一言語として教えられました。もちろん、今では多くの言語で考えているので、どの言語にも習熟していないことを認めなければなりません。これは私のプログラミングの適性に本当に影響しますか?はいの場合、どのように?そして、解決策はありますか?
28 skills 

10
プログラマーは静的言語に慣れていて、Javascriptツールの欠如にどのように対処していますか
私はほとんどの場合、ほとんどの場合、コンパイルされた言語、特にJavaでのみプログラミングを行ってきました。Javaについての私のお気に入りの1つは、Eclipseのようなツールを使用するとき、どれだけ生産性が高く、実際にコードを書く必要があるかということです。 あなたはできる: メソッドとクラスを簡単かつ自動的にリファクタリングします メソッドが呼び出された場所、または定数が使用された場所をすべて即座に表示する(コール階層を開く/参照を表示) 静的型付けとは、コード補完を使用して、オブジェクトで使用可能なすべてのパラメーター/関数を表示できることを意味します Ctrlキーを押しながら関数/メンバー/クラス名をクリックして、その定義に直接移動します これらすべての機能は、IDEが私の親友であると感じさせます。Javaコードを記述し、特に他の人のプログラムを理解するのがはるかに簡単になります。 しかし、私はますますJavascriptの使用を求められており、これまでの私の経験は非常に否定的でした。 特に: 関数のエントリポイントをすぐに見つける方法はありません(プレーンテキスト検索では、呼び出し階層のさらに上のメソッドの検索が行われる可能性があります。 パラメーターは関数に渡され、そのパラメーターで使用可能なプロパティと関数を知る方法はありません(実際にプログラムを実行し、関数が呼び出されるポイントに移動し、console.logsを使用してすべてのプロパティを出力する以外利用可能) コールバックとしての匿名関数の一般的な使用法は、しばしば混乱するコードパスのスパゲッティにつながり、すぐに移動することはできません。 確かに、JSLintは実行前にいくつかのエラーをキャッチしますが、それでも、ブラウザーでコードの下に赤い波線を表示するほど便利ではありません。 結局のところ、プログラム全体を常に頭に置く必要があるということです。これにより、複雑なプログラムを作成するための認知的負荷が大幅に増加します。そして、心配するこれらすべての余分なものは、実際の創造性と問題解決のための私の脳内のスペースを少なくします。 確かに、正式なクラス定義全体を記述するよりも、オブジェクトを一緒にスローする方が高速です。しかし、プログラムはわずかに簡単かつ迅速に作成できますが、私の経験では、プログラムの読み取りとデバッグははるかに困難です。 私の質問は、他のプログラマーがこれらの問題にどのように対処するかということです。Javascriptは明らかに人気が高まっており、私が読んだブログは、これらの問題の解決策を必死に見つけようとするのではなく、人々の生産性に関するものです。 GWTを使用すると、代わりにJavaでJavascript環境のコードを記述できますが、私が期待するほど広く使用されているようには見えません。実際、人々は複雑なプログラムにはJavascriptを好むようです。 私は何が欠けていますか?

3
C ++テンプレートのエラーメッセージはなぜ恐ろしいのですか?
C ++テンプレートは、読み取り不能な長いエラーメッセージを生成することで有名です。C ++のテンプレートエラーメッセージがなぜそんなに悪いのかについての一般的な考えがあります。基本的に、問題はコンパイラーがテンプレート内の特定の型でサポートされていない構文に遭遇するまでエラーがトリガーされないことです。例えば: template <class T> void dosomething(T& x) { x += 5; } 演算子がTサポートされていない場合+=、コンパイラはエラーメッセージを生成します。そして、これがどこかライブラリの奥深くで発生した場合、エラーメッセージは数千行に及ぶ可能性があります。 ただし、C ++テンプレートは基本的に、コンパイル時のダックタイピングのメカニズムにすぎません。C ++テンプレートエラーは、Pythonなどの動的言語で発生する可能性のあるランタイムタイプエラーに概念的に非常に似ています。たとえば、次のPythonコードを考えます。 def dosomething(x): x.foo() ここでx、foo()メソッドがない場合、Pythonインタープリターは例外をスローし、問題を示す非常に明確なエラーメッセージとともにスタックトレースを表示します。インタプリタが何らかのライブラリ関数の奥深くになるまでエラーがトリガーされない場合でも、ランタイムエラーメッセージは、典型的なC ++コンパイラによって吐き出される読み取り不能な嘔吐物ほど悪いものではありません。それでは、なぜC ++コンパイラが何が問題なのかをより明確にできないのでしょうか?一部のC ++テンプレートエラーメッセージにより、文字どおり、コンソールウィンドウが5秒以上スクロールするのはなぜですか?

18
なぜ企業は開発者の娯楽機器を購入しないのですか?[閉まっている]
開発にうんざりしていて、心がそれ以上役に立たないときは(自宅で)、単に面白いことをするだけで、問題解決能力が高く、心が自由になります。しかし、開発者の生産性と効率を向上させるための手法としてこの手法をマネージャーに勧めたとき、彼は仕事が娯楽の場ではないという理由で受け入れることを拒否しました。私はこの式が私のために働くと思う。他の開発者にも当てはまります: 2 hours of productive work + 30 minutes of entertainment > 3 hours of dull work なぜ企業はそれを信じないのですか? 更新:これがトピック外としてクローズされた理由がわかりません。これが関連していると思われる場合は、再度投票してください。

13
私たちのチームの色盲のメンバー
私のチームは、作業する必要がある機能の概要を示すために、コード内の色に大きく依存しています(注意が必要なコードの行に色を付けます)。私たちには色盲の親友がいて、私たちのチームに参加したいと思っています。色を使用せずに作業が必要なものを強調するために何ができますか?チームには約25人の従業員がおり、全員がラインのカラーリングシステムに慣れており、最も効率的であることがわかりました。
28 teamwork  color 

9
ScalaがCまたはC ++で実装されなかった理由
ScalaがCやC ++ではなくJavaと.NETで実装された理由を知っている人はいますか?ほとんどの言語はCor C ++で実装されています(つまり、Erlang、Python、PHP、Ruby、Perl)。Javaおよび.NETライブラリにアクセスできること以外に、Javaおよび.NETで実装されたScalaの利点は何ですか? 更新 Scalaは、Cで実装された場合、JVMに依存するよりもより適切に調整できるため、より多くの利益を得られませんか?
28 java  c++  .net  c  scala 

6
経験豊富な開発者としてJavaを学習するための標準的な本はありますか?[閉まっている]
私は、過去5/6年間、ギブオア・テイクをして、.NET開発者になりました。私はプロのJava開発を行ったことは一度もありませんし、最後に触れたのはおそらく大学に戻ったときでしょう。私はScala言語を少しいじっていましたが、深刻なことは何もありませんでした。最近、かなりクールな仕事をする機会を提供されましたが、.NETの代わりにJavaを使用しました。私は現在のスキルセットで申し分なく得ることができると思います。つまり、私はすでにプログラミングの方法をよく知っており、C#やC ++などの言語に精通していることを意味します。必要なのは、本当に良い参考書と、Javaでの考え方に関する本です。各言語/フレームワーク/スタックは特定の方法で対処しようとしますが、Javaも例外ではないと確信しています。 これなしでは生きていけない素晴らしいJavaの本は何ですか?Javaの最も重要な部分について書かれた本がありますが、それよりも先に理解する必要がありますか? 補足として、私は主にJava Web開発を行います。永続性、フレームワーク、サーバーなどに使用しているものの種類が100%ではありません。
28 java  books 

7
データ構造とアルゴリズムに投資し続けるべきですか?[閉まっている]
最近では、データ構造とアルゴリズムに多額の投資をして、プログラミングのパズルを解こうとしています。 JavaとClojureを使用してコーディングと解決を試みています。 時間を無駄にしていますか?より深い知識(インとアウト)を獲得し、より迅速にそれらを使ってコーディングできるようにするために、既に知っているテクノロジーとフレームワークにもっと投資すべきですか? データ構造とアルゴリズムを研究することで、私はより良いプログラマーになるのでしょうか、それとも大学時代にのみ重要な科目になりますか?

4
ソフトウェアライセンスのバカガイドはどこかにありますか?
基本的に、この問題に関する私の知識は、オープンソースとクローズドソースが存在するという事実以外のzilchです。 私はWeb開発者(デザイナーではありません)なので、アイコンのようなものをオンラインで探します。私は常にこれらのアイコンの大ファンであり、Creative Commons Attribution 2.5 Licenseを持っています。私が見る限り、このライセンスは「どこかで私に戻るリンクがある限り、あなたが彼らとやりたいことをする」と言っています。その仮定は正しいですか? ちょうど今日、はるかにわかりにくいライセンス(ここにあります)を備えた新しいアイコンセットを見つけましたが、正直なところ、それらを使用できるかどうかはわかりません。 現時点では、それらをただ日の目を見ることのないおもちゃのものに使用したいのですが、ソースコードはGithubに保存されますが、アイコンを公開されている場所に保存することは合法ですか? 私は私のすべての今して5セントを作ってそれに広告を持っているかもしれない、私の個人的なウェブサイト上に置く場合は、であることは、法的? 私は、サイト上でそれらを使用する場合は、ユーザーへの提供の無料サービスは、あることをことを法的? そのサイトは、(有料のサブスクリプションのようなものを経由して)お金を稼ぐ起動するか(非常に低いしかし、1日の可能な)誰かによって買収取得した場合であることは、法的? このようなものをすべて説明する初心者ガイドがあります。これは、この種のものを今すぐ使い始めて、後で変更する必要があるからです。アイコンを購入しても、ライセンスに関する問題がまだ理解できないままです!:( そして、この種のものはますます頻繁にポップアップし続けます...
28 licensing 

10
連絡先帳などの単純なWebサイトのプログラミングに適した(ニート)アーキテクチャは何ですか?
単純なWebサイト、たとえば連絡先を追加、削除、更新できる連絡先帳を作成するindex.phpとき、ユーザーがログインしていない場合はパスワードを入力し、正しいパスワードを入力した場合はユーザーに入力するファイルを作成しますセッションを割り当て、連絡先と特定のことを行うことができます。 2つのファイルがあります。 最初の(contacts.php)はHTMLコードを表示するためのものです。HTMLコードの上に、2番目のファイルを含めてクラスを作成します。 2番目(contacts_class.php)には、追加、削除、および更新のためのすべてのメソッドが含まれています。 大丈夫だと思いますが、大きなプロジェクトを実装する場合、どうすればいいですか?すべてのページにフォルダーを作成し、それらにファイルを配置する必要がありますか(上記、HTML、クラスなど)、どうすればよいですか?他のすべてのプログラマーが完全に理解するような大規模プロジェクトを構築するのに適した、きちんとしたアーキテクチャとは何ですか?

13
プログラマーが宝くじに当たった場合、会社が水中に進まないようにする方法[非公開]
私の下には数人のプログラマーがいますが、彼らはすべて非常に優れており、明らかに賢明です。どうもありがとうございました。 しかし、問題は、それらの各自が1つのコア領域を担当していることです。チームの他の誰も、それが何であるかについて最も曖昧な考えを持っていません。これは、それらのいずれかが取り出された場合、それらは交換できないため、ビジネスとしての私の会社は死んでいることを意味します。 彼らがバスに遭ったり、辞任したりする場合に備えて、新しいプログラマを招いて彼らをカバーすることを考えています。しかし、私はそれを恐れています 古いプログラマーは、バックアップによって価値が低下するのではないかと恐れて、知識移転の考えに積極的に抵抗するかもしれません。 異なる開発者間の技術移転を促進するシステムがないので、たとえ彼らにそれを行うように頼んだとしても、彼らがそれを適切に行うという保証はありません。 私の質問は、 彼らが同意するような古いプログラマーにそれを置く方法 この種の「バックアップ」を容易にするために使用するシステムは何ですか?コードレビューができることは理解できますが、これを行う簡単な方法はありますか?チェックインコードレビューによる本格的なチェックインの準備ができていないと思います。

5
開発者としてのスキルを活用してコミュニティ/慈善団体に還元する方法[非公開]
最近、GiveCampというコミュニティイベントに出会いました。 GiveCampは、デザイナー、開発者、データベース管理者からマーケティング担当者、Webストラテジストまで、技術専門家が非営利組織にソリューションを提供するために時間を寄付する週末のイベントです。2007年の開始以来、GiveCampプログラムは150以上の慈善団体に利益を提供しており、開発者と設計者の価値はサービスで1,000,000ドルを超えています。 このようなチャリティーイベントの大きな機会がある国の非常に農村部から来て、私は不思議に思いました。GiveCampのような他の大きな動きはありますか?GiveCampはMicrosoftが後援しているため、ほとんどの場合、.NETユーザーグループを介して実行されます。他のフレーバーはありますか?他の種類?Java / Python /他のオープンソースの慈善運動?そうでない場合、どのように還元しますか?
28 skills 

14
「理論家」プログラマーになることを避ける
私はこの記事をSOに関するいくつかの投稿で見つけました。私は自分が6番目の原型に陥ることに気づきました。「理論家」。 「理論家」を次のように定義します。 理論家は、プログラミングについて知っておくべきことをすべて知っています。あいまいなプログラミング言語の歴史について講義したり、作成したコードが完全に最適ではないことの証明を提供したり、実行するのに3ナノ秒かかることがあります。問題は、理論家はソフトウェア開発に関することを知らないことです。理論家がコードを書くとき、それは非常に「エレガント」であるため、単なる人間はそれを理解できません。彼または彼女のお気に入りの手法は再帰であり、コードのすべてのブロックは、適時性と読みやすさを犠牲にして最大限に調整されます。 理論家も気が散りやすい。理論家は既存のツールでは不十分であり、新しいツールを作成して新しいライブラリを作成し、高い基準を満たすまったく新しいシステムを作成する必要があると判断するため、1時間かかる単純なタスクには3か月かかります。理論家は、プロジェクト自体の境界内でプレイして、究極の並べ替えアルゴリズムの作業に時間を費やすのをやめることができれば、最高のプレイヤーの1人になります。 単純なプロジェクトであるべきものに取り組んでいるときでさえ、私はすべてをゼロからやり直そうとすることで動揺する傾向があります(これはおそらく、私がゼロからオペレーティングシステムを作ろうとして約2年を無駄にした理由です。最終的に無意味だった)。 これを避けるのに何が役立ちますか?そしてKISSの原則に固執しますか? ありがとう

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