ソフトウェア工学

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

22
なぜ16進法を学ぶのですか?[閉まっている]
私は今日、かなりの数のイントロプログラミングクラスを受講しました。主に、私が見つけたあらゆる種類のプログラミングに足を踏み入れるためです。驚くことではありませんが、ほぼすべてのクラスが同じ形式で実行されます。ハードウェアの紹介、ソフトウェアの紹介、そして実際のプログラミングに進みます。ハードウェアとソフトウェアがどのように機能するかを理解することは非常に重要ですが、私は常にすべてのコースにある1つのトピックに混乱しています。 私が見つけたソフトウェアの紹介セクションでは、必ず2進数、16進数、さらには8進数のシステムで読み書きできることに重点を置いています。これらが何であるか、そしてコンピューターがそれらをどのように解釈するかを理解することは良いことだと理解していますが、これらの数値システムの読み書きの方法を実際に知る必要があることはありません。本当に、私がベース10以外のものを見たのはCSSの色の場合だけです。これはwww.colorpicker.comのようなものを使用すればさらに簡単です プログラミングの世界でこれらの非10進数システムの素晴らしい使用法を知らなかったのですか、それともすべてのプログラミング教科書にこれらのセクションを含めるのは昔からの伝統ですか?平均的なプログラマが実際に8進数を使用する場所の良い例はありますか?

12
最悪または最も厳密に定義されている設計パターンは何ですか?[閉まっている]
すべてのプログラミングプロジェクトについて、過去のプログラミング経験のあるマネージャーは、プロジェクトのデザインパターンを推奨するときに輝かそうとします。理にかなっている場合、またはスケーラブルなソリューションが必要な場合、デザインパターンが好きです。たとえば、プロキシ、オブザーバー、コマンドパターンを積極的に使用してきましたが、毎日そうしています。しかし、オブジェクトを作成する方法が1つしかない場合、Factoryは将来的にすべてを簡単にする可能性がありますが、コードを複雑にし、純粋なオーバーヘッドであるため、Factoryパターンを使用することを本当にためらっています。 だから、私の質問は私の将来のキャリアと、ランダムなパターン名を投げるマネージャータイプに対する私の答えです: どのデザインパターンを使用しましたか?最悪の設計パターンはどれですか、それらが理にかなっている単一の状況を除いて考慮する必要があるものです(読んでください:どの設計パターンが非常に狭く定義されています)?(アマゾンの全体的な良い製品のネガティブなレビューを探して、デザインパターンを使用する際に最もバグを起こした人々を探しているようです。)そして、ここでアンチパターンについてではなく、通常と考えられるパターンについて話しています「良い」パターン。 編集:一部の人が答えたように、問題はほとんどの場合、パターンが「悪い」のではなく「間違って使用されている」ことです。パターンを知っていれば、それはしばしば誤用されるか、使用するのが難しい場合でも、答えとして当てはまります。

18
なぜそんなに多くのプログラミング作業があるのでしょうか?[閉まっている]
ソフトウェアの進化により、なぜプログラミングの仕事がまだ「終わっていない」のだろうか。たとえば、私は開発者です。つまり、私はソフトウェアに関心があります(主にインターネットを閲覧するためだけにコンピューターを必要とするタイプの人間ではないことを意味します)。私のUbuntuマシンでさらにアップデートを受け取ります。 私は必要なものすべてを提供し、更新プログラムはさまざまなバグ修正/改善を提供しますが、残りの人生で現在の状態でそれを使用しても構いません。2年間のUbuntuの使用について、深刻なバグ/問題にぶつかったことはありません。 別の例はWindowsです。ユーザーのほぼ半数は、実際には古代のWindows XPをまだ使用していますが、すべてのニーズを満たしていると感じています(そして、私は同意します)。 もっと多くの例を挙げてみることができますが、今までにあなたは私の論点と私の質問を理解しています。新しいプラットフォームで実行され、いくつかの新鮮な開発作業を必要とする新しい「トレンド」(新しいモバイルOSなど)が常に表示されますが、ソフトウェアの努力の大部分は「完成したプロジェクト」または少なくとも、完了したと見なされるのに十分なプロジェクトの状態。 説明がありますか?
28 business 

11
厳しい締め切りにもかかわらず効率的なコードを書く方法
私は、成果物の期限が厳しいプロジェクトが多数ある環境で働いています。クライアントと直接話をすることもあるので、仕事を迅速かつ迅速に行うことが必要です。 私の問題は、私が頭に浮かぶ最初のソリューションのコードを常に書いているということです。もちろん、その瞬間に最高だと思いました。しかし、それは常にいものになり、後でそれを行うためのより良い方法があるが、時間制限のために変更する余裕がないことを後で理解します。 コードを効率的かつ時間通りに配信するためのヒントはありますか?

13
学習する「間違った」言語を選択することに多くの恐れがあるように見えるのはなぜですか?[閉まっている]
おそらく私だけかもしれませんが、現在のCS学生として、このサイトや他の場所で、「xに使用する言語は?」だけでなく、すでに多くの質問に出くわしました。しかし、「誰もがまだ言語Yを使用していますか?」私の最初のCSクラスはSchemeで教えられましたが、それが間違っていなければ、(少なくともJava、PHP、Pythonなどの言語と比較して)広く使用されていません。私のクラスメートの多くは、二度と使用する必要のない言語を習得しなければならないという考えに口を閉ざしましたが、あまり人気のない言語を学ぶことに対するこの恐怖の多くがどこから来たのかはよくわかりません。いいえ、取得した仕事でSchemeを使用することはできませんが、Schemeを使用することを学んだことを確かに後悔していません(ただし、非常に初心者であり、その1学期ではあまり詳しくありません)。今学期は検索エンジンクラスを受講していますが、これはPerlで行われ、再びクラスメートが言語の選択について不平を言っているのを見ています。好きな言語を持っていることや他の言語を嫌うことは理解できますが、そもそもそれを習得するのに苦労する人がいるのはなぜですか?「間違った」言語を本当に学べますか?SchemeやHaskellなどの良いメンタルエクササイズを他に何も学んでいないのに、少なくとも問題を解決するさまざまな方法に触れるのに役立つのではないでしょうか。

6
関数型言語を学ぶことは、より良いOOPプログラマーになりますか?[閉まっている]
Java / C#/ C ++プログラマーとして、関数型言語について多くの話を聞いていますが、関数型言語を学ぶ必要はありません。関数型言語で導入されたより高いレベルの思考が、より優れたOOP /手続き型言語のプログラマーになると聞いたことがあります。 誰でもこれを確認できますか?どのような点でプログラミングスキルが向上しますか? それほど洗練されていない言語でスキルを向上させることを目標に学習する言語の適切な選択は何ですか?

16
浮動小数点の落とし穴を避けるために、プログラミング言語に何ができるでしょうか?
浮動小数点演算とその欠点の誤解は、プログラミングにおける驚きと混乱の主な原因です(「数値が正しく加算されない」に関するスタックオーバーフローの質問の数を考慮してください)。多くのプログラマーがその意味をまだ理解していないことを考慮すると、多くの微妙なバグを(特に金融ソフトウェアに)導入する可能性があります。精度があるもののために重要ではないとき、まだその速度を提供しながら、プログラミング言語は、概念に慣れていないもののためにその落とし穴を避けるために何ができるん概念を理解できますか?

8
「障害駆動型開発」についてどうすればよいですか?
当店では、アジャイルであるよう努めています。そして、私たちは大きな進歩を遂げていると思います。そうは言っても、私たちの何人かは、「障害駆動型開発」と呼んでいるパターンを発見しました。 障害駆動型開発は基本的に、バグ/機能が受け入れ基準を備えたタスクやストーリーではなく、欠陥追跡ソフトウェアに入力された欠陥によって導かれるアジャイルなリリース/反復サイクルとして記述できます。 私たちのチームには、顧客からの受け入れ基準の取得に努める優れたプロジェクトマネージャーがいますが、常に可能であるとは限りません。私の開発委員長から、これは顧客が自分が望むものを正確に知らないか、顧客の本社の2つの異なる「キャンプ」がストーリーの実装方法と対立するためです。キャンプAは、機能Xがこのように機能することを大まかに指示し、キャンプBはそのように機能しないために失敗します。したがって、「FDD」という用語。プロセスは「失敗」によって駆動されます。 これは私の質問につながります:他の誰かがこれに遭遇しましたか?もしそうなら、それを扱うためのヒント/提案はありますか? もちろん、キャンプAとBが事前に同意するように試みましたが、これは必ずしもそうではないことを誰もが知っています。 ありがとう

9
カラースキームの生成-理論とアルゴリズム[終了]
チャートと図を作成し、配色とアルゴリズムの例に関する理論を探しています。 質問例: 補色または類似色を生成する方法は? パステル調、寒色、暖色を生成する方法は? ランダムではあるが異なる色をいくつでも生成する方法は? すべてを16進数のトリプレット(ウェブの色)に変換する方法は? 私の実装はAS3になりますが、擬似コードの例は大歓迎です。

6
メイン開発プラットフォームとしてEC2インスタンスを使用[終了]
私の問題 私はさまざまな企業のコンサルタントとして働いています。各企業は、ソフトウェアを搭載したラップトップを提供してくれます。また、開発環境がある独自のラップトップも持っています。私は2年ごとに新しいラップトップを購入する傾向があり、ソフトウェアの設定とインストールに多くの時間を費やしています。また、ラップトップが処理するのを待つのに多くの時間を費やしています。 これらのすべての問題を解決するために、私はEC2(実行中のWindowsインスタンス)をメインの開発プラットフォームとして使用することを検討しており、たまたまPCからアクセスするだけです。ラージインスタンス(最も安価な64ビット)を1日8時間1年間実行すると、年間960ドルかかりますが、これは許容範囲です。 毎日職場に近づくと、電話を1回タップしてインスタンスを起動するので、仕事を始めると準備ができていると思います。さまざまなインスタンスタイプを起動するには、電話機に異なるアイコンが必要です。もちろん、同じソフトウェアをさまざまなハードウェアに自動的にロードする必要があります(68.4 GBのメモリを備えたインスタンスが必要になることもあります)。 別の利点は、インスタンスに特定の問題がある場合、別のインスタンスを起動し、誰かに問題を調べて画像を更新させることができることです。 私の質問: EC2でこのようなセットアップを行った経験はありますか?どのような問題が予想されますか?

2
MVCアーキテクチャのベストプラクティス[終了]
私の質問は、MVCアプリケーションの設計方法に関するものです。たとえば、RepositoryパターンでDIを使用してデータアクセスをコントローラーから分離することをお勧めしますが、HOWではMVC専用にこれを行うとはほとんど言われていません。たとえば、Repositoryクラスはどこに配置しますか?モデルは、実際のデータアクセステクノロジーから同様に比較的分離する必要があるため、特にモデルに関連しているようには見えません。 2番目の質問には、レイヤーまたは層の構成方法が含まれます。ほとんどのサンプルアプリケーション(オタクディナー、ミュージックストアなど)はすべて、通常はL2SまたはEFコードを直接呼び出すコントローラーを持つ単一層の2層アプローチ(テストをカウントしない)を使用しているようです。 多層/レイヤーアプリケーションを作成する場合、MVCに関するベストプラクティスは何ですか?

7
イースターエッグに対してどんな議論がありますか?イースターエッグをサポートするための議論はありますか?[閉まっている]
私は少し道化師なので、イースターエッグのアイデアはまだ私にアピールします。以前にコードにそれらを追加しましたが、私の友人グループは、CTRL-FUを使用して卵をトリガーするという冗談を言っています。 今、私もパフォーマンスについて少し偏執的ですので、可能な限り過剰を取り除くのが好きです。イースターエッグは100%余分なコードであるため、これは大きく矛盾しています。 イースターエッグに対してどのような議論がありますか?また、イースターエッグをサポートするための議論もありますか?

5
Javaパッケージ名の規則に欠陥はありますか?[閉まっている]
私たちは皆、ドメイン名を変えるJavaパッケージ名の慣習に精通しています。つまりwww.evilcorp.com、慣例により、Javaパッケージを使用することを選択しますcom.evilcorp.stuff。 ますます私はこれにうんざりしています。商用プログラマーとして、ソフトウェアのパッケージ名はブランドの変更、買収などのために完全に無関係であるということに何度も遭遇します。 オープンソースの世界では名前の変更が少ないので、理にかなっています。しかし、多くの(商用/内部)ソフトウェアの保存期間は、それらを作成する組織の保存期間よりもはるかに長いようです。 この問題は、ソフトウェアプロジェクトがマーケティング部門を率いて、特定のプロジェクトを指すdu duという名前を使用することで、さらに悪化することがよくあります。皇帝の新しい服に新鮮で新しい感じを与えるために、3か月後に必ず変更される名前。 このため、逆ドメインをパッケージ名として使用することをほとんどやめました。確かに、これが大規模に行われた場合、名前の衝突のリスクがありますが、「ユニークな」ソフトウェア名を使用するか、一般的な言葉を避けるか、ライブラリとして販売/リリースされるプロジェクトにリバースドメインを使用することで確実に軽減されます。 他の考え?
28 java  naming 

15
大学や大学に行かなくても、しっかりしたプログラミング基盤を得ることができますか?[閉まっている]
まず、私はすでにサイトを検索し、以前の「独学対大学」のトピックをすべて読みました。回答の大部分は、2つの主な理由から、大学に行くことが最良の選択であると擁護しました。 大学に行くと論文が得られます。これは、特に厳しい経済状況の場合、上陸の仕事に不可欠です。 大学に進学することで、しっかりとしたプログラミングの基礎が得られ、その後の言語/進路に関係なく不可欠な原則を教えることができます。 ここに私の質問があります:私はすでに自分の会社(ウェブサイトを構築している/アフィリエイトマーケティングを行っている)と安定した財務状況を持っているので、理由1についてまったく心配していません。仕事のために。 しかし、理由2が心配です。つまり、私は他の誰と同じくらい強固なプログラミング基盤を持っていることを確認したいのですが、自己学習でそれが可能かどうか疑問に思っています。 離散数学、アルゴリズム設計、プログラミングロジック、コンピューターアーキテクチャ、アセンブリ、Cプログラミング、データベース、データ構造など、ほとんどの書籍、オンラインリソース、大量のコーディングを使用して、非常に基本的なことを勉強するとします。これらの基本をカバーするのに1〜2年費やしたとします。 私の基盤はしっかりしていると思いますか、それとも大学に行った人と比べてまだ足りないと思いますか?
28 skills 

13
時代遅れの同僚を扱う
私はかなり若いプログラマーであり、中規模の会社のIT部門で働いています。同僚がいますが、彼は本当に優れたVisual Basic 6プログラマです。そして、私は本当に良いことを意味します。正直に。彼は、最初のコーヒーを手に入れてマシンを起動する必要があるときに、バグをほとんど含まない実用的なアプリケーションを提供できます。彼はちょうどいいです。 事は、私達はチームと協力しており、彼の働き方は完全に時代遅れです。彼はソフトウェアのバージョン管理を信じていません(コードが正しいことを確認するだけであれば、そのナンセンスは必要ありません)。展開を信じていません(実行可能な実行可能ファイルを配信できます。展開方法は、システム管理者が判断するためです)。抽象化を信じていません。(「サブルーチンを作成したい場合は、先に進みますが、そのサブルーチンからサブルーチンを呼び出さないでください。そのように面倒になり、コードを追跡するのが難しくなります。 'または'はい、そのライブラリを使用してそれを行うことができますが、その方法では何が起こっているのか本当に理解していません)」と確かにOOPを信じていません。(VB.netで作業しています) 彼は自分の仕事がとても上手で、私よりも早くアプリケーションを配信できます。しかし、チームでは機能しません。私たちの他のチームメンバーは静かで、発言するのは好きではありませんが、彼は同意する傾向があります。私たちのマネージャーは、私が正当な点を挙げていると思いますが、プログラマーではありません。 私は彼が書いたプログラムを維持するのに本当に苦労しており、それは良いチームの雰囲気にはなりません。私にとって何が一番いいと思いますか?

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