ソフトウェア工学

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


7
スレッドを使用して人々を先送りにする間違ったアイデアは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 プログラムにスレッドを実装するのは難しいです。しかし、なぜそれが明らかに必要な場合でも、一部の人々がそれらを実装しないのはなぜですか。 例:プログラムはデータベースからデータセットをロードする必要があります。行うべきことは、接続を確立し、ワーカースレッドでデータベースからデータを取得してからGUIにロードし、GUIスレッドをユーザーに応答させることです。 。 しかし、いや、私はスレッドが邪悪で悪いものだと思っている人と話をしてきました。あるクラスのインストラクターがスレッドの使用に反対することを勧めたため、スレッドの使用をカバーしたくないと聞いたことがあります。何??? ハードウェアがマルチコアになると、スレッドをよりよく理解し、使用することを恐れないようにする必要があると思います。個人的には興味深いテーマだと思います。 スレッドについて聞いたことがあるのに、間違っていることは何ですか?

5
「エゴレスプログラミング」とは何ですか?
この言葉を聞いたのは約15年前です。 私の理解は、ウィキペディアの記事やTechRepublicの記事で説明されているものと似ています。「友好的で、個人的な感情を脇に置いて、同僚と一緒に」仕事をします。相互に敬意を払ってピアレビューを行い、学習したいという欲求を含み、コードを「所有」していると感じないため、誰かがバグを提案したり、バグを修正したり変更する必要があると言ったとしても、あなたはそれについて弁明しませんそれ。 また、コードを改善することを目標に、他のプログラマーと良好な関係を築く態度を持つことが主な目的だと考えました。だから私はそれがあなたの仕事の質に誇りを持っているとか、あなたがしたことがあなたの顧客に問題を引き起こした場合に後悔を感じると両立しないとは見ていません。 しかし、最近の質問に対する答えから、他のプログラマの中には「エゴレスプログラミング」について異なる理解を持っていると思うようになります。では、正しい定義は何ですか?そして、その意味は何ですか?

8
リレーショナルデータベースでシングルトンをモデル化する最良の方法
Webアプリケーション用のリレーショナルデータベーススキーマを設計するとき、1つの行と1つの行のみを含むテーブルを作成する場合がよくあります。それはそれを設計する間違った方法のように感じますが、私は大幅に良いものを思い付くことができません、またはそれは明らかに「それを行うための正しい方法」です。 最近の例は、ユーザーがホームページのコンテンツを手動で制御できるサイトです。さて、ホームページは1つしかありません。説明テキストを含む領域のテキストフィールドなど、ホームページを作成するために必要なすべてのフィールドを持つテーブルを作成しました。大きな画像ファイルの名前を保存するフィールド。ホームページなどで紹介される記事を指すいくつかの外部キー。それは機能しますが、1行だけのテーブルがあるのは間違っているように感じます。 過去に、ホームページのテーブルで複数の行を許可したり、ランダムに1つの行を選択するなど、他の多くのデザインを試しました。「active」という名前のブールフィールドを追加して、アクティブなホームページの1つをランダムに選択しようとしました。アプリケーションロジックで、常に1行のみをアクティブにしようとしました。ホームページテーブルを作成せず、記事などの他のすべてのアイテムにfeatured_on_homepageのような名前のブールフィールドを持たせることさえしませんでした。 ほとんどの場合、設定ファイルに一連の定数を含むホームページを作成できます。設定ファイルの主な問題は、開発者が制御できることです。ホームページの内容のようなものはユーザーが編集するものなので、データベースに入れなければなりません。 多くのサイトでは、5つの最新記事を選択するなどのクエリを使用してホームページのようなものを作成できるため、この問題はありません。しかし、厳密な要件で手動でキュレーションされたページがある場合、データベースでモデル化するのは難しいです。しかし、写真の表と記事の表があるとします。要件は、ホームページにユーザーが手動で制御する写真を正確に5つ、記事を3つ、任意のテキストのブロックを2つ表示することです。データベースでそれを正しい方法でどのようにモデル化しますか? また、ホームページだけでなく、他の多くのケースでもこのモデリングの問題があります。これは、私が思いつく最も簡単で最も一般的に適用可能な例です。

10
開発者主導の製品は良いことですか?
私は、CEOが製品チームを管理している会社で働いています。CEOは、機能をモックアップし、開発者のラップをドロップして、その機能を実装します。もちろんいくつかの反復がありますが、開発者の意見は尊重されます。しかし、このプロセスはどれほど効果があるのだろうか。 ジェイソン・カラカニスは次のように書いた。 Zuckerberg Doctrine:開発者は、製品マネージャーや設計者と比較して速度と機能が大幅に向上した製品を設計し、潜在的な間違いや欠点を上回ります。 ... それから私は本当に衝撃を受けました:開発者主導のスタートアップは常に製品をより速く生産します。 これは理にかなっています。技術者ではない人々が議論や議論をしており、Zuckerbergが次の機能をコーディングしています。これが、誰もFacebookに追いつくことができなかった理由です! MySpacersは自社の製品を反復する方法について議論していましたが、Facebookは単に試してみました。 これは実際には実際にうまく機能しますか?

3
Visual Studioは単なるIDEですか?
つまり、Windows開発の場合です。 他の質問を見ると、VSに代わるものがありますが、それらはWebベースのものであるように見えます。それは問題ありません。 しかし、Windows開発用のIDEだけではありませんか?IEメモ帳だけでアプリケーションを作成することは可能ですか、コンパイラはVisual Studioの一部ですか、それともコマンドラインなどから呼び出すことができますか? 私はVSを使用したくない、私はそれに満足している、私が必要なことなどをしているなど、ちょうど私が興味を持っているファセットです。

3
構成管理とは何ですか?
私が関与したすべてのプロジェクトで、外部コンサルタントからの意見がありました。どのような構成管理を使用しているかについて質問されました。これらのいずれの場合でも、コンサルタントは構成管理を定義できませんでした。それで何ですか?

4
新しいJava永続化ツールについてどう思いますか。それは実際にはORMではありませんか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Javaでの永続性 過去数年にわたって、EJB 2.0、Hibernate、JPA、および自家製の概念などを使用して、Javaの永続性抽象化の分野での経験を集めてきました。彼らは、急な学習曲線と多くの複雑さを持っているように思えました。さらに、SQLの大ファンとして、多くの抽象化モデルがSQLを抽象化しすぎて、SQLではなく非常に優れた概念である「基準」、「述語」、「制限」などの概念を作成すると考えました。 Javaでの永続性抽象化の一般的な考え方は、RDBMSがオブジェクト指向の世界と何らかの形で一致するオブジェクトリレーショナルモデルに基づいているようです。ORM討論は常に感情的なものでした。すべての人に適した単一の解決策は存在しないようです。そのような解決策が存在する可能性があるとしてもです。 jOOQ ORM関連の問題を回避する方法の個人的な好みは、リレーショナルの世界に固執することです。データモデルのパラダイムの選択は、個人的な好みであるため、または具体的な問題に最適なデータモデルの問題であるため、議論のトピックではありません。私が始めたいと思う議論は、jOOQと呼ばれる私自身の永続化ツールに関するものです。私はjOOQを設計して、最新の永続化ツールが持つ利点のほとんどを提供します。 SQLに基づくドメイン固有言語 基礎となるデータベーススキーマをJavaにマッピングするソースコード生成 多くのRDBMSのサポート いくつかの最新の永続化ツールにあるいくつかの機能を追加します(間違っている場合は修正してください): 複雑なSQLのサポート-ユニオン、ネストされた選択、自己結合、エイリアス、ケース節、算術式 非標準SQLのサポート-ストアドプロシージャ、UDT、ENUMS、ネイティブ関数、分析関数 詳細については、ドキュメントページhttp://www.jooq.org/learn.phpをご覧ください。LinqはSQL専用に設計されているわけではありませんが、Linq for C#に非常によく似たアプローチが実装されていることがわかります。 質問 さて、私はSQLの大ファンだと言って、他の開発者がjOOQ(またはLinq)に対する私の熱意を共有するかどうか疑問に思います。永続性抽象化へのこの種のアプローチは実行可能なものですか?あなたが見るかもしれない利点/欠点は何ですか?どうすればjOOQを改善できますか?また、あなたの意見には何が欠けていますか?概念的または実際的にどこで間違ったのですか? 批判的だが建設的な答えを高く評価 議論は感情的なものであることを理解しています。すでに同様のことを行う多くの素晴らしいツールがあります。私が興味を持っているのは重要ですが、あなた自身の経験や読んだ記事に基づいた建設的なフィードバックです。
12 java  orm  database  linq 

8
開発者にとってXMLはどれほど重要ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 すべての開発者がXMLを知っている必要がありますか?開発者にとってXMLはどれほど重要ですか?なにか提案を...
12 xml 

5
Scalaが他の言語よりもスケーラブルなのはなぜですか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け付けていません。 Scalaは、その名前に含まれている機能であるスケーラブルな言語として請求されます。 Scalaという名前は「スケーラブル」と「言語」のポートマントーであり、ユーザーの要求に応じて成長するように設計されていることを意味します。 Scalaのコンテキストで「スケーラブル」とはどういう意味ですか?何がScalaをJavaよりもスケーラブルにするのですか?

12
ドラッグアンドドロッププログラミング-飛びますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 私が知っているすべてのプログラミング言語は書かれています-つまり、何らかの方法でテキストの長さとして入力されます。しかし、プログラム全体をドラッグアンドドロップするだけのプログラミング言語はあるのでしょうか。ループを取得するには、ここでこのボックスを選択し、「コード」のそのセクションにドラッグします。そして、このようなものがなければ、それが発明されたら飛ぶでしょうか? 個人的に私はそれがそんなに良い考えだとは思わないが、あなたの考えを聞きたい。

5
複雑なソフトウェアはどの程度の冗長性/堅牢性を実装する必要がありますか?
この質問の焦点:一部のソフトウェアは「余分な作業」を実行して、ソフトウェア内の1つまたは複数の内部エラーにもかかわらず「最終的に成功/満足」の結果を得る機会を増やします。結果が成功した場合、これらはすべてユーザーの知らないうちに発生します。 複雑なソフトウェアの定義: 存続期間中に10人以上の開発者によって作成(提供)されたコードが含まれており、同じ時間枠で記述されていない それぞれに注意事項がある10以上の外部ライブラリに依存 典型的なソフトウェアタスク(ユーザーが望む結果を生成するため)には10個以上の入力パラメーターが必要です。それらのほとんどはデフォルト値を持ちますが、ユーザーが制御を必要とする場合は構成可能です。 最も重要なことは、実行されるタスクに関連して適切な複雑さを持つソフトウェア、つまり不必要に複雑にならないソフトウェアです。 編集:複雑なものは何ですか?ComplexとComplicatedには大きな違いがあります。をご覧ください。(直接リンク) この質問内の冗長性/堅牢性の定義:(コメントに基づいて堅牢性を追加) 現在のパラメーターセットを使用したときにソフトウェアタスクが失敗した場合は、別のパラメーターを試してください。 明らかに、これらの「異なる」パラメータは異なるコードパスを使用し、結果として異なる(できればより良い)結果をもたらす可能性があるという内部知識が必要です。 これらの異なるコードパスは、外部ライブラリの観察に基づいて選択される場合があります。 最後に、実行される実際のタスクがユーザーの仕様とわずかに異なる場合、ユーザーは不一致の詳細を示すレポートを受け取ります。 最後に、10以上の構成可能なパラメーターと同様に、冗長性とレポートも構成可能です。 そのようなソフトウェアの例: データベース移行 ビジネスデータベース ソース管理データベースなど Word文書とOpenOffice文書、PowerPointおよびOpenOffice Drawなどの間のバッチ変換 ウェブサイト全体の自動翻訳 Doxygenなどのソフトウェアパッケージの自動分析。ただし、分析をより信頼性の高いものにする必要がある場合(つまり、単なるドキュメンテーションツールではない) パケットが失われる可能性があり、多くの再試行が予想されるネットワーク通信 この質問はもともと、意図的に悪いコードにどのように対処しますか?しかし、現在はソフトウェアの肥大化の原因の1つに焦点を当てています。この質問は、新機能の追加など、ソフトウェアの膨張のその他の原因には対応していません。 おそらく関連する: (巨大な)プロジェクトで複雑なコードを処理する方法 人々はどのようにして非常に複雑で読みにくいコードを書いて維持するのですか?

8
ソフトウェアエンジニアが一定期間品質保証エンジニアとして働かなければならないのは良い考えだと思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 そうだと思います。どうして? 私は、QAエンジニアよりも優れていると信じている多くのソフトウェアエンジニアに出会いました。しばらくQAエンジニアの仕事をし、それが独自で価値のあるスキルセットであることに気付くと、この信念を癒すのに役立つと思います。 ソフトウェアエンジニアが自分のプログラムをテストする能力が高ければ高いほど、ソフトウェア開発ライフサイクルの残りの部分でコードを作成する際に発生する時間のコストが少なくなります。 ソフトウェアエンジニアがプログラムがどのように壊れるかを考える時間を長くすればするほど、これらのケースを開発中に考慮する頻度が高くなり、最終製品のバグが減少します。 ソフトウェアエンジニアの「完全な」定義は常に興味深いものです。QAエンジニアとして時間を費やしている場合、この定義はソフトウェアの設計者により密接に一致する可能性があります。 誰かが雇われているポジションではないポジションで働くことは間違いなくその開発者を失うためのレシピであると認識しているので、私は小さな時間枠を念頭に置いて上記の提案をします。 皆さんはどう思いますか?

5
コードで作業を行うよりもRDBMSに作業をオフロードする方が適切なのはいつですか?
さて、私はそれに対処します:私はデータベースよりも優れたコーダーであり、「ベストプラクティス」についての考えは、SQLクエリとSQLクエリで「単純な」計算を行うというテーマのどこにあるのだろうかと思っています。このMySQLの例のようなコード(私はそれを書いていません、私はそれを維持する必要があります!)-これはユーザー名と、最後のイベントの時点でのユーザーの年齢を返します。 SELECT u.username as user, IF ((DAY(max(e.date)) - DAY(u.DOB)) < 0 , TRUNCATE(((((YEAR(max(e.date))*12)+MONTH(max(e.date))) -((YEAR(u.DOB)*12)+MONTH(u.DOB)))-1)/12, 0), TRUNCATE((((YEAR(max(e.date))*12)+MONTH(max(e.date))) - ((YEAR(u.DOB)*12)+MONTH(u.DOB)))/12, 0)) AS age FROM users as u JOIN events as e ON u.id = e.uid ... コードで「重い」リフティングを行うことに比べて: クエリ: SELECT u.username, u.DOB as dob, e.event_date as edate FROM users as u JOIN events …
12 php  mysql 

18
ドキュメントなしで何千行ものコードを読むには?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 以前は、WPFプロジェクトに適したTimeLineコントロールを探していました。ここでこのCodePlexプロジェクトに導く答えを見つけました。 次に、文化のニーズを満たすためにコードを変更します。しかし、いくつかの不一致があります! 私の質問は: このような数千行のコードをどのように操作しますか? 編集: どんなショートカットも素晴らしいでしょう!

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