ソフトウェア工学

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

7
データベースのリレーショナルモデルが重要なのはなぜですか?
上司と一緒にデータベースを実装する必要があるプロジェクトに近づいています。私たちは非常に小さな新興企業なので、職場環境は非常に個人的なものです。 彼は以前に私に会社のデータベースの1つを与えてくれましたが、RDBMSの学校で教えられた(そして読んだ)ものに完全に反しました。たとえば、ここには1つのテーブルで構成されるデータベース全体があります(独立したデータベースごとに)。これらのテーブルの1つは20列以上の長さであり、コンテキストのために、1つのテーブルの列名の一部を次に示します。 lngStoreID | vrStoreName | lngCompanyID | vrCompanyName | lngProductID | vrProductName ポイントは、エンティティデータ(名前、サイズ、購入日など)を保持する個々のテーブルが必要な場所であり、データベースごとにすべてを1つの大きなテーブルに押し込みます。 この設計を改善したいのですが、適切に正規化されセグメント化されたデータモデルが実際にこの製品を改善する理由がわかりません。私は大学のデータベース設計に精通しており、その方法を理解していますが、これが実際にデータベースを改善する理由はわかりません。 優れたリレーショナルスキーマがデータベースを改善するのはなぜですか?

8
開発者からの機密データの保護
MySQLとMongoDBの両方のデータストアを使用するエンタープライズアプリケーションを実行しています。私の開発チームはすべて、アプリケーションのリリース、メンテナンスなどを実行するために、マシンへのSSHアクセスを持っています。 ユーザーがアプリケーションに非常に機密性の高いデータを保存し始めたときに、開発者がこのデータに間接的にアクセスしているために嵐が発生したため、最近ビジネスでリスクを提起しました。アクセス可能。 私には、アプリケーションがデータベースにアクセスできる場合、マシンとアプリケーションソースにアクセスできる開発者は常にデータにアクセスできるため、これは不可能に思えます。

10
データベースインデックスを追加するのは時期尚早な最適化ですか?
今日の私の同僚は、アプリケーションのすべてのクエリを調べ、それに応じてインデックスを追加することを提案しました。 私たちのアプリケーションはまだリリースされていないため、これは時期尚早な最適化だと思います。ライブになったら遅いクエリを監視し、それに応じてインデックスを追加することをお勧めします。 データベースを設計する際の一般的なコンセンサスは何ですか?新しいクエリを作成するたびに一致するインデックスを追加する必要がありますか?それとも、それがどのように進行するかを監視して確認する方が良いでしょうか?

5
HATEOASは、URL構造を多かれ少なかれ自由に変更する能力のほか、発見可能性と分離のために何を提供しますか?
最近、アプリケーション状態のエンジン(HATEOAS)としてのハイパーメディアについて読んでいます。これは、Web APIを「真にRESTful」とする制約です。基本的に、現在の状態から可能な遷移へのすべての応答にリンクを含めることになります。 HATEOASが私の理解に基づいていることを説明させてください。何かを見逃した場合は、訂正してください。 / GET: { "_links": { "child": [ { "href": "http://myapi.com/articles", "title": "articles" } ] } } /articles?contains=HATEOAS GET: { "_items": [ { "uri": "http://myapi.com/articles/0", "title": "Why Should I Care About HATEOAS?" }, { "uri": "http://myapi.com/articles/1", "title": "HATEOAS: Problem or Solution?" } ], "_links": { "self": { "href": …
61 rest  http  hateoas 

9
あなたとあなたのチームが日々取り組んでいることをどのように追跡しますか?
私は自分自身とチームの人々が実際に毎日何をしているかを追跡する方法に苦労しています。完成したカードを毎週調べることで良い全体像が得られ、スタンドアップは少し助けになりますが、チームの日々の仕事をうまく扱えないと感じています。カードは毎日のスタンドアップで更新されることなく何日間も進行し続けます。一部のエンジニアは、私のチームは最もコミュニケーションが取れていません。 メーリングリストまたは共有のgoogleドキュメントを介してすべての人が記入する何らかの日次記録を実装することを考えましたが、これはかなり面倒で手作業のようです。 GitHubアクティビティを監視することは問題ありませんが、毎日送信する電子メールの数に少し圧倒される場合があります。私はそれのためにダイジェストシステムを構築しようと考えましたが、余裕がある時間はありません。 「進行中」のタスクの作業を測定できるように、チームが毎日行っていることを常に把握するためにどのような戦略を実施しましたか?

6
Javaとは異なり、「new」および「virtual + override」キーワードでC#が作成されたのはなぜですか?
Javaではノーがあるvirtual、new、overrideメソッド定義のキーワード。したがって、メソッドの動作は理解しやすいです。場合原因DerivedClassが延びBaseClassのを、同じ名前と同じシグネチャを持つ方法有するBaseClassのその後ランタイム多形で行われるオーバーライドが(メソッドではない提供しますstatic)。 BaseClass bcdc = new DerivedClass(); bcdc.doSomething() // will invoke DerivedClass's doSomething method. C#に来ると、非常に多くの混乱が発生し、newor virtual+deriveまたはnew + virtualオーバーライドがどのように機能するかを理解するのが難しくなります。 なぜ世界DerivedClassで同じ名前と同じシグネチャを持つメソッドを追加しBaseClass、新しい動作を定義するのかを理解することはできませんが、実行時のポリモーフィズムでは、BaseClassメソッドが呼び出されます!(これはオーバーライドではありませんが、論理的にはそうする必要があります)。 以下の場合にはvirtual + override論理的な実装が正しいですが、プログラマが、彼はコーディングの際に上書きするようにユーザーに権限を与えるべき方法だと思うしなければならないのに。これには賛否両論があります(今は行かないでください)。 それで、なぜC#には非論理的な推論と混乱のためのスペースがあるのか。それで、どの現実世界の文脈で、代わりに使用するか、またvirtual + override代わりに使用することを考えるべきかという質問を再構成できますか?newnewvirtual + override 特にOmarからの非常に良い回答の後に、C#デザイナーはメソッドを作成する前にプログラマが考える必要があることについてより多くのストレスを与えたと思います。 今、私は質問を念頭に置いています。Javaのように、次のようなコードがあった場合 Vehicle vehicle = new Car(); vehicle.accelerate(); 後で新しいクラスをSpaceShip派生させVehicleます。次にcar、すべてをSpaceShipオブジェクトに変更したいので、1行のコードを変更するだけです Vehicle vehicle = new SpaceShip(); vehicle.accelerate(); これは、コードのどのポイントでも私のロジックを壊しません。 しかし、C#の場合、if SpaceShipがVehicleクラスをオーバーライドせずにaccelerate使用するnewと、コードのロジックが壊れます。それは不利ではないですか?

9
IDEなしでどのようにデバッグしますか?[閉まっている]
IDE(現在はGoをいじっています)を探すたびに、Vi、Emacs、Notepad ++などを推奨する人でいっぱいのスレッドが見つかります。 IDE以外で開発を行ったことはありません。私は甘やかされてきたと思います。IDEなしでどのようにデバッグしますか?ロギングのみに制限されていますか?
61 ide  debugging 

7
私は私の会社の.1xプログラマーです。どうすれば最高の貢献ができますか?[閉まっている]
私は5人の新しく造られたスタートアップで働いています。機械学習の博士号、RSpecコアチームの元メンバー、およびOS X用のGitバイナリをコンパイルする人がいます。これは単なる従業員です。創業者は博士号を持ち、数十億ドル規模の企業のCTOを務めてから(成功した)スタートアップを開始し、現在はこのスタートアップを開始しています。また、数学の博士号を持つ男を得るかもしれません。 ああ、それから私は大学中退のインターンです。私はかなり頭が良く、ノンストップで読んでいると思いますが、私と同僚の間の経験、スキル、知識の差は息をのむほどです。 だから彼らの靴に身を置く:あなたは学ぶことがたくさんあるが、少なくとも元気な明るい若いインターンを持っています。何が迷惑でしょうか?ここで、そして今、彼から何の役に立つと思いますか?それが起こったら、何が嬉しい驚きでしょうか?


14
「非表示のIT」を禁止または制御するアドホックソフトウェアアプリケーションを作成および保守する必要があるのは誰ですか?
大企業は通常、問題を抱えています。スタッフとお金が足りないため、従業員が望むすべてのプログラムを(時間を節約し、プロセスを最適化するために)書くことは不可能です。 その後、(少なくとも一部の)コーディング経験を持つ一部の人々(または安価な学生/インターン...)によって隠されたプログラムが作成されます。状況によっては、これらのアプリケーションの重要性が高まり、1人のユーザーから部門全体に広がります。 次に、重要なポイントがあります:アプリケーションを保守し、新しい機能を追加するのは誰ですか?そして、このアプリは重要です。それが必要とされています。しかし、インターンは会社を辞めました。それがどのように機能するかは誰にもわかりません。たくさんのソースとある種のドキュメントしかありません。 IT部門の外でアドホックに行われるアプリケーション開発(Excelマクロなどのマイナーなものを除く)を試行または制御または禁止することは理にかなっていますか?

16
開発中に開発仕様が変更されないようにする方法
問題:私が関与するほとんどすべての開発努力で、開発を開始する前に計画にどれだけ時間がかかっても、プロジェクトの途中またはプロジェクトの終わりに向かって大量の変更が常に必要と思われます。これらは時々大きな変更であり、多くの再開発が必要です。 私はお金を払っているクライアントのために働いていません。これは社内開発ウェブサイトの社内開発チームです。だから、私はそれまたは何かのために充電できるようではありません。そして、一日の終わりには、締め切りに間に合わなければなりません。 質問:仕様の変更が途中または開発後に発生するのを最小限に抑え、防止するために皆さんが見つけた最良の方法は何ですか?

8
チームプロジェクトでの「スマートガイ」症候群の回避
多くの悪い慣行がプロジェクトの開始時にコミットされていたので、私はそれらを認識し、それらすべてと戦った。私は自分の戦いを選んでいないので、上司は口から出るものはすべて非常に複雑な反応であると想定し、プロジェクトの最善の利益を探すのではなく、自分自身を守ることに多くの時間を費やしています。 全員が合意に達するまで4か月待たずに、または困難な全知としてのチームの評判を傷つけることなく、チームを正しい方向に進めるにはどうすればよいですか?
61 teamwork 

5
プログラミング言語/プラットフォームで「ファーストクラスの市民」と見なされる機能はいつですか?
「この機能を言語/プラットフォームの第一級市民にしてください」のような声明を何度も見ました。たとえば、C#/。netの列挙型について言われています。それでは、いつ機能がプログラミング言語/プラットフォームで「ファーストクラスの市民」と見なされるのでしょうか。

6
これはDBスキーマを構造化するばかげた方法ですか、それとも完全に何か不足していますか?
私はリレーショナルデータベースでかなりの作業を行ってきましたが、優れたスキーマ設計の基本概念はかなりよく理解していると思います。私は最近、DBが高給コンサルタントによって設計されたプロジェクトを引き継ぐことを任されました。私の腸の本能-「WTF ??!?」-保証されていますか、それともこの男は私の天才であるかのような天才ですか? 問題のDBは、従業員からのリクエストを入力するために使用される社内アプリです。そのほんの一部を見るだけで、ユーザーに関する情報と、行われているリクエストに関する情報が得られます。私はこれを次のように設計します: ユーザー表: UserID (primary Key, indexed, no dupes) FirstName LastName Department リクエスト表 RequestID (primary Key, indexed, no dupes) <...> various data fields containing request details UserID -- foreign key associated with User table シンプルでしょ? コンサルタントは次のように設計しました(サンプルデータを使用)。 UsersTable UserID FirstName LastName 234 John Doe 516 Jane Doe 123 Foo Bar …
61 database  sql  schema 

11
プログラマーとして余分な現金を稼ぐ[終了]
私はフルタイムのプログラマーとして働いており、私が住んでいる国でかなり良い給料をもらっていますが、現時点では少し余分に現金を稼ぐことができます(妻が新しいキッチンなどについてしつこいです)。 空き時間に小さなプロジェクトを引き受けることに興味があります。マルウェアを作成したり、豊富なクイックスキームを取得することに興味はありません。フリーランスのプログラマーサイトをいくつかチェックしましたが、プロジェクトはすべて非常に低賃金であるか、マルウェアの作成を希望する人(またはその両方)であると考えています。 見逃したかもしれない良いフリーランスサイトはありますか? 小さなフリーランスのプロジェクトを見つける他の方法はありますか?
61 project 

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