ソフトウェア工学

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

9
どのようにして複数の言語を学ぶ機会を得ましたか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私は読んプログラマは、少なくともどのように多くの言語に集中する必要がありますか?、そして私は最初の答えの2、3の言語を知らないことがわかりました。もっと多くの言語を学び、知識とプログラミングのスキルを高めたいです。ただし、通常、企業では固定フレームワークと言語を使用しており、変更はほとんどありません。ですから、それらの言語を学ぶ機会が得られるかどうかはわかりません。他のプログラマーにとっても同じだと思います。 しかし、私はここで複数の言語を知っている多くの開発者を見てきました。どのようにして多くの言語を学ぶ機会を得ますか? 更新 余暇に勉強したくない気分で、不快に感じる方も多いと思います。実際、それは真実ではありません。:)私はマニアのプログラマーです。そのため、この種の質問をここに投稿しました。暇な時間に勉強しますが、言葉が上手いだけでは物足りないと思いました。とにかく、すべての回答に感謝します!

4
見積もりスキルを向上させるための良いチームビルディング活動は何でしょうか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私はチームメイトの一部(すべての開発者)に提供するプレゼンテーションをまとめています。見積もりスキルの向上に焦点を当てた短いチームビルディングアクティビティを含めたいと思います。誰かが私に提案できるチーム構築活動を知っていますか?


1
機能分解は本当にアンチパターンですか?
私が読んだ最悪のアンチパターンを読んでいるときに、この投稿のリンクをクリックして、アンチパターンに関するWebサイトにアクセスしました。 そして、http://sourcemaking.com/antipatterns/functional-decompositionのページは私に不思議に思いました。 このアンチパターンはどれほどひどいですか、それともアンチパターンですか?今日私はほとんどOOPプログラミングを行っていますが、Javaのような純粋なOOPのすべての言語や、それらがもたらす設計慣行にもまだ気が進まないためです。コードを書いている間も、関数型プログラミングにはいくつかの特徴があります。 そして、これは質問を持ち出しました、私はOOP + Functionalスタイルに固執することによって間違っていますか、それとも業界では一般的であり、実際にはそれほど悪いことではありませんか? 私が経験から知っていることは、OOP + Functionalスタイルは純粋なOOP開発者と完全には互換性がないということです。しかし、同時に、OOP開発者はOOP +機能開発に問題を抱えていますが、反対意見は、OOPソリューションは非常に頻繁に設計されすぎて使用が困難であり、私の経験から、少しも簡単ではなく、実際には非常に深刻なバグを隠すためにいくつかの盲点を導入しました。 したがって、これらのトピックについて同僚と話し合ったとしても、どの方法も実際には完璧ではないという結論に達しました。そして、私はまだ質問に答えられていません。 OOP問題は、同じスレッド内の別の投稿からのリンクによっても強化されました。リンクは、JavaスタイルのOOP http://chaosinmotion.com/blog/?p=622にあります。 では、関数型プログラミングとOOPを混合することに対する一般的な態度はどのようなものでしょうか。そして、開発者が達成するために努力すべきバランスは何ですか?

4
Javaで「良いスタイル」を作る理由は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 私はStackoverflowでこの質問をしましたが、それがブーイングする前に、PéterTörökから投稿するのにこれがより良い場所であるかもしれないという有益な提案を受けました。 数年前からJavaでプログラミングしています。私は、「良いスタイル」を構成する要素に基づいて、同僚と設計上の決定についてよく話し合いました。実際、何かが「良いスタイル」であるかどうかに基づいてデザインを検討するStackOverflowの質問/回答がいくつかあります。 しかし、「良いスタイル」を作るものは何ですか?多くのことと同様に、私はそれを見るとそれを知っています...しかし、このデザインは正しくないと感じているという私の良心よりも良い考えを知りたかったのです。 適切に設計された優れたコードを作成するために、あなたは何を考えていますか? (これはやや主観的なものであることを認めます。「良いスタイル」とは、目前のタスクに依存するためです)。(また、「4ではなく2スペースのインデントを使用する」など、チームスタイルには興味がないことも付け加えておきます。Javaコードの規則には興味がありません。) 編集:これまでのすべての良い答え/コメントをありがとう。私は特に、プログラマーの良心(そして場合によってはお腹も)のレンチを成し遂げることを成文化するのに役立つ答えを求めていますか?

2
オープンソースアプリケーションの変更
最初に記述しなかったオープンソースアプリケーションに機能を追加する場合の一般的なワークフローは何ですか?コードを知るにはどうすればよいですか?変更または追加が必要なスポットを見つけるにはどうすればよいですか?他に何も壊さずに実際に変更するにはどうすればよいですか?すべてがまだ機能していることをテストするにはどうすればよいですか? そのようなプロジェクトの一般的なガイドラインは何ですか?

6
開発を停止してQAを開始する必要があるのはいつですか?
2人の開発チームのために、完全な機能仕様を作成します。私たちはプロのテスターはおりませんが、利用可能なヘルプデスク担当者の助けを借りて「QAテスト」を実行するためにドラフトを作成しました。 これまでに、機能の完全なチャンクが機能しない、またはコードが配信されないという仕様に問題があるという問題がありました。 私の質問は次のとおりです。開発者はQAチームに手渡しているコーディングをどの段階で停止する必要がありますか?QAチームに引き渡す前に、仕様に照らしてコードをレビューするよう開発者に依頼するのは多すぎますか?

6
RazorまたはXSLTは私のプロジェクトに適していますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は、本質的に2つの部分に分割されるシステムの設計の初期段階にいます。1つはサービスで、もう1つはODataやXMLなどのデータを提供するサービスとのインターフェースです。アプリケーションは、MVCアーキテクチャパターンに基づいています。ビューについては、ASP.NETでXSLTまたはRazorの使用を検討しています。 XSLTまたはRazorは、元のXMLまたは応答がモデルを表す場合、XSLTまたは 'Razorビュー'がビューを表す場合の懸念を分離するのに役立ちます。この例では、コントローラーを省略します。最初の設計提案ではXSLTを推奨していますが、よりフレンドリーなビューエンジンとしてRazorを使用することを提案しました。 これらは私がRazor(C#)に提案した理由です: より複雑なページの操作と作成が簡単になります。 * ML以外の出力(csv、txt、fdfなど)を簡単に生成できます 冗長でないテンプレート ビューモデルは強く型付けされており、ブール値や日付値など、XSLTは規則に依存する必要があります。 マークアップはより近づきやすいです。たとえば、nbsp、改行の正規化、属性値の正規化、空白ルール 組み込みのHTMLヘルパーは、DTO属性に基づいてJS検証コードを生成できます 組み込みのHTMLヘルパーはアクションへのリンクを生成できます そして、かみそりよりもXSLTの議論は: XSLTは標準であり、今後も何年も存続します。 誤ってロジックをビューに移動するのは難しい プログラマー以外の方が簡単です(同意しません)。 過去のいくつかのプロジェクトで成功しています。 データ値はデフォルトでHTMLエンコードされます 常に整形式 だから私はどちらかの側の意見、推奨事項、または同様の選択をする経験を探していますか?
9 c#  asp.net-mvc  xslt  razor 

4
単体テストの「単体」で理解されること
私が理論上「ユニット」の下で理解しているように、人々は方法(OOP)を意味します。しかし、実際には、いくつかのメソッドを分離して検証するテストは、非常に壊れやすい動作テストです(結果ではなく、いくつかの依存関係メソッドが呼び出されたことを検証します)。そのため、密接に関連するクラスの小さなセットをユニットごとに理解する多くの人々を目にします。この場合、外部の依存関係のみがモック/スタブされ、ユニット内部の依存関係には実際の実装が使用されます。この場合、より多くの状態があり、(仕様によると)意味があり、それほど脆弱なテストではありません。したがって、問題はこれらのアプローチについてどのように感じていますか、2番目のアプローチの単体テストを呼び出すことは有効ですか、それとも何らかの低レベルの統合テストなのでしょうか? これらのテスト方法のいずれかによるTDDの適用に関する特定の考慮事項が表示された場合は、私はあなたの考えに感謝します。

2
修士vs.博士-長い[終了]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 8年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私は21歳で、修士課程のコンピュータサイエンスの1年生です。私の博士号を継続するかどうかは、過去数ヶ月間私を悩ませてきました。私はそれについて考えるのを止めることができず、問題で非常に引き裂かれています。私は、http: //www.cs.unc.edu/~azuma/hitch4.htmlやその他の多くのマスターとphdの記事をウェブで読んだことがあります。残念ながら、まだ結論は出ていません。 私はこの問題に関する私の考えをここに投稿して、1)問題についてさらに洞察を得て、2)私の仮定が正しいことを確認できることを期待して、期待していました。それぞれの分野での経験がある人なら、私が間違っているかどうか教えてくれるので、間違った考えに基づいて判断を下すことはありません。 さて、このトピックを邪魔にならないようにするために-お金。お金が一番ではない私にとって重要なことですが、それはまだ重要です。6つの数字を作ることは常に私の目標でしたが、どちらの方法でもおそらく時間がかかると思います。ほとんどのオンライン給与計算サイトによると、ソフトウェアエンジニアの平均初任給は約60〜70kです。ここでのPhDプログラムは5年間ですので、約30万人です。私は、修士号を取得して労働力に参加しないことで見逃しています。私の人生で一度に1kしか持っていなかったので、300kは正確には想像できないと思います。一度にすべてが手に入るわけではないことは明らかですが、それを稼いでいることを知るのは、私にとってはちょっとばかげています。私は30歳になるまでにかなり快適に生活できるように感じます(ただし、あまりに早く内容に満足するリスクがあります)。家族ですべてを使い切る前に、20代のうち少なくとも数年はそのようなお金を使って過ごすことができれば絶対に嬉しいです。私は経済的に安定して育っていないので、お金をかけるだけでいいと思います。いい車を買って、新しいギターを1つか2つ買って、美味しい食べ物を食べて、経済的に快適です。私は子供の頃から、自分の人生の中でかなりのお金を稼ぐに値するような気がしてきました。それを現実にしたいだけです。私が40〜45歳になるまでに、どちらの方法でも大金を稼ぐことはわかっていますが、私は金を稼がないことにうんざりしていて、それについて焦っています。と経済的に快適です。私は子供の頃から、自分の人生の中でかなりのお金を稼ぐに値するような気がしてきました。それを現実にしたいだけです。私が40〜45歳になるまでに、どちらの方法でも大金を稼ぐことはわかっていますが、私は金を稼がないことにうんざりしていて、それについて焦っています。と経済的に快適です。私は子供の頃から、自分の人生の中でかなりのお金を稼ぐに値するような気がしてきました。それを現実にしたいだけです。私が40〜45歳になるまでに、どちらの方法でも大金を稼ぐことはわかっていますが、私は金を稼がないことにうんざりしていて、それについて焦っています。 しかし、博士号を取得するための大きなアイデアは、コンピュータサイエンスの世界で実際の問題を解決する能力があれば、修士課程が売り切れの感覚を与えると感じているということです。(かなり単純明快-詳細についてはあまり説明しませんが、これは大きな問題です) 次に、決定の他の側面について説明します。 私はもともとプログラミングのためにコンピュータサイエンスに入りました。私は高校で始めて、それが自分がキャリアのためにやりたいことだとすぐに知りました。業界でマスターを取得してソフトウェアエンジニアになることで、自分のキャリアの中でプログラムする時間を大幅に増やすことができます。研究では、コーディングよりも、読書、執筆、助成金の獲得などに多くの時間を費やしたいと思います。 研究室で一緒に働いている人が最近論文を発表しました。彼はそれを見せてくれ、私はそれにショックを受けました。最初の2ページには、方程式と数式が散らばっていました。それから次のページかそこらの前に彼が導き出した方程式と公式が続きました。それは彼の仕事でした-ロボットの腕の動きのためのこれらの式のすべてを分解して作成しました。そして、私がコンピュータサイエンスの論文を読むときはいつでも、それらはすべてこのパターンに従っているようです。私はいつも自分が一日中コーディングしているところを想像していました…その性質の方程式やことを証明していない。それはコンピュータサイエンスの研究の一部に過ぎませんが、その部分は退屈です。 両側にいくつかの短所- Phd-私は執筆が本当に好きではないか、テクニカルライティングが得意だと感じています。何かを作るためにグループにいるときはいつでも、私は常に仕事の大部分を行い、それをチームメンバーに渡してレポートを作成する人です。ただし、プレゼンテーションは異なります。自分が何をプレゼンテーションしているのかを十分に理解している限り、プレゼンテーションはまったく問題ありません。しかし、論文を書くことは私にとってそのような面倒のように思えます。このため、「公開するか、消滅させる」というフレーズは、本当に私を研究から遠ざけます。別の悪いこと-私が研究をしているとしたら、ほとんどが一人で行われるように感じます。私は小グループで最もよく働きます。ブレーンストーミングをしているときは、少なくとも1人の人にアイデアを跳ね返らせるのが好きです。物事を構築するためにいくつかの小さなエリートグループの一部であるという考えは、私にとって理想的に聞こえます。ですから、私のキャリアの大部分で小さなグループで働くことができることは間違いなくプラスです。私はこれを研究することができるとは思わない。 マスター-ほとんどの人がエンジニアとしてやって来て、最終的には管理職に入るということをオンラインでたくさん読んでいます。今のところ、自分が経営陣の一員になりたいとは思っていません。私の会社が新しい製品やシステムを作りたかったとしましょう-「私はこれを作った人々のグループを管理した」ではなく、「私はこれを作った」と言うことに誇り、楽しさ、全体的な満足感を得ます。私は開発プロセスの大部分になりたいです。ものを作りたいです。 他の人よりも専門的になればいいと思います。私は何かについてのすべてではなく、何かについてのすべてを知りたいのです。私はいつもそうでした-野球の時代は素晴らしい投手でしたが、他のすべてではあまり得意ではなく、学校の特定のクラスでは得意でしたが、他のクラスでは得意ではありませんでした。私のキャリアは同じだと思います大丈夫だと思います。博士号を取得すると、私はこの方向に向かうでしょう。人工ニューラルネットワークやロボットの触覚などの非常に特定の分野への非常に重要な貢献者であるため、人々が目を向けて助けを求めに来る人であるのは素晴らしいことです。私がソフトウェア業界について収集したものから、専門化されることは、新しいテクノロジーのスピードのために非常に悪いことになる可能性があります。 採用に関しては、かなり保守的な見方をしています。5年ごとに会社を変えたくありません。多分これは誰もが望んでいることかもしれませんが、労働条件が許容範囲であれば、1つの会社で10年以上(運が良ければ20-25年以上かもしれません)大切な人になりたいです。教授や研究者であることは、博士号としてより可能だと思います。私がソフトウェア業界の人々について読むほど、ほとんどのソフトウェアエンジニアが会社から会社へと急速に跳ね返っているように見えます。プロジェクト間で雇われた銃のように機能するものさえありますが、それは私がまったく望んでいないことです。しかし、実際に現実の世界でそれが起こったら、重要で重要なソフトウェアを作成する場所を見つけることは素晴らしいことです。 私は非常に競争力のある人です。私は競争で繁栄します。理由はよくわかりませんが、子供の頃からずっとそうです。競争は常に私に毎晩少し余分なことを練習する理由を与えました、いつも私の限界を押し上げるなど。研究の世界では競争がないように私には思えます。研究が行われている限り、誰もがとてもリラックスしているようです。唯一の競争は、誰かがあなたと同じものを研究していて、その人が最初に終了して公開できるかどうかです(しかし、誰もがその状況を注意深くチェックしているようです)。私にとって唯一の注目すべき競争は、あなた自身とあなた自身の規律だけです。業界では、企業間で最高の製品を出したり、廃業したりするという競争が実際にあるという考えが気に入っています。 私を本当に博士号に向かわせているのは、あなたが作るものの寿命です。業界で真に革新的なものを作るとしたら、ほんとうに優れた新しいアプリケーションやシステムだけだと思います。誰かがそれをより速く、より効率的に行うまでに、約5〜10年の有効期間があります。しかし、研究によって、数十年続くアイデアやアルゴリズムを作成できます。たとえば、A *検索アルゴリズムは1968年に記述され、現在でも広く使用されています。それは私にとって素晴らしいことです。パラニュークの言葉で、「目標は永遠に生きることではなく、そうなるものを作ることです」。 何よりも、重要なことをしたいだけです。私は自分の仕事が社会を助け、進歩させたいと思っています。真剣に、今後40年間プログラミングGUIに行き詰まっているとしたら…私は自分の顔を狙うかもしれません。しかし、繰り返しになりますが、私の作品に触れるのは人口の1%未満であり、その重要性をさらに理解することはできないという考えを嫌います。 だから私が言ったことのいずれかが間違っているなら、私に知らせてください。私が修士号または博士号を取得すると思われる場合は、お知らせください。あなたが私にいくつかの追加の洞察を与えるか、私が作った任意のポイントに追加したい場合は、行ってください。助けてくれてありがとうございました。

2
オブジェクトがその所有者の多くを知っている場合、それはコードのにおいですか?
Delphi 2007アプリケーションでは、次の構成要素の多くを使用しています FdmBasic:=TdmBasicData(FindOwnerClass(AOwner,TdmBasicData)); FindOwnerClassは、現在のコンポーネントの所有者階層を上に移動して、特定のクラスを検索します(例ではTdmBasicData)。結果のオブジェクトは、フィールド変数FdmBasicに格納されます。これは主にデータモジュールを渡すために使用します。 例:レポートを生成するとき、結果のデータは圧縮され、データモジュールTdmReportBaseDataを介してアクセスされるテーブルのBlobフィールドに格納されます。アプリケーションの別のモジュールには、ReportBuilderを使用して、レポートのデータをページ形式で表示する機能があります。このモジュールのメインコード(TdmRBReport)は、クラスTRBTempdatabaseを使用して、圧縮されたblobデータを、Reportbuilderランタイムレポートデザイナーで使用可能なさまざまなテーブルに変換します。TdmRBReportは、あらゆる種類のレポート関連データ(レポートのタイプ、レポート計算設定など)のTdmReportBaseDataにアクセスできます。TRBTempDatabaseはTdmRBReportで構築されますが、TdmReportBasedataにアクセスできる必要があります。したがって、これは上記の構成を使用して行われます。 constructor TRBTempDatabase.Create(aOwner: TComponent); begin inherited Create(aOwner); FdmReportBaseData := TdmRBReport(FindOwnerClass(Owner, TdmRBReport)).dmReportBaseData; end;{- .Create } 私の考えでは、これはTRBTempDatabaseがその所有者の多くを知っていることを意味し、これがなんらかのコードの匂いやアンチパターンなのかどうか疑問に思っていました。 これについてどう思いますか?これはコードのにおいですか?もしそうなら、より良い方法は何ですか?

3
一般的な共有メソッドを配置する場所
私はどこでもよく使われる方法をたくさん持っています。現在、コードファイルはグローバルと呼ばれ、それらが...実際...グローバルであるという事実を表しています。 しかし、私はこれが好きではありません。 これらをクラスにグループ化し、インターフェースを渡したいです。私はインスタンスを1つだけ作成しますが、ここではシングルトントラップに陥りません。 まず、クラスの名前は何にしましょうか。メンテナが間違った考えを理解するのではないかと心配しているので、グローバル名は避けたいです。 また、このような一連のメソッドを分割して、動作を変更および適応できるようにするにはどうすればよいですか? メソッドのセットには、次のようなものが含まれます。 変換表 クリップボードの相互作用 ビルドされたフォントの管理 一般的な描画方法 頻繁に使用するリソースにアクセスできるインターフェースを提供する
9 c# 

5
静的および動的に型付けされた言語を、さまざまなタイプのジョブのさまざまなツールと見なすことはできますか?
はい、同様の質問がされていますが、常に「どちらが良いか」を見つけることを目的としています。 私は主にJavaScriptの開発者として思いついたので、静的型付け言語での記述に関する広範な経験がないので、私は尋ねています。 これにもかかわらず、低レベルのコードでの要求の厳しい操作を処理するためのCの学習には間違いなく価値があります(これは、コンパイラーレベルで静的と動的の関係があると思います)。特定のプロジェクトコンテキスト(特定の種類の動的なデータ集約型操作など)があるかどうかです。パフォーマンス以外にも、JavaやC#を使用するよりもPythonを使用するほうが理にかなっています。


4
ペアプログラミングでは、各ロールの名前は何ですか。また、その理由は何ですか。
キーボードで「ドライバー」という名前の人と、「ナビゲーター」という名前の人の話を聞きました。私はラリーカーレーサーを想像しました。そこでは、ハンドルを握っている人が起こっているすべてに追いつくことができないだけでなく、彼らは「ナビゲーター」の助けを必要とするはずです。「雑草の外」は、キーボードの人が2番目の椅子にいる人によって「コース上」に保たれているように。 ペアプログラミングの2つの役割で最も一般的に受け入れられている用語は何ですか?(明白でない場合)、それらは以前の専門家から借用したものですか?

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