ソフトウェア工学

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

4
進行中のリファクタリングをコミットする方法は?
それで、私はこの大きなプロジェクトを持っています。それは私によってリファクタリングされるプロセスにあります。私は多くのものを変更しているので、すぐにコンパイルする機会はありません。私は名前を付けた特別なgitブランチに住んでいますcleanup(masterもちろん、最終的にはマージされます)。 問題は、非コンパイルコードをコミットしないというポリシーがあることです(理想的には動作するはずですが、少なくともコンパイルしてリンクする必要があります)。そのため、この巨大なタスクを完了するまで、何もコミットできません(レビューまたは簿記のため)。 これは私が仕事をするのが好きな方法ではありません(ほとんどの人が少なくとも1日に1回程度コミットしていると思います)。 どう思いますか?私が見落としている解決策はありますか? 後でコミットなどを集約するようにgitに指示できますか?ブランチに留まっている限り、コンパイルしないコミットで生きることができcleanupます。 編集 プッシュ/コミットの件名:私はそれが大きな違いであることを知っていますが、後で、私のものをにマージすると壊れたリビジョンがありますmaster。したがって、履歴を参照する(またはgit bisect...)場合、「ローカル」リビジョンは世界中からアクセス可能になります。したがって、ローカルでコミットするだけでプッシュするのは最善の解決策ではありません。それは後で問題が発生するからです(サブジェクトが閉じられ、しばらく忘れられた場合)。 要するに、ローカルコミットは最終的にプッシュされます。グローバル履歴には、コンパイルされていないコミットは表示されません。
23 git  refactoring 

7
LinuxコンピューターでiOSアプリを開発できない技術的な理由はありますか?
LinuxコンピューターでOS Xアプリを開発できない理由は理解していますが、LinuxでiPhoneおよびiPadアプリを開発できない技術的な理由はありますか?iOSソースコードをiOS実行可能ファイルにコンパイルし、LinuxのiOSシミュレーターで実行したり、開発iOSデバイスにインストールしたりできないのはなぜですか? XCode IDEがCocoaアプリケーションであるというだけの理由ですか? どんな種類のプラットフォームでもAndroidアプリを開発できるようです。同じことがiOSにも当てはまらない理由はわかりません。
23 ios  linux  xcode 

13
システムハンガリー記法はまだ有用な慣習ですか?[閉まっている]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 私はフォーラムを検索しましたが、なぜ回避すべきかという答えは見つかりませんでした。なぜそれが特効薬ではないのかだけです。ですから、この質問は重複しているとは思いません。 そこにあるVALIDに慣れて、私はシステムハンガリーIを捨て去る必要がある理由は? これまでのところ、私はそれを使用することで以下の利点を見ています: 一貫した変数の命名 検索せずにタイプが表示されます(インテリセンスは半分の時間でデッド/インデックス付けされているため、依然として正当な理由です) セマンティクスは名前の2番目の部分に引き続きパックできます そして、次のマイナス面: 一部の人々を困らせます(理由はわかりません) 型が変更された場合、その型は変数の名前と一致しない可能性があります(正当な理由ではないと思います。型はめったに変更されず、「すべての名前を変更」します) なぜ: vector<string> vecCityNames; wstring strCity = L"abc"; //more code here vecCityNames.push_back(strCity); より悪い: vector<string> cityNames; wstring city = L"abc"; //more code here cityNames.push_back(city);//Are we pushing back int on a queue? Float on a stack? Something else?
23 c++  naming 

7
Big OのOとは何ですか?
Big O表記のBigとOとは何ですか?私は定義を読みましたが、Oが「oh」と発音されていることはわかりません。たとえば、O(n)は線形アルゴリズムの複雑さであり、nは操作の数になる可能性があることを理解しています。しかし、Oとは何ですか?
23 complexity  big-o 

9
デリゲートとインターフェイス-さらに説明がありますか?
記事-インターフェイスの代わりにデリゲートを使用するタイミング(C#プログラミングガイド)を読んだ後 、以下の特定のポイントを理解するのに多少の助けが必要です。これらの例や詳細な説明はありますか? 次の場合にデリゲートを使用します。 イベンティングデザインパターンが使用されます。 静的メソッドをカプセル化することが望ましいです。 簡単な構成が望まれます。 クラスには、メソッドの複数の実装が必要な場合があります。 次の場合にインターフェースを使用します。 呼び出される可能性のある関連メソッドのグループがあります。 クラスには、メソッドの実装が1つだけ必要です。 私の質問は、 イベントデザインパターンとはどういう意味ですか? デリゲートを使用した場合、どのように構成が簡単になりますか? 呼び出される可能性のある関連メソッドのグループがある場合、インターフェースを使用します-それにはどんな利点がありますか? クラスがメソッドの実装を1つだけ必要とする場合、インターフェースを使用します。利点の点でそれはどのように正当化されますか?
23 c#  design  .net 

10
重要な非技術関係者に適切なプレゼンテーションを行うにはどうすればよいですか?
月末に、私が自分で取り組んでいるソフトウェアプロジェクトについてプレゼンテーションをしなければなりません。これは基本的に、私が一時的に雇っている会社でフルタイムの仕事を得るかどうかを決定します。今のところ。私の部門の社長と2人のVPにプレゼンテーションを行います。社長は他の2人のVPよりもプログラミングの知識が少なく、最終的に私が感心する必要がある人物です。 プレゼンテーションで伝える必要がある最も重要なことは何ですか?マネージャーから次のことを強調するように言われました。 私はこのプロジェクトを正しい方向に進めており、すべてを完全にコントロールしています。 私はこのプロジェクトを予定通り完了しています。 プレゼンテーション中に、他のどの点に焦点を当てて、自分を可能な限り雇用価値があるように見せるべきですか?ソフトウェアのリスクと不確実性を減らすために、設計レベルで行っている努力を強調することを考えています(私が想像する2つのことは、上級者にとって非常に重要です)。 私が特に心配していることの1つは、プレゼンテーションで技術的詳細と非技術的詳細の適切なバランスを見つけることです。技術的な詳細を含めない場合、部門の社長はソフトウェアに含まれる「内部」機能のすべてを知ることはできませんが、私が技術的すぎると、彼は迷子になり、理解できなくなる可能性がありますプレゼンテーションの重要なポイント。 任意のヒントをいただければ幸いです。

4
Javaのパフォーマンスを大幅に向上させる方法は?
LMAXのチームは、1ミリ秒未満のレイテンシで100k TPSを実行する方法についてプレゼンテーションを行いました。彼らは、ブログ、テクニカルペーパー(PDF)、およびソースコード自体を使用して、そのプレゼンテーションをバックアップしています。 最近、Martin Fowler氏は、公開LMAXアーキテクチャ上の優れた論文を、チームがパフォーマンスに大きさの別の注文を上がるために取ったステップのいくつかを、彼らは今、毎秒600万件の注文を処理することができることを言及し、ハイライト。 これまで、ビジネスロジックプロセッサの速度の鍵は、すべてをメモリ内で順番に実行することであると説明してきました。これを実行するだけで(本当に愚かではありません)、開発者は10K TPSを処理できるコードを作成できます。 その後、優れたコードの単純な要素に集中することで、これを100K TPSの範囲に引き上げることができることがわかりました。これには、適切にコード化されたコードと小さなメソッドが必要です-基本的に、これによりHotspotは最適化のより良い仕事をすることができ、実行中のコードをより効率的にキャッシュすることができます。 もう1桁上るには、もう少し賢くなりました。LMAXチームがそこにたどり着くのに役立つとわかったことがいくつかあります。1つは、キャッシュに対応し、ゴミに注意するように設計されたJavaコレクションのカスタム実装を記述することでした。 その最高レベルのパフォーマンスに到達する別の手法は、パフォーマンステストに注意を払うことです。私は長い間、人々がパフォーマンスを改善するためのテクニックについて多くのことを話していることに気づきましたが、実際に違いを生むのはそれをテストすることです ファウラーは、発見されたいくつかの事柄があると述べましたが、彼はいくつかだけに言及しました。 このようなレベルのパフォーマンスを達成するのに役立つ他のアーキテクチャ、ライブラリ、テクニック、または「もの」はありますか?

7
変数にゲッターとセッターがある場合、それはパブリックである必要がありますか?
プライベートな変数を持つクラスがあり、クラスにはその変数のゲッターとセッターがあります。なぜその変数を公開しないのですか? ゲッターとセッターを使用する必要があると思うのは、setまたはget以外の操作を行う必要がある場合だけです。例: void my_class::set_variable(int x){ /* Some operation like updating a log */ this->variable = x; }

8
「using」キーワードを使用する場合のDRY原則の実装方法
次の方法を検討してください。 public List<Employee> GetAllEmployees() { using (Entities entities = new Entities()) { return entities.Employees.ToList(); } } public List<Job> GetAllJobs() { using (Entities entities = new Entities()) { return entities.Jobs.ToList(); } } public List<Task> GetAllTasksOfTheJob(Job job) { using (Entities entities = new Entities()) { return entities.Tasks.Where(t => t.JobId == job.Id).ToList(); } …

9
独自のCMSを構築するか、事前に構築されたCMSに依存する必要がありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 関連:初心者のプログラマーとして、サードパーティのライブラリを使用するよりも独自のライブラリを作成することを優先すべきですか? 中級から上級レベルのPHP Web開発者であり、その若年(15歳)として、Webサイト用にまったく新しいCMSを構築するか、WordPressやDrupalなどの既成ソフトウェアに依存する必要がありますか? WordPressが私がやろうとしていることを処理できるほどパワフル/スケーラブルであるとはまったく感じていませんし、Drupalを最後の数日間いじくり回した後、自分の好みに見合っていないようです。また、十分に文書化されていないため、特定の簡単なタスクを実行するのに少し苦労しています。ExpressionEngineのようなものを使用したいのですが、現在300ドル前後の商用ライセンスを購入する余裕がないので、それは無理です。 私は元々、サイトを一時的なシステムとしてコーディングし始め、ユーザーが新しいウェブサイトを立ち上げるまでアップグレードやゲーム内通貨などを購入できるようにしましたが、それを始めてすぐにスケーラブルにする必要があることに気付きました、それから、私はそれを完全に機能するウェブサイトにすることを念頭に置いてコーディングしました。数日しかかからなかったが、すべての基本事項(登録、ログイン、アカウントの変更など)があり、プライベートCMSの素晴らしいスタートになると思います。 最後に追加したいのは、独自のCMSを構築する場合、かなりの経験があるCodeIgniterなどのPHPフレームワークを使用する必要があるかどうかです。 たぶん他の開発者が、私が自分自身に何を夢中にさせているのかを教えてくれるかもしれません。

4
プログラマーの職場環境(例:敬意)の地理的な違いに関する調査はありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 このウェブサイトから学んだことの1つは、ソフトウェア開発者は、私が働いていた会社で見たものと同じように扱われず、違いのいくつかは文化や他の要因に関連しているように見えることですプログラマーが働く地理的な場所。一部の分野では、プログラマーは多くの特典と多くの専門的敬意を期待できるように見えますが、他の分野では、プログラマーは何をすべきかを指示され、問題なくそれを行うべき労働者と見なされているようです。米国だけでも、この国のさまざまな地域の間で「標準」に大きな違いがあるようです。私はこれがどれだけ私の認識であり、プログラマーが異なる場所でどのように認識されるかについての本当の違いはどれくらいあるのだろうかと思っています。 プログラマーの作業環境の大きな違いや、地理的にプログラマーをどのように扱うか、尊重するかについての態度について議論している研究はありますか?これを見るさまざまな方法に取り組む複数の記事に興味があります。 編集:具体的には、研究は利用可能ではないようですので、私は質問をより広くします。利用可能なあらゆる種類のトピックについての良い、思慮深い文章はありますか?
23 culture 

5
Cコンパイラの歴史は何ですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 「デニスリッチーがC言語を開発した」と言うとき、C言語で記述されたソースコードをコンパイルできるコンパイラーを(「既に」開発された他の言語を使用して)作成したということですか?はいの場合、彼が最初のCコンパイラを書くのに使用した言語は何ですか?コンパイラはプログラムであり、現在利用可能なCコンパイラを使用してC言語用の別のコンパイラを作成できることを理解しています。あれは正しいですか?
23 c  compiler 

14
自動化されたユーザーインターフェイステストはどのような問題を解決しますか?
現在、自動化されたユーザーインターフェイステストを調査中です(現在、自動化された単体テストと統合テストを行っています)。 SeleniumとTelerikを見てきましたが、後者の方がはるかに柔軟なレコーダであるため、後者を選択のツールとして採用しました。テスターがあまり多くのコードを書くことは望ましくありません。 ただし、全体的なメリットを理解しようとしています。人々の意見はどのようなもので、どのようなものがうまく機能し、何がうまくいかないのでしょうか? 私たちのシステムは絶えず開発されており、(ウェブベースの)プラットフォームの新しいバージョンを定期的にリリースしています。 これまでのところ、主な利点は、特にプラットフォームの複数のクライアント展開での回帰テストにあります。 他の人の意見を本当に探しています。私たちはそれが正しいことだと「考える」が、すでに忙しいスケジュールの中で、さらなる洞察を探している。

9
GPLコードを書き換えてライセンスを変更する
GPLライブラリ(デュアルライセンスなし)を見つけました。これはまさに必要なことを行います。残念ながら、ライブラリのGPLライセンスは、私が使用する別のライブラリのライセンスと互換性がありません。したがって、ライセンスを変更できるように、GPLライブラリを書き直すことにしました。 私の質問は次のとおりです。ライセンスを変更できるようにするには、ライブラリにどの程度の変更を加える必要がありますか?言い換えれば、これを行う最も安い方法は何ですか?
23 licensing  gpl 

8
浮動小数点の精度を顧客に説明する[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 浮動小数点の丸めの問題を顧客に説明する最良の方法は何ですか? 知っている http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html 開発者や科学者向けのC ++ FAQやその他のさまざまなページのエントリだけでなく、数学や科学の背景が限られている「通常の」顧客向けのWebページ、記事、説明はありますか。(上記の参照はフラットになります)。 それが維持されていたり、有名でよく知られている機関や企業から来たものであれば、あなたが経験したかもしれないことを考えると、自分自身を説明するのは少し複雑かもしれません。

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