ソフトウェア工学

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

4
コードレビューと単体テストの実践を推進する
コードレビューと単体テストの経験がない(そして必要がない)開発者グループを管理するチームリーダーとして、コードレビューと単体テストの実践をどのように進めることができますか? コードレビューと単体テストが開発者のフローに自然に適合するように、どのように方法を作成しますか? これら2つの領域の抵抗の1つは、「私たちは常に日付変更に厳しいため、コードのレビューと単体テストの時間がない」ということです。 コードレビューに対する別の抵抗は、現在どのようにそれを行うかわからないということです。チェックインごとにコードを確認する必要がありますか、それとも特定の日にコードを確認する必要がありますか?


11
スキルレベルの異なるチームをどのように管理すればよいですか?
私は友達と一緒にソフトウェアプロジェクトに取り組んでおり、テクニカルリーダーに任命されました。これらの人はどれも悪いプログラマーではありませんが、私は彼らよりもかなり多くの経験を持っています。チームの全員に作業を分散できるようにする必要があります。また、お互いのつま先を踏まないようにする必要があります。彼らがこのプロジェクトを成功させるために必要な品質とスケーラビリティの比較的高い基準を満たしていること、彼らがコミットするすべてをレビューする必要はありません。 マイクロ管理を避けながら標準を維持するにはどうすればよいですか?ダイアグラムを作成し、コードレビューをスケジュールし、壊れる可能性のあるものを修正できると信頼するだけで十分ですか、それともTDDルートに行ってチームが満たす明示的なテストを作成する必要がありますか?

3
純粋な仮想または抽象、名前は何ですか?
Stack Overflowの仮想関数に関する質問について議論しているときに、純粋な(抽象的な)仮想関数と非純粋な仮想関数の正式な命名法があるかどうか疑問に思いました。 私の情報は常にウィキペディアに依存しており、純粋な仮想関数と非純粋な仮想関数が一般的な用語であると述べています。残念ながら、この記事では、起源や参考文献でバックアップしていません。 純粋で非純粋が一般的な用語であるという私の返信に対するJon Skeetの回答を引用するには: @スティーブン:うーん...多分、しかし私はC ++のコンテキストでそれを見たことがあります。私はそれらについて話している人はC ++のバックグラウンドを持っている可能性が高いと思う:) これらの用語はC ++に由来していましたか、それとも以前の言語で最初に定義または実装されたもので、「公式の」科学用語ですか? 更新: Frank Sheararは、SIMULA 67 Common Base Language(1970)の説明へのリンクを提供してくれました。この言語は、OOキーワードをclass、object、および正式な概念としての仮想として導入した最初の言語のようです。それはしません定義/純粋な非純粋または抽象的、しかしそれは概念をサポートしています。 誰がそれらを定義しましたか?

2
gitリポジトリが著作権で保護されたメディアを歴史上持っているプロジェクトをオープンソースにする方法は?
無料のライセンスでオーディオフィンガープリントソフトウェアプロジェクトをリリースしたいのですが、リポジトリには著作権で保護されたオーディオファイルが含まれています。現在、テストケースではこれらのファイルも使用しています。最大のバージョン履歴で、著作権を侵害せずにコードを公開するにはどうすればよいですか? 詳細: コードはgitでバージョン管理されています。リリース前にすべてを1つのブランチに戻します。 400 MBのオーディオデータがあります。一部のファイルは、たとえばJamendoの無料ライセンス音楽であり、その他のファイルは私たちの個人コレクションのMP3です。 どのようなアプローチをとっても、プロジェクトの履歴を破壊しないように、常に元のリポジトリの不変のコピーを保持します。 主な質問:パブリックリリースの処理方法 問題のファイルのすべての履歴をgitリポジトリから消去し、変更されたリポジトリをリリースします。(v64 はこれを行う方法を指摘しました。) または、コードの現在の状態のスナップショットを取得し、プレリリースコードの公開履歴を気にすることさえしません。 副次的な質問:プロジェクトの初期段階でプライベートコードまたはメディアが必要になる場合があるので、そもそもこのジレンマをどのように回避できたでしょうか?

4
クラスにスレッド/バックグラウンドワーカーを配置するのは「間違った」/悪い設計ですか?
Excel(C#および.Net 4)から読み取るクラスがあり、そのクラスには、UIの応答性を維持しながらExcelからデータをロードするバックグラウンドワーカーがあります。私の質問は次のとおりです。クラスにバックグラウンドワーカーを配置するのは悪い設計ですか。クラスなしでクラスを作成し、バックグラウンドワーカーを使用してそのクラスを操作する必要がありますか?この方法でクラスを作成することに関する問題は実際にはありませんが、それでも私は初心者なので、先に進む前に確認することを考えました。 私のコードが機能するので、これはスタックオーバーフローではないはずだと思うので、この質問がここで関連することを願っています。これは単なる設計上の問題です。

9
複数の列の主キーを使用するか、新しい列を追加する必要がありますか?
私の現在のデータベース設計では、各列に任意のキーを割り当てる追加の列を作成する代わりに、複数列の主キーを使用して既存のデータ(とにかく一意)を使用しています。私はこれが許可されていることを知っていますが、これが私が慎重に使用し、おそらく回避する可能性のある慣習であるかどうか疑問に思っていました(Cのgotoのように)。 それでは、このアプローチで見られるかもしれない欠点や、単一の列キーが必要な理由は何ですか?

22
プログラミングの初心者に質問を投げかけたり、気を散らすのをやめる方法は?[閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4年前に閉鎖されました。 私は今中等学校に通っていて、クラスでプログラミングを経験しているのは私だけです。そのため、問題を解決するように頼むコードを書いている間、人々は常に私を邪魔しています。通常、私は「わからない、使ったことがない」などのように返信しますが、人に嘘をつきたくありません。 別の問題は、私がこれで非常によく知られるようになったので、他のクラスの生徒でさえ質問をしていることです。これはいらいらします。 第三に、私が彼らのために問題を解決しても、彼らはそれから何も学ばない。 プログラミング関連の質問を親切に聞かせるのを止めるにはどうすればよいですか?

4
コンパイラーの仕事-必要な教育の量[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 主題としてのコンパイラ構築の質問に動機付けられ、これを尋ねると思いました。 少数の人々から、彼らが良い「コンパイラーチーム」を持っていると聞いたことがあります(どこで聞いたのか、思い出せません)。だから、そのようなチームでどのように仕事に就くのでしょうか。 ? 私は学部課程などにクラスがあることを知っていますが、大学院の学位が最低限のものになるでしょうか(少なくとも修士など)? 私は2か月でコンピューターサイエンスの修士号を開始し、2つのコンパイラクラスがありますが、コンパイラ開発の仕事を得るのに十分でしょうか、それにより多くの時間を投資する必要がありますか?

10
コピー/貼り付けパターンを修正する方法は?
私が働いている場所では、人々(コンサルタント)はできるだけ早く機能をリリースするよう迫られています。そのため、物事を正しい方法で行う方法を考えたり、何かを壊したくないために時間をかけすぎたりする代わりに、コードは異なるモジュールからコピーされ、修正されます。 コードベースは会社全体に公開されているため、これを防ぐのは簡単ではありません。多くの人々がこれに取り組んでいます。 混乱がすでにあるので、あまりにも壊さずにそれらの冗長性を削除する最良の方法は何ですか?

10
フリーランスの仕事を許可するように管理者を動機付けるにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 私は小さな会社の開発者です。時々、以前の雇用者からのフリーランスの仕事や、フルタイムの仕事に何らかしこむことなく何時間も後にできる奇妙な仕事のために、余分な現金を提供されます。 残念ながら、私のマネージャーは、私がいかなるサイドプロジェクトにも取り組むことを明示的に禁止しています。彼が言う理由は、週末であっても私の人生に自由時間があれば、彼らは彼の会社で働くことに費やされるべきだからです。 私の主張は、私の週末は私の時間であるということですので、私は自分のやりたいことができるはずです。第二に、一年中同じプロジェクトをじっと見つめるのではなく、他の方法では見られないさまざまな問題でスキルを広げていきました。実際、私は経験豊富なプログラマーになり、フルタイムの仕事を手伝ってくれるでしょう。 他の誰もがサイドでフリーランスの仕事をして、余分な現金を稼いでいるようですが、私はそれらを放り出したくありません。上司がそれほど悪いことではないことを理解する上で、他にどのような動機がありますか?

10
分散オフィス、それは実行可能ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 夢の会社をどのように構築し、優れたプログラマーにとって非常に魅力的な会社にする方法を考えてみました。多くの「良い」プログラマーの代わりに少数の「スーパースター」プログラマーを雇うことができれば。 私が個人的に楽しみたいことの1つは、いつでも好きなときに仕事をする自由です。そのため、気分がよければ遠隔地でさまざまな都市を旅行したり、クランチモードがあるときに家に座ったりすることができました。しかし私の経験では、物事について話し合い、会社の「文化」を持つことができる仲間とのオフィスが必要です。 おそらく、さまざまな国や都市の優秀な人材プログラマーを雇いたいとします。キャンパスと競争するためにどのように設定しますか?完全にオフィスのない会社を持つことは少し最適ではないように思えます。おそらく、人々が出会って仕事をすることを選択できるオフィススペースが必要でしょう。 私ができることは、さまざまな国に小さなオフィスを持ち、人々が選んだオフィスから仕事をさせることだと思います。プログラマーは、必要に応じて「クランチモード」を開始することができますが、チームワークと対面が必要な場所で作業することもできます。 別のモデルは、他のプログラマーが働くオフィスにあなた自身の賃借席のオフィスを持つ代わりになります。そのようにすれば、あなたの街に従業員が1人か2人しかいなくても、リモートで仕事をするのが「寂しい」と感じたら、会社を得ることができます。 もう1つのアイデアは、隔月で1週間のように、チーム全体を同じ場所に連れて行くことです。オフィスではないかもしれませんが、興味深い都市や魅力的なリゾートになり、そこから一緒に働くことができます。配偶者を持つ人々はそのようなものに問題があるかもしれません。 さまざまな都市(2〜3人用)に会社のアパートのネットワークがある場合もあります。オフィスやその他の場所の両方で、プログラマーやチーム、プログラマーが自由に歩き回って「まとまり」ます。 それが合法だった場合(国ごとにどのように異なるかはわかりません)、2匹のハエを一度に叩いて、異なる都市のオフィス/アパートを組み合わせることさえできます。「ハックパッド:ロンドン」「ハックパッド:ベルリン」など a)だから、私の質問は、このような設定が実行可能かどうかだと思いますか?コンセプトをどのように改善できますか? b)この種の自由をあなたに魅力的に与えてくれる会社を見つけますか、それとも毎日大きなオフィスを持つ会社を好むでしょうか? つまり、基本的に、「スーパースター」プログラマーが、Google、Facebook、またはMicrosoftキャンパスで代わりにこのような会社のセットアップで働くことを選んだのは、多くの才能ある個人の楽しさと会社です。

2
iOSからAndroidにアプリを移植しています。何を知る必要がありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 どのような落とし穴を避けるべきですか? Objective-Cの開発者が一貫して誤解しているJava言語のパラダイムは何ですか?Javaでプログラミングすることを学びましたが、Objective-Cでしか何年も働いていません。 AndroidとiOSでデザインパターンはどのように異なりますか? 自分で移行した場合、Androidのどの部分が混乱したり、学習に必要以上に時間がかかったりしましたか? EclipseはAndroidに最適なOS X IDEですか? 記録のために、私のアプリはUIKitとFoundationに非常に強く結びついているため、「移植」という言葉は誤った呼び名である可能性があります。実際にAndroid向けに完全に書き直します。コードの再利用はありません。また、これはAndroidを習得するために行っているので、ポートで失敗し、ショートカットを取得するよりもAndroidを習得したいです。 ちょっとした背景として、この質問はStackoverflowで私が見る質問の種類によって促されました。多くの場合、Obj-Cを作成しようとするときに、彼らが犯す愚かな誤りによって、誰かのバックグラウンド(C#またはJava)を知ることができます。Java開発者に目を転がさせ、「愚かなObjective-C開発者は学ぶことはないだろう」と言うような間違いを避けたいと思います。
15 android  ios 

12
締め切りを迎えるか、バグを減らしますか?
理想的な世界では、バグの少ない期限に間に合うことが望ましいです。しかし、より好まれ/受け入れられるあなたの経験から: 期限に間に合いますが、開発者が物事に突入するため、多くのバグがあります 開発者はコードの記述が非常に厳密であるため、バグは少なくなりますが、期限には間に合いません

12
ステートレスインターネットの理解[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私はデスクトップ開発者からWeb開発者に移行していますが、HTTPがステートレスである理由を理解するのに苦労しています。その理由は何ですか?私のようなデスクトップ開発者がステートレス開発環境に移行する方法は何ですか?
15 internet  tcp  http 

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