ソフトウェア工学

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

12
番号のローカリゼーションは不要ではありませんか?
このページを読んだばかりですhttp://weblogs.asp.net/scottgu/archive/2010/06/10/jquery-globalization-plugin-from-microsoft.aspx 彼らがしたことの1つは、アラビア語の日付をアラビア語のカレンダーに変換することでした。そうするのは良い考えかどうか疑問に思っています。(ユーザーがアラビア語であっても)ユーザーにとって実際に迷惑/混乱するでしょうか。 また、2番目の質問は、ドイツ語などの一部の文化では33,899.99を33.899,99に変更する必要があるのか​​ということです。ライブラリがすでにそれを行っているので、そうすることは害になりませんが、これは実際にユーザーにもっと混乱を引き起こさないでしょう(たとえ彼がドイツ人であっても)。 私はこれらの人々がどのような文化から来たにせよ、33,899.99の数字を与えたとしても、あなたが間違ったことをする方法はないでしょうか?(私のウェブサイト/アプリケーションがあなたがあなたの人生でこれまでに使った最初のウェブサイト/アプリケーションでない限り、おそらくそれは可能ですが、確率はそれだけです) 私は、誰もがそれが何を意味するのかを見て、知っているフォーマットとして「ユニバーサル」を意味しました。白黒などで書かれた標準である必要はありません。誰もがそれを読んで、テキストが何を表しているのか混乱せずにすぐに知ることができる限り、それは普遍的です。確かに、1.234,00は間違いなく普遍的ではありません。私は、あなたが一生ずっと、コンピューターを使っていて、この数字形式にまったく出会ったことがない人を見つけることができると確信しています。ほとんどのWebサイト/アプリは、ローカライズに対応するために変更なしで1,234.00を使用していたため、事実上の(すべての人がそれを見て理解できる普遍的な形式)と考えています。 日付に関しては、01/02/03を書くと、誰がそれを知るか(一義的で、すぐに、あいまいさなしに)日付が何であるかはわかりません。しかし、2003年1月2日、2003年2月1日、2001年2月3日など、私たちがそれらを書いたとしても、だれもが間違っていることはないでしょうか? この質問はローカライズを対象としていますが、「誰もが英語を読めるとは限りません!」それは国際化の問題だからです(このトピックを超えています)。ローカリゼーションに関する議論に固執しましょう。

17
コーディング時にバグの数を減らす方法は?
完璧な人はいませんし、私たちが何をしようとも、時々バグを含むコードを作成します。新しいソフトウェアの作成時と既存のコードの変更/保守時の両方で、発生するバグの数を減らすためのいくつかの方法/手法は何ですか?
30 bug 

11
失敗したプロジェクト:いつ呼び出すか?
数か月前、私の会社は、プロジェクトの白熱した緊急事態に手を出し、6人のチーム全員が基本的に5週間の「クランチウィーク」を終了しました。本番開始の48時間前に、私はそのうちの41人、2人で徹夜で作業しました。その真ん中に、これまでで最も成功した質問を投稿しました。 その間、「失敗」の話はありませんでした。それは常に「痛みに関係なく、成し遂げられる」ことでした。 事態は終わり、私たちは組織としてしばらくの間、学んだことをじっくりと検討する時間がありましたので、1つの質問がありました。「失敗」したと言うプロジェクトに参加したことがあるとは言えません。予算が遅れたり予算を超過したものもありましたが、悲惨なものもありましたが、私は常に何かを提供することになりました。 それでも、私は常に「失敗したITプロジェクト」について耳にします。私はそれに関する人々の経験について疑問に思っています。「失敗」を定義したパラメーターは何ですか?コンテキストは何でしたか?私たちの場合、私たちは外部クライアントを持つソフトウェアショップです。大企業の内部にあるプロジェクトには、「失敗」する余地がありますか?いつ電話しますか?するとどうなりますか? 私たちがやったことをやるのは賢明なビジネスの動きだとは全く確信していません。それは私の電話ではありませんでした(私は単なるコードモンキーです)が、損失を削減し、配信しないと言って先に進む方が良いのではないかと考えています。長時間の刺し傷のために、会社はプロジェクトでシャツを王室で失い、さらに従業員の士気と忠誠心に関する会社の無形の費用が大きかったとは言いません。このような注目度の高いプロジェクトを提供できなかったというPRヒットに反する要因は...そして、私は正しい答えが何であるかわかりません。

5
テスト駆動開発-納得させてください![閉まっている]
私は、一部の人々がテスト駆動開発の大規模な支持者であることを知っています。私は過去に単体テストを使用しましたが、簡単にテストできる操作、またはおそらく正しいと思われる操作をテストするためだけに使用しました。完全またはほぼ完全なコードカバレッジは、多くの時間がかかるようです。 テスト駆動開発を使用するプロジェクトは何ですか?特定のサイズを超えるプロジェクトにのみ使用しますか? 私はそれを使用する必要がありますか?信じさせて!

17
一貫したコーディングスタイルを持っていない同僚に対処しますか?
スタイルが悪いコードを書く傾向がある人と仕事をしているとき、あなたは何をしますか?私が話しているコードは通常、技術的に正しく、合理的に構造化されており、アルゴリズム的にもエレガントかもしれませんが、見た目はいだけです。私たちは持っている: 異なる命名規則とタイトルの混合(underscore_styleおよびcamelCaseおよびUpperCamelおよびCAPSすべては、同じ関数内の異なる変数に多かれ少なかれランダムに適用されます) 奇妙で一貫性のない間隔、例えば Functioncall (arg1 ,arg2,arg3 ); コメントおよび変数名に多くのスペルミスのある単語 私が働いているコードレビューシステムは優れているので、最悪のものを調べて修正することができます。ただし、50行の「ここにスペースを追加します。「イタレーター」を正しく入力してください。この大文字化を変更します。」などの50行で構成されるコードレビューを送信するのは本当にささいなことです。 この種の詳細にもっと注意を払い、一貫性を保つよう、この人にどのように勧めますか?


18
言語Xが得意なのはいつですか?
これは、彼女との会話に戻ります。プログラミング言語(C ++)で自分を良いと思うほど十分に感じていないことを彼女に伝えようとしました。彼女はそれから私に尋ねました、「さて、あなたはいつ自分を十分に良いと思いますか?」 それは興味深い質問です。私は彼女に何を伝えるべきか分からなかった。だから私はあなたに尋ねています。 プログラミング言語、フレームワークなどの場合、いつ座ってあなたがポイントに到達するか、あなたがやったことを見て、「ねえ、私は実際にこれでかなり良いです」と言いますか?「うん、私はXが得意です」と正直に言うことができるように、「良い」をどのように定義しますか。 さらに、他の人ができることを比較することで、これらの結論に達しますか? 追加情報 あなたがこの分野の専門家になるまでに1万時間かかる標準的な論文を読みました。(この論文が再び呼ばれることを知っている人への小道具) また、人々へのインタビューに関するコーディングホラーのさまざまな記事を読みました。一部の人々は、「フレームワークの外では機能できない」と言われました。したがって、それらはそのフレームワークにとって「良い」かもしれませんが、そうでなければ言語ではそうではありません。これは本当ですか?

26
誰かが教育なしでプログラマーとしての仕事を見つけることができますか?[閉まっている]
高校の学位を取得していなくてもプログラマーとしての仕事を見つけることができるかどうかを、より経験豊富な人から知ることに興味があります。この人は平均的なプログラマーであると考えてください。誰かが彼/彼女にインタビューの機会を与えることを検討しますか?関心のある言語はpython / php / java / c#です お住まいの地域/都市/国のみに回答してください。「学校に戻る」という回答はありません。

23
良いプログラミングメタファーとは何ですか?[閉まっている]
私は非プログラマーにプログラミングとは何かを説明することに言及しています。この質問を作成する前に、必ず同様の質問を検索しましたが、見つけた少数の質問は質問をかわすように見えたので、メタファーやアナロジーを具体的に見てみたいと思います。個人的には、比phorや類推を使用することで、技術的な何かを誰かに説明する方が簡単だと感じています。 私がこれに興味を持っている理由は、多くの人が毎日プログラマーの仕事に出くわしているからです。しかし、平均的な人にプログラマーが何であるかを尋ねると、彼らは本当に知りません。これは、誤解の特定の状況につながります(例:「[...]しかし、私はあなたがコンピューターが得意だと思った!」) 私は本当に最高のものを見つけたいです。私のキャリアの選択について誰かに簡単に説明できるようにしたいと思います。もちろん、少なくとも一般的なアイデア。 私は個人的にはしっかりしたものを持っていませんが、私はそれについて長い間考えており、通常はコンピューターが理解する言語を知っているため、コンピューターに何をすべきかを伝えることができる「言語」のメタファーに引き寄せられました私たちの問題を解決するために、それらを「教える」。 例えば: 代替現実では、人工知能を備えたヒューマノイドロボットが存在し、一部の人々は英語のバリエーションである共通言語を介してそれらと通信できることを想像してください。ロボットと通信できるこれらの人々は、特定の問題の解決方法や、家事のような特定のタスクを実行する方法を教えることができます。 まあ、そのようなロボットはまだ存在していませんが、私たちの時代のプログラマーはそれらの人々と似ていますが、ロボットと通信する代わりに、コンピューターと通信します。プログラマーは、この「共通言語」を使用して作成したソフトウェアを使用して、特定のタスクの実行方法や特定の問題の解決方法をコンピューターに「教え」ます。 プログラマーとこの「共通言語」は、電子メール、ウェブサイト、ビデオゲーム、ワードプロセッサ、スマートフォン(簡単に言うと)、および私たちが日常的に使用する他の多くのものを提供します。 私はプログラミングを王座などに置くつもりはありません。それは私が思いつく限りの最高の比metaです。 誰かがこの問題に何らかの問題を見つけると確信しています。おそらく少し不自然かもしれませんが、それがこの質問をしている理由です。

1
自分でシステムを開発する場合、マイクロサービスを使用する必要がありますか?
私は仕事で新しいプロジェクトを始めており、おそらくプロジェクトのほぼ唯一の開発者になりますが、他の1人または2人の開発者は、既存のアプリケーションまたは単純なスクリプトをメインプロジェクトに統合する必要があります。このプロジェクトでは、小規模のバルクデータとストリーミングデータの取り込み/処理、およびイベント駆動型とオンデマンドの両方のコード実行を処理する必要があります。フレームワークの一部はCPUに強く依存し、一部はI / Oに強く依存します。ほとんどのデータは単一のマシン上に存在する必要がありますが、クラスターを作成してVMを接続し、利用可能な計算能力を向上させることができます。おそらく、このコアフレームワークが提供するサービスに依存する1つ以上の小さなWebアプリケーションがあるでしょう。主な言語は、ほぼすべてのPythonです。 私の質問は、開発の大部分を自分で行うことを考えると、このような取り組みにマイクロサービスアプローチを採用すべきか、モノリシックアプリケーションに固執すべきかということです。私の考えでは、マイクロサービス(Namekoを使用)は、異なる実行モデル(データパイプライン、イベント起動、オンデマンド、Webアプリケーションなど)を持つフレームワークの要素を自然に分離し、ワークロードと複数のプロセスにわたる通信。私の懸念は、おそらくシステムの実行を容易にするために必要な複数のサービス(rabbitmq、redisなど)を管理するKubernetesクラスター(私はDockerに精通していますが、Kubernetesにはまだかなり新しい)になることです。そして、潜在的に私たちが必要なすべての機能を実際に実装するための多くの小さなコードの塊 開発者が1人しかいないプロジェクトの場合、マイクロサービスはこのような複雑なシステムの開発と保守を引き続き簡素化しますか?代わりに使用することを検討する必要があるメソッド/システム/フレームワークはありますか、またはこの方法でシステムを設計する際のオーバーヘッドを削減するためにありますか?

13
組織のコーディングスタイルはオプションですか?
このプログラミングスタイルのドキュメントには、次のような一般的なルールがあります。 強い個人的な異議がある場合、規則に違反する可能性があります。 これは私が考えている方法と衝突し、コーディングスタイルが実際に重要であると言っている多くの記事があります。たとえば、これは言う: コーディング標準ドキュメントは、開発者にコードの記述方法を伝えます。各開発者が独自のスタイルでコーディングする代わりに、ドキュメントで概説されている標準に従ってすべてのコードを記述します。これにより、大規模なプロジェクトが一貫したスタイルでコーディングされるようになります。パーツが異なるプログラマーによって異なって記述されることはありません。このソリューションはコードを理解しやすくするだけでなく、コードを見た開発者がアプリケーション全体で何を期待するかを確実に知ることができます。 だから、私はこの文書とこの質問の冒頭の引用から何かを誤解していますか?コーディングスタイルを本当に無視できるのでしょうか? たぶん、私は十分に明確ではなかったので、この編集では、少し明確にするつもりです。 私はチーム用にコーディングスタイルドキュメントを作成していますが、いくつかの静的アナライザーを使用してスタイルを確認したいと思います。失敗すると、Jenkinsはメールを送信します。そして、スタイルが一致しない場合、コードレビューに失敗します。これは明らかに最初の引用と衝突します。 しかし、引用が正しい場合、誰かが望むことを何でもできるなら、コーディングスタイルドキュメントの使用は何ですか?

10
抽象クラスのインターフェース
同僚と私は、基本クラスとインターフェイスの関係について異なる意見を持っています。インターフェイスの実装が必要なときにそのクラスを使用できる場合を除き、クラスはインターフェイスを実装すべきではないと考えています。言い換えれば、私はこのようなコードを見たい: interface IFooWorker { void Work(); } abstract class BaseWorker { ... base class behaviors ... public abstract void Work() { } protected string CleanData(string data) { ... } } class DbWorker : BaseWorker, IFooWorker { public void Work() { Repository.AddCleanData(base.CleanData(UI.GetDirtyData())); } } DbWorkerは、インスタンス化可能なインターフェイスの実装であるため、IFooWorkerインターフェイスを取得するものです。契約を完全に満たします。私の同僚はほぼ同じものを好む: interface IFooWorker { void Work(); } …

3
OOPSで「S」は何を表していますか?
Googleで「OOPS」の完全な形式を検索しましたが、残念ながら、あいまいな答えがたくさんあります。「システム」と言う人もいれば、「構造」と言う人もいれば、「あらすじ」と言っている人もいます。 誰かが私を啓発して、OOPSの完全な形を見つけて、適切で正しい参照を見つけることができますか? 皆に感謝し、私を助けてくれました。

8
開発者間で作業を分割する最良の方法は何ですか
私のチームと私は、約10年前に開発したサイトを再構築しています。アジャイルでそれをしたいと考えています。 そのため、読書に多くの時間を費やした後(おそらく十分ではない)、開発者間で作業を分割する方法についての質問に苦労しています。 もっと具体的に言うと、サイトは互いにあまり統合されていない別々のモジュールに分割されていると言います。 開発者間で作業を分割するための最良/最も受け入れられている方法は何ですか? 作業するために各人に異なるモジュールを与える。 すべての開発者を同じモジュールに割り当て、モジュールの異なる部分(UnitTesting、DALおよびマッピング、ロジック、UI)で作業を分割します すべての開発者を同じモジュールに割り当て、異なるロジック(たとえば、各開発者が特定のロジック(おそらくBLのメソッド)を担当する)と、そのUnitTesting、DAL、およびマッピングとUIによって作業を分割します... それとも完全に異なるものですか?


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