ソフトウェア工学

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

10
作業タスクを管理するための効果的な方法は?(文書化/記憶/優先順位付け)[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 仕事中のタスクを文書化し、記憶し、優先順位を付けるために使用できる効果的な方法に関する提案を探しています。これらのタスクの多くはプライマリプロジェクトに属しますが、独立したイニシアチブのためにも存在します。タスク自体は、開発からドキュメンテーション、ディスカッションに至るまで、優先順位がさまざまで、締め切りは今から数か月に及ぶものすべてを網羅しています。 歴史的に、私はメモ帳を使用してこれらのタスクを追跡しました。項目の横にある必要があることを示す星と、完了時にチェックマークが付いています。ただし、責任と管理対象が増えるにつれて、次のようになります。 すべてを完了したことを確認するのが難しくなります(5ページ戻ることがあるため) 次にやることが最も重要なことを思い出すのが難しくなります タスク間の依存関係を追跡することが難しくなります 誰かが自分のタスクを管理しやすくする方法を見つけましたか?最も重要なものと依存関係を追跡するためにメタデータを追加するか、これを自動化できるアプリに切り替えることを検討しました(そのようなことが存在する場合)。どこからでもアクセスできるものは間違いなくプラスになります。

7
javascript Eval機能の「不適切な使用」とは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 Evalは、物議を醸すことで有名な言語機能です。ダグラス・クロックフォードは完全に拒否します。Evalがもたらす具体的なリスクについて疑問に思っています。よると、この質問、Improper use of eval opens up your code for injection attacks。 Evalコマンドの不適切な使用法は何ですか?また、どのセキュリティホールが開きますか?
13 javascript 

15
ソース管理なしで複数の人でアプリケーションを開発する最も効果的/効率的な方法は何ですか?
私の状況の紹介 私は小さなWeb開発会社で働いています。私を含む4人のASP.NET開発者のチームがあります。ほぼすべてのプロジェクト(98%以上)は1人のプロジェクトで、完了までに1〜4週間かかります。ソースまたはバージョン管理は使用しません。唯一のものは、すべてのプロジェクトの最新のソース(==ライブアプリケーションのソース)を含むローカルサーバー上の共有フォルダーです。 まれに、同じプロジェクトで複数の人と作業する必要がある場合は、... Beyond Compareを使用します。1日に1、2回、開発者はお互いにコンパイルするバージョンがあるかどうかを尋ね、Beyond Compareを使用してコードを同期します。2人しかプロジェクトに取り組んでいない場合、これは「かなりうまく」機能しますが、3人目の開発者がプロ​​セスに入るとすぐに、管理不能なゴミになります。特に誰もがデータベースに変更を加え始めたとき。 私(および仲間の開発者の1人または2人)は、上司にGit、Mercurial、TFSなどの何らかの形式のソースおよびバージョン管理の使用を開始するように何度も言っています(私たちの上司は非常にマイクロソフトです)。残念なことに、上司はソースとバージョン管理システムに切り替えるメリットを認識していません。なぜなら、彼の目ではすべてがうまく動作し、新しいシステムのセットアップと全員の確認に時間とお金を費やしたくないからです。使い方を知っています。利点(コラボレーションの簡素化、アプリケーションのさまざまなバージョン、コードを変更するより安全な方法など)を彼に説明した後でも、彼はそれが必要だとは考えていません。 4人の開発者のうち、2人(私を含む)のみがソース管理(Git)の経験があります。そして、その経験は非常に限られています。Githubリポジトリーをコンピューターにクローンし、いくつかの変更を加え、コミットしてGithubにプッシュする方法を知っています。それでおしまい。 問題/懸念の説明 数週間以内に、私たちの標準のためのかなり大きなプロジェクトに取り組み始めます。おそらく、2〜3人の開発者がそれを完了するのに数か月かかります。私はプロジェクトリーダー(プロジェクトマネージャーおよびリードデベロッパー)になり、すべての責任を負います。Beyond Compareアプローチには問題がありますが、私の責任となるこの大きなプロジェクトでこの道を歩きたくありません。 私たちができることを疑うので 独自のGitサーバーをセットアップし、 みんなにGitを使って作業することを教え、 この大きなプロジェクトでGitをうまく活用し、 複数の人がソースやバージョン管理を使用せずに同じプロジェクトで共同作業できるようにする良い方法を知っている人がいるなら興味があります。 更新 皆の回答とコメントに感謝します。計画は次のとおりです。 開発者とミーティングを行い、すべての技術者がソース管理の実装について同じように感じるようにします。誰もが背後にいる場合、私たちはより強力なポイントを作ります。 アイデアを上司に提示し、ソース管理が本当に必要であることを彼に伝えます。 できるだけ早く実装してください。

3
プログラマーの教育とトレーニング全体をどのように改善できますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 先週、私はちょうどSecond LifeのPhillip RosedaleのKevin Roseによるこの素晴らしいインタビューを見ていました。 そして彼らは、優れたプログラマーを見つけ、雇い、特定する方法と、優れたプログラマーを見つけるのがどれほど難しいかについて素晴らしい議論をしました。 これは私たちがプログラマーがどのように学んでいるかを本当に考えるようになった。私自身も含めて、私たちの大半は独学です。プログラマーであることは素晴らしいことであり、誰もがスキルを学び、開発することができます。 しかし、これはまた、優れたプログラマーが何であるかについての本当の基準が存在せず、どのような環境がプログラミングスキルの成長を促進するかを意味します。 これはそれほど質問ではなく、プログラミングの文化やプログラミングの管理者をどのように変えることができるかを知りたいという願望であり、教育と自己改善が奨励されています。 継続的な教育、YouTubeビデオ、書籍、会議には多くの方法がありますが、私たちが行うことの経験的な性質のため、何を学び、習得することが重要かは必ずしも明確ではありません。 The Joel 12 Stepsを見てみましょう。 ジョエルテスト ソース管理を使用していますか? ワンステップでビルドを作成できますか? 毎日ビルドしますか? バグデータベースはありますか? 新しいコードを書く前にバグを修正しますか? 最新のスケジュールはありますか? スペックはありますか? プログラマーは静かな労働条件を持っていますか? お金で買える最高のツールを使用していますか? テスターはいますか? 新しい候補者はインタビュー中にコードを書きますか? 廊下のユーザビリティテストを行っていますか? これらはすべて重要な価値があると思いますが、Experiential Gapと呼ばれるもののために、プログラマーまたはマネージャーがリストの項目を実行しなかったことに対する否定的な結果を一度も経験したことがない場合、そのうちの。 Experiental Gapは、私たちそれぞれが異なる仕事と異なる経験を持っているという私の基本的な理論です。そのため、常に何十人ものプログラマーと連携してきた一部の人にとって、ソース管理は必須です。しかし、常に唯一のプログラマーであった人々にとっては、ソース管理の必要性を想像することはできません。 そして、私たちが学ぶ方法におけるこの大きな欠陥のために、私たちは人々が行うベストプラクティスまたはしないベストプラクティスによって人々を評価し、どちらかの理由が火炎戦争を開始する可能性があります。 私たちは常に自分の分野で人々の行動を評価し、「この男/ギャルがxyzベストプラクティスを実行していない場合、彼/彼女は優れたプログラマーになれないので、時間やエネルギーを無駄にしないでください」 」 これがまさにプログラミングフレイムウォーを抱えている理由です。ExperientalGapのせいで、私たちがしなければならなかった決定をしていない人は想像できません。 そのため、プログラマーをどのように訓練、教育、管理するかを再考する必要があると考えるようになりました。 たとえば、マネージャーの何パーセントが会議に出席するよう奨励しており、それに対して支払いをしていますか? 私にとって、そして多くの人々にとって、これは非常にまれです。多くの人がカンファレンスに行き、詳細を知りたいと思っていますが、それをするためのお金はありません。 したがって、この質問のポイントは、どうすればより良いトレーニング、学習、および管理を行うことができるのか、多くを刺激することですか? 同じ職歴を持たないことで人々をs辱しない学習の新しい文化をどのように作成できますか。 はい、私たち全員が仕事と仕事をしていますが、仕事を上手に行う能力は、スキルの習得を向上させるための私たちの欲求、関心、サポートに依存しています。 今、私たちの文化はかなり混乱しており、エリートをサポートしていますが、良くなりたいと思っている私たちの多くは、自分自身を学び、改善するのに十分なサポートを持っていません。 つまり、私たちは業界として、単なる交換可能な歯車として認識されることを望んでいますか? ありがとうございました...

3
なぜロジックプログラミング(ではない)ですか?
ソフトウェア業界での論理プログラミング言語(Prologなど)の使用についてはまだ聞いていませんし、趣味のプログラミングやオープンソースプロジェクトでの使用についても知りません。(Prolog)は、ある程度学問的な言語として使用されます(学問で使用される理由)。 これは、なぜロジックプログラミングを使用する必要があるのか​​、なぜ使用しないのかと疑問に思います。検出可能な業界で使用されていないのはなぜですか?

5
欠陥ステータス:「修正しない」対「キャンセル」
私はテスターまたは開発者としていくつかのプロジェクトに携わってきました。多くのプロジェクトでは、以下の欠陥のステータスがありました。 修正しない キャンセル そのようなステータスを使用し、どのように区別しますか?ほとんどの人は違いを説明できないので、お願いします。私の理解は: 修正されません、それは欠陥ではありませんが原因で、開発者は、欠陥が修正されません- 。 キャンセル済み -優先順位が最も低いため、欠陥を修正しないでください

10
偉大なプログラマーと経済的に成功したプログラマーの違いは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 Zukerberg、Page、Brinのようなプログラマであり、経済的にも非常に成功している人と、あまり経済的に成功していない他の賢明なプログラマ(facebookやgoogleのほとんどの従業員のような)の違いは何ですか?

8
失敗した単体テストのチェックの価値は何ですか?
単体テストが実行されないようにする方法はありますが、失敗した単体テストをチェックすることの価値は何ですか? 簡単な例を使用します:大文字と小文字の区別。現在のコードでは大文字と小文字が区別されます。メソッドへの有効な入力は「Cat」であり、Animal.Catの列挙を返します。ただし、メソッドの目的の機能では大文字と小文字を区別しないでください。したがって、記述されたメソッドが「cat」に渡された場合、Animal.CatではなくAnimal.Nullのようなものを返す可能性があり、ユニットテストは失敗します。簡単なコード変更でこの作業が可能になりますが、より複雑な問題の修正には数週間かかる場合がありますが、単体テストでバグを特定することはそれほど複雑ではありません。 現在分析中のアプリケーションには、「機能する」4年間のコードがあります。ただし、単体テストに関する最近の議論では、コードに欠陥が見つかりました。明示的な実装ドキュメント(大文字と小文字を区別するかどうかなど)、または現在の呼び出し方法に基づいてバグを実行しないコードのみが必要なものもあります。ただし、バグが発生する有効な入力である特定のシナリオを実行する単体テストを作成できます。 誰かがコードを修正できるようになるまでバグを実行する単体テストをチェックインすることの価値は何ですか? 実行されたテストに基づいてビルドが成功したかどうかを判断するために、このユニットテストにignore、priority、categoryなどのフラグを設定する必要がありますか?最終的には、誰かが修正したらコードを実行するために単体テストを作成する必要があります。 一方では、特定されたバグが修正されていないことを示しています。一方、ログには何百もの失敗した単体テストがあり、コードチェックインによる失敗と失敗の組み合わせを見つけるのは困難です。

4
ソフトウェア会社の設立方法[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私はいつも、ソフトウェア会社がどのように起こるのかと思っています。車、家、生活などに縛られたら、それは非常に難しいと思います。資金調達は常に最大の関心事です。 これをもう少し具体的にするために、2つのタイプがあります。製品/サービスを提供するもの、またはコンサルタント会社を提供するもの。 製品/サービスの種類に関して私を悩ませていることの1つは、両端でろうそくを燃やすことは非常に疲れるということを私たち全員が知っているということです。1日8〜10時間コーディングしてから、夕方に自分のコードをコーディングしても、長続きしません。アイデアにどれほど情熱を傾けていても、簡単に言えば、昼夜を問わずコーディングすることは燃え尽きるレシピです。しかしこれは敗北主義的な態度ですか?バランスを取ることができますか? 私の正直な意見では、コンサルタントの種類はそれほどトリッキーではありません。業界で何年も費やして関係を構築し、契約や移動からの連絡を取り、そしてもちろん、コミュニティに参加し、コンサルタントとして最初のプロジェクトを立ち上げた後、製品よりも簡単だと思います/サービスの種類。アジャイルの実装やTDDトレーニングなど、より大きな会社のプロジェクトに参加するときに、友人があなたと一緒に参加して、もっと大きなものを手に入れることができると思います。 両方に貢献できない場合は、回答している会社の種類を指定してください。ソフトウェア会社のスタートアップのために、あらゆるレベルの皆さんの経験やアイデアを聞きたいです。

9
再帰の理解を改善するためのリソースはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 私は再帰とは何かを知っています(通常、パテンが自身内で発生するとき、通常はブレークアウト条件付き...の後にその行の1つでそれ自体を呼び出す関数ですか?)、それらを詳しく調べれば再帰関数を理解できます。私の問題は、新しい例を見ると、最初はいつも混乱していることです。ループ、またはマッピング、ジッピング、ネスト、ポリモーフィックコールなどが表示される場合、それを見るだけで何が起こっているかがわかります。再帰的なコードを見ると、私の思考プロセスは通常「wtf is this?」です。続けて「ああ、再帰的」、続いて「もし彼らが言うなら、うまくいくに違いない」と続きます。 この分野でスキルを構築するためのヒント/計画/リソースはありますか?再帰は奇妙な概念の一種なので、それに取り組む方法も同様に奇妙で明白ではないかと考えています。

4
リリースビルドとナイトリービルド
典型的な解決策は、ビルドサーバーで実行されているCI(継続的インテグレーション)ビルドを使用することです。これは、ソースコードの分析、ビルドの実行(デバッグ)、テストの実行、テストカバレッジの測定などを行います。 現在、通常知られている別のビルドタイプは「ナイトリービルド」です。コードドキュメントの作成、セットアップパッケージの作成、テスト環境への展開、テスト環境に対する自動(スモークまたは受け入れ)テストの実行などの遅い処理を行います。 さて、質問: リリースビルドとして3つ目の別個の「リリースビルド」を使用する方が良いですか? または、リリースモードで「Nightly build」を行い、リリースとして使用しますか? 会社で何を使用していますか? (リリースビルドでは、潜在的な製品バージョンのソース管理に何らかのタグを追加する必要もあります。)

5
高レベルと低レベルのプログラミング。本当に選択する必要がありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 時々インタビューで、私は最高の低レベルまたは高レベルが好きです。暗黙のメッセージは、どちらも専門であり、彼らが私がどの方向に向かっているのかを知りたいということです。問題は、私は両方が好きなようです。低レベルは非常に困難であり、多くの場合、多くの難解な知識が必要です。高レベルは、すべてのセクシーなことが起こる場所です。人々が直接使用するアプリケーション、誰もがアクセスできる方法で簡単にデモンストレーション(披露)できる結果、そしてあなたは本当に高度なツールで作業し、新しいテクノロジーと対話することができます。 両者を交互に行うことを意味する場合でも、両方をやりたいと思います(両方を同時に行うことができる仕事があるとは思いません)が、業界はジェネラリストよりもスペシャリストに報酬を与えると思います どちらかを選択しないと、本当に問題のあるキャリアになりますか?どちらか一方の仕事を辞めた場合、もう一方の仕事をやろうとする「摩擦」を経験するべきではないという意味で、2つを交互にすることは実用的ですか?あるあなたが両方を行うために取得がキャリアの機会は? 本当にどちらかを選択する必要がありますか?

5
物理学とコンピューターサイエンスの共同カリキュラムと教科書のアイデア[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 読者が有能なコンピュータープログラマーであると仮定する物理学の教科書を書きたい(そして概要を説明し始めたい)。通常の物理学の教科書は物理的な公式を教え、ペン、紙、電卓で解決される問題を与えます。私はコンピュータが物理システムをモデル化することができますどのように、計算物理学を強調ブックを提供したいとの種類の問題を提供します:解決することができるプログラムの書き込みセット物理学の問題を。サードパーティのオープンソースライブラリを使用してほとんどの計算を処理しますが、JavaやC#などの高レベル言語を使用したいと思います。 私がこれに取り組むことを楽しんでいるという事実に加えて、物理学-コンピューター科学の共同カリキュラムは学校で提供されるべきであり、これはこれを実現するためのより大きな議題の一部です。物理学の学生(私のように)は、抽象的な問題や一連の問題を解決するためにコンピューターを使用し、活用する方法を学ぶべきだと思います。プログラミング言語は、多くの調査分野に従事するための有用な媒体と考えるべきだと思います。 これは追求する価値のあるアイデアですか?これらの2つの科目の合併は、学部の大学カリキュラムの形で実現可能ですか?利用すべき特定のツールや注意すべき落とし穴はありますか?大学のコースなど、この方法論を想定している人はいますか?私が説明しているような本(教科書など)はありますか(物理学やその他のテーマについて)。

3
機械学習のキャリアへの切り替え[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私の仕事は、昔ながらのソフトウェア開発です。また、CSで修士号を取得しています(パートタイム、コースベース)。AIのコースを受講したところ、機械学習は非常に魅力的でしたが、ほとんどのコースと同様に基本的なイントロだけを提供しました。 私は機械学習についてさらに学び、可能であればその分野で仕事をするつもりです。この分野の求人を見ると、機械学習の博士号(またはかなりの専門知識を持つ分野での以前の経験)がそれらのほとんどに必要であることは明らかです。 業界で役立つ経験を積むために、自己学習に関するアドバイスを探しています。少なくとも、自分の足を踏み入れるのに十分な経験。教科書や論文などを読むなどの明白なことをします。おそらく、私が参加できるオープンソースの取り組みや、自分でできることはありますか? ここで私があいまいになっている場合はおologiesびしますが、同様の切り替えを行ってアドバイスできる人が少なくとも数人いることを願っています。 ありがとう!

5
Mavenを使用したJava EEプロジェクトの作成
Eclipseを使用してJava EE Webアプリを1年ほど開発しています。私の雇用主はMavenを使用していませんが、それについて詳しく読むほど、Maven + Hudsonが私たちにとって非常に有益であると確信しています。ただし、まず、概念実証を作成できるように、空き時間にこれらのテクノロジに慣れる必要があります。 現在、私はまだMavenの初心者です。MavenでJava EE Webアプリを作成するためのベストプラクティスのセットはありますか?たとえば、基本的なアーキタイプを使用してプロジェクトを作成し、サーブレットコンテナ、EJB、EclipseLinkなどのPOMに依存関係を追加することにより、必要なすべてのJARを追加できます。それを行う方法。このトピックについて提供できるガイダンスをいただければ幸いです。
13 java-ee  maven 

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