ソフトウェア工学

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

8
IDEでバックグラウンドのコンパイル/ビルドが行われないのはなぜですか?
今日、私はかなり複雑なコンピューターで開発しています。複数のコア、SSDドライブなどがあります。それでも、私がコンピューターをプログラミングしているほとんどの時間は喜んで何もしていません。せいぜいやや複雑なプロジェクトをコンパイルして実行/デプロイする必要がある場合でも、数秒かかります。どうして?私たちは「インスタントエイジ」の時代にどんどん住んでいるのに、どうしてVisual StudioでF5キーを押して、すぐにアプリケーションを起動/展開できないのでしょうか。 数秒はそれほど悪くないように聞こえるかもしれませんが、それでも認知的な摩擦と時間が加算され、率直に言ってプログラミングが楽しくなりません。それでは、どのようにコンパイルを瞬時に行うことができますか? さて、人々は異なるアセンブリのファイルを編集する傾向があります。VisualStudio / IDEが適切な場合はいつでも私が修正したすべてのもののコンパイル/ビルドを絶えず行っていたらどうでしょうか。本当に高度なものにしたい場合は、クラスごとのコンパイルを行うことができます。コンパイルは動作しないかもしれませんが、何もせずに何もしません(エラーウィンドウにエラーメッセージを追加する場合を除く)。 確かに今日のコンピューターはこのタスクに1つまたは2つのコアを割り当て、誰かがそれをうんざりさせたら、オプションで無効にすることができます。シームレスで実用的であるためには、おそらく1,000の技術的な問題と、いくつかの派手なシャドウコピーを解決する必要があることを知っていますが、プログラミングがよりシームレスになることは確かです。 このシナリオが不可能な実用的な理由はありますか?継続的にバイナリを作成することによる損耗は多すぎるでしょうか?展開/実行するまでアセンブリをメモリに保持できませんでしたか?

7
プログラマーではない人(デザイナー)がバージョン管理を簡単に使用できるようにしますか?
開発中、Web開発中などでバージョン管理を使用してチームを関与させるための重要な方法は何ですか? 私はそれなしで仕事をすることを拒否します。つまり、プロジェクトに関わるすべての人もそれを使わなければなりません。それはちょうど良い習慣です。 TowerのようなGUIは役立ちましたが、そのコンセプトは怒り(「私の仕事じゃない!」という態度)、ti病、またはまっすぐにそれを使用しない(FTPを使用する、開発や展開などのバージョン管理を回避する) )。 編集:画像/ PSDを意味するだけではないことを少し明確にすべきでした。

13
SQL開発者は、SQLクエリデザイナーを使用してSQLクエリを作成しますか?
SQL Devがフリーハンドでコードを記述したり、ビジュアルクエリデザイナを使用してクエリを生成したりするかどうかに興味がありました。ほとんどの場合、クエリデザイナーは複雑でないクエリのほとんどを作成できますか?(私は今、SQL Serverを使い始めたばかりのWinForms開発者です)
13 sql  sql-server 

7
リソースが限られているTDD
私は大企業で働いていますが、デスクトップLOBアプリケーションを開発するたった2人のチームです。私はかなり長い間TDDを研究してきましたが、大規模なアプリケーションでその利点を実現するのは簡単ですが、アプリケーションの規模でTDDの使用を開始する時間を正当化するのは困難です。 テストの自動化、保守性の向上などの利点を理解していますが、私たちの規模では、すべてのコンポーネントの基本的な単体テストでさえ、開発時間を簡単に倍増できます。私たちはすでに極端な締め切りに恵まれていないため、どの方向に進むべきかわかりません。それ以来、アジャイルな反復開発などの他のプラクティスが完璧になりますが、小さなチームでのTDDの生産性のトレードオフにやや引き裂かれています。 TDDの利点は、非常に厳しいスケジュールの小さなチームでの余分な開発時間に値するでしょうか?
13 tdd 

3
コミット後のコードレビューを容易にするためにどのツールを使用できますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 多くのコードレビューツール(ほとんどが無料のもの)を評価していますが、それらはすべて、コミットする前にパッチをレビューすることを目的としているようです。これはSubversionのワークフローに実際には収まらないため、差分ではなくコミットされたリビジョンのレビューをより適切にサポートする代替手段を探していました。推奨事項はありますか?私は無料または安価なツールを好むでしょう。

11
コードの匂いがするときはどうすればよいですか?
私は初心者プログラマーであり、自分のプロジェクトに取り組んでいるときは、自分のコードの設計が最善ではないという感覚を常に感じます。この感覚は嫌いです。物事を調べるのに時間を費やすことになりますが、その後、選択するデザインパターンや抽象クラスまたはインターフェイスを使用するタイミングなど、多くの詳細に簡単に圧倒されます。一度にすべてのことを少し学習しようとするのですか?

5
合法的にクライアントに請求する内容[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は固定価格の仕事について話しているのではなく、かなり簡単です。しかし、私は1時間ごとの料金のプロジェクトに取り組んでいます。私の質問は具体的に何に課金するかに関するものです。 IE / CSSの問題があり、修正にCSSを精査するのに1時間かかる場合、それは有料ですか?彼らのサイトで本当にクールなjQueryアニメーションを使用することに決めたが、それを使用するのに慣れる必要がある場合、アニメーションの実験のためにそれらを請求する必要があります。 顧客が求めていること、知らないこと、したがって学習に時間を費やす必要があることに対して顧客に請求しますか? 私が懸念している限り、それは灰色の領域であり、引用符で明確に説明されていません(おそらく、多くのクライアントがあなたのねじ込み/学習に喜んでお金を払わないからです)。 これについてのコンセンサスは何ですか?

3
ライセンスのないソフトウェアの取り扱い方法
私はDoD契約で別のフォーチュン500企業に下請けされている非常に大きなフォーチュン500企業で働いています。あなたが推測できるように、赤テープは何をするにも途方もないです。 他の誰かのMSDNサブスクリプションからMicrosoft開発ツールをロードしたVMを共有しただけです。MSDNライセンスに疑問を投げかけたときは、常に作業中であると言われました。これはもう一年以上続いています。 また、30日間の試用版を使用している他の製品も使用しています。1人の開発者が30日間の試用期間を無限に延長するエクスプロイトを見つけました。このアプローチは、ライセンスが「機能する」間、当社の経営陣によって奨励されています。 私はこのプログラムについて4レベルのマネージャーに連絡しました。1年以上の間に具体的な行動はありません。 私は何をすべきか?マイクロソフトおよびその他の適切なソフトウェアベンダーに報告してください。企業倫理ホットラインに連絡しますか?STFUとフローを使用しますか? ありがとう
13 licensing  ethics 

3
ライセンスの質問、所有者が亡くなったときにソースコードの一部に何が起こるか
私は自分のプロジェクトの1つで無料のソースコードを使用しています。ソースコードは1990年代に作成されたものであり、コードを自由に変更および配布できるWebサイトから入手できます。ソースファイルにはライセンスの表示は含まれていませんが、「著作権はすべての権利を保有しています」というコメントがあります。私のプロジェクトはGNU General Public Licenseの下で公開されているため、今朝、ライセンスの問題が発生する可能性があることに気付き始めました。そのため、ソースコードの所有者に連絡しようとしました。残念ながら、所有者は亡くなり、彼の会社は仕事をやめました。 ソースコードはどうなりますか、その著作権は有効ですか、所有者はいますか?

5
グローバル変数を使用したい場合、上司に言うこと
現在、私はインターンシップに4か月あります。コードをレビューするとき、上司は特定のオブジェクトを1つのアセンブリ内のいくつかの別個のクラスの多くのメソッドに対してローカルに保持していたことを嫌いました。彼は、私が毎回新しいオブジェクトを作成することを嫌い、代わりにどこからでもアクセスできる単一のオブジェクトを作成するように言った。したがって、静的クラス内で静的オブジェクトとして作成し、ここから参照するだけで使用する必要がありました。 私はプロとして4か月しかプログラミングしていないので、これにどう対処しますか?

6
私に何ができる?どのように反応しますか?助けて![閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 私は遅れをとっているソフトウェアチームをリードしようとしています。主な問題の1つは、何かがやや困難なときはいつでも、自分でそれを割り当てなければならないことです。私には、適度なスキルとインターンの半分の開発者が1人いました。残念ながら、他の開発者のスキルにはデザインは含まれていません。 だから私は、他のチームの1人に上司に頼みました。彼はここ(5年)よりも長く働いています。彼はデザインや私たちが使用する言語で私と競争することはできませんが、私は彼が私以外で最も有能だと思いました。 今日、彼は私に少しでも似ていない何かをするコードをくれました: object const& my_class::get_object() const { return *std::unique_ptr<object>(new object()); } 彼はそれが問題なのかと私に尋ねました!私が考えることができる唯一のこと、「はい。それは問題です」と言いました。その後、彼は私の机に来て、それを修正する方法を尋ねます!! 「関数の呼び出しに耐えるオブジェクトを使用してください」と言いました。それから彼は「ええ、でも、メンバー変数を作成することしか考えられない」とおかしくなり始めます。 私はこの時点で少し忙しかったので、チームの他の男がそれを理解できなかったので、彼がそれを理解することができなかったため、私はすでに余分な仕事を詰め込もうとしていた...忙しかったので、自分で調べに行きました。その後、彼は物事を台無しにした場合、それは彼のせいではない方法について話し合います。彼はチームに来てからおかしくなり続けていて、良くなっているとは思いません。 ここでdrれているような気がします。WTHはできますか?それに対処する正しい方法は何でしたか?7年間C ++を書いてきたこの人が、返された瞬間に破壊されないオブジェクトへの参照を正しく返す方法を見つけ出すのを手伝うほうが合理的だっただろうか?私はそれをやらなければならないのはばかげていると感じて、どうすればそれをどうやってやるのだろうと思っています。 時々、彼らは意図的にそれをやっていると思うが、それはただ強打しているように思える...しかし、それから、今日私がちょうど尋ねられた質問もそうだ。これは、家に座って彼の最初のプログラムを見つけようとして、ポインターで脳を吹き飛ばす子供ではありません。


5
プロジェクトを初めて使用するときに基本的な設計上の欠陥に対処する[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 約30人の開発者が参加するオープンソースプロジェクトに取り組み始めたばかりです。「ループ」に入り、プロジェクトの定期的なコミッターになる方法として、いくつかのバグの修正に取り組んでいます。問題は、私が取り組んでいるバグの1つを引き起こしている基本的な設計上の欠陥を発見したと思うことです。しかし、メーリングリストでこれをas慢にすると慢になると思います。この問題についての議論のいくつかは、一部の人々と首を突っ込んでいます。これについてどうすればいいですか?

7
開発アプローチ:ユーザーインターフェイスインまたはドメインモデルアウト?
Smalltalkを使って何も配信したことはありませんが、Smalltalkで遊んだ短い時間は間違いなくその価値を残しました。エクスペリエンスを記述する唯一の方法は、本来の方法であるMVCです。基本的に、アプリケーションのすべての面倒な作業は、ビジネスオブジェクト(または、その傾向がある場合はドメインモデル)で行われます。標準コントロールは、何らかの方法でビジネスオブジェクトにバインドされます。たとえば、テキストボックスはオブジェクトのフィールドにマップされます(フィールド自体はオブジェクトなので、簡単に実行できます)。ボタンはメソッドにマップされます。これはすべて非常にシンプルで自然なAPIで行われます。オブジェクトのバインドなどについて考える必要はありません。それは機能します。 しかし、多くの新しい言語とAPIでは、外部から考えることを余儀なくされています。最初はC ++とMFCで、そして今はC#とWPFで、Microsoftはイベントハンドラーを実装してアプリケーションを構築するGUIビルダーに夢中になりました。Java Swingの開発もそれほど変わっていません。自分でフォームのコントロールをインスタンス化するコードを書いているのはあなただけです。一部のプロジェクトでは、ドメインモデルさえ存在しない場合があります-イベントハンドラーだけです。私はほとんどのキャリアのためにこのモデルの中とその周りにいました。 それぞれの方法で、あなたは違った考え方を強いられます。Smalltalkアプローチでは、GUIが愚かである間、ドメインはスマートです。デフォルトのVisualStudioアプローチでは、GUIはスマートですが、ドメインモデル(存在する場合)はかなり貧弱です。 私が仕事をしている多くの開発者は、Smalltalkアプローチに価値を見出し、そのアプローチをVisualStudio環境に押し付けようとします。WPFには、それを可能にするいくつかの動的バインディング機能があります。しかし、制限があります。ドメインモデルに属するコードの一部は、必然的にGUIクラスになります。 では、どのようにコードを設計/開発しますか?どうして? 最初にGUI。ユーザーとの対話が最も重要です。 最初にドメイン。UIを配置する前に、システムが正しいことを確認する必要があります。 どちらのアプローチにも長所と短所があります。ドメインモデルは、クリスタルの大聖堂と空のパイでそこに収まります。GUIは迅速かつ汚い(時には本当に汚い)状態で収まります。 さらにボーナスがあります:コードが保守可能であることをどのように確認しますか?

5
依存性注入とパブリックAPIデザインのバランス
私は、依存性注入を使用したテスト可能な設計と、単純な固定パブリックAPIの提供とのバランスを取る方法を検討してきました。私のジレンマは次のとおりです。人々はvar server = new Server(){ ... }多くの依存関係や依存関係のグラフを作成することについて心配する必要はなく、何かをしたいと思うでしょうServer(,,,,,,)。開発中は、IoC / DIフレームワークを使用してすべてを処理するため、あまり心配する必要はありません(コンテナのライフサイクル管理の側面を使用していないため、さらに複雑になります)。 現在、依存関係が再実装されることはほとんどありません。この場合のコンポーネント化は、拡張などの継ぎ目を作成するのではなく、ほとんど純粋にテスト容易性(および適切な設計!)のためです。99.999%の人は、デフォルト構成を使用したいと思うでしょう。そう。依存関係をハードコーディングできました。それをしたくない、テストを失う!ハードコードされた依存関係と依存関係を取得するデフォルトのコンストラクターを提供できます。それは...乱雑で、混乱を招く可能性がありますが、実行可能です。依存関係を受け取るコンストラクタを内部に作成し、ユニットテストでフレンドアセンブリ(C#を想定)を作成できます。これにより、パブリックAPIは整頓されますが、メンテナンスのために厄介な隠されたトラップが残ります。私の本では、明示的にではなく暗黙的に接続された2つのコンストラクターが一般的に悪い設計になります。 現時点では、私が考えることができる最小の悪についてです。ご意見?知恵?
13 c#  api 

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