ソフトウェア工学

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

5
DOM /組み込みオブジェクトプロトタイプの拡張が悪い考えなのはなぜですか?
私は、JSの開発者コミュニティで、組み込みプロトタイプの拡張が非常に厳しく制限されている理由に対する決定的な答えを探しています。私はしばらくの間、プロトタイプJSフレームワークを使用して、そして私がやってにしてきた[1,2,3].each(doStuff)よりもはるかにエレガントなようです$.each([1,2,3], doStuff)。私はそれが「名前空間汚染」を引き起こすことを知っていますが、なぜそれが悪いことであると考えられるのか理解していません。また、組み込みプロトタイプの拡張に関連する実際のパフォーマンスの低下はありますか?ありがとう!

8
一部のオープンソースライブラリがバイナリを提供しないのはなぜですか?
一部のオープンソースライブラリがバイナリを提供しないのはなぜですか?一部のプロジェクトは、特にWindowsビルドの場合、ソフトウェアの現在のビルドを維持しているサードパーティに遅れることに気付きました。 図書館の採用の障壁のように思えるので、お願いします。開発者は環境を構築して構築する必要があるため、開発者にとってはより多くの作業です。また、開発者は、ライブラリを誤って構築することでバグが発生することを心配する必要があります。 編集:コメントと回答に対処するためのいくつかの更新。議論の中心ではないので、例を削除しました。また、私の質問を「オープンソースライブラリが提供する傾向がある」ではなく「一部のオープンソースライブラリが提供する」と言い直しました。

3
組み込みシステムでスクラムを使用した非機能的な作業をどのように処理しますか?
組み込みシステムのスクラムには2つの問題があります。第一に、特に初期段階では多くのタスクを実行する必要がありますが、それは実証できません。開発ボード、OS、ディスプレイ、シリアル通信などから始めました。6つのスプリント用のディスプレイはありませんでした。 最初の4つのスプリントは次のとおりです。 取得RTOSを起動して実行 ネットワークおよびシリアルドライバーを作成するタスクの作成 ボタン、通信などの割り込みルーチンの作成 プライマリデータベースのクラスとメソッドの作成 シリアルデバッグメニューの作成 これらのタスクのほとんどは、ユーザーストーリーにはあまり適していません。実際、システム全体への唯一のインターフェースは、スプリント3に組み込まれたシリアルデバッグメニューであったため、スプリントの最後にデモンストレーションするものはありませんでした。シリアルメニューでさえ、エンドユーザーではなく内部使用を目的としていました。それにもかかわらず、私はまだスクラムを介してこれらの開発活動を追跡および管理したいと考えています。 「開発者として...」などの「ユーザーストーリー」というフレーズを書くことになりましたが、これは満足できませんが、ターゲットプロセス(www.targetprocess.com)を使用する場合、バックログアイテムという概念はありません。タスクまたは雑用。 次に、リリースとテストをどのように処理しますか?テスターに​​はハードウェアデバッガーがないため、非常に苦痛です。したがって、コードのフラッシュバージョンをビルドし、テストするために開発ボードに書き込む必要があります。テスターは技術的には開発者ほど鋭くなく、多くの場合、初期段階(ボードのリセット、シリアル通信の接続など)で作業を行ったり、出力を理解したりするのに多くのサポートを必要とします。 最後に、完了の定義に関して、スプリントはすべてのストーリーが完了するまで完了できません。すべてのストーリーは、テスターに​​よって検証されるまで完了しません。開発者がテスターに​​与える時間を「奪う」ことを避ける方法はありません。つまり、スプリント内の最後の3つのユーザーストーリーのテストに5日間かかる場合、スプリント終了の5日前にコーディングしてユニットテストを行う必要があります。開発者は何をすることになっていますか?仕事をやめる? 私は面白く思っていますが、ルールに準拠しようとするのは本当の問題です。今、私はルールを曲げることに問題はありませんが、私が抱えている問題は、テストされるまで物事をマークできない場合、すべてのバーンダウンメトリックを台無しにします。 他の人がこれらの状況をどのように処理したか聞いてみたい。

11
ソフトウェアチームの本質的な動機付けを促進する方法[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 10か月前に閉鎖されました。 ジェフ・アトウッドのAmazonの機械トルコ人のブログの記事は、それが金銭的な報酬ではなく、提供してはならないことを示唆している本質的な動機を、「タスク自体に興味や楽しさによって駆動される動機、むしろ任意の外部の圧力に頼るよりも、個々の中に存在しています。」 チームメンバー(マネージャー、リード、または開発者)は、ソフトウェアチームの本質的な動機付けをどのように促進しますか? 編集:包括的な回答を提供してください。客観的な分析であなたの個人的な経験を共有してください。 編集#2:生産的でトピックに関する議論を促進するために、開発者にとって金銭的な補償は十分であると想定する必要があります。

15
本物のプログラマはデバッガを使用しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 経験豊富なプログラマーが実際にデバッガーを使用する場合、および使用する場合はどのような状況で使用するか。その質問に対する答えでは、「数か月」前に言ったが、おそらく「年」を意味していた-私は実際にデバッガを使用していません。私の具体的な回答可能な質問は、どのような状況下で、経験豊富なプログラマーとしてデバッガーを使用しますか?
15 debugging 

6
「JSON Object」と言っているのは冗長ですか?
JSONがJavaScript Object Notationの略である場合、JSONオブジェクトと言うとき、あなたは本当に「JavaScript Object Notationオブジェクト」と言っているのではないでしょうか? 「JSON string」と言う方が正しいでしょうか? それとも、単にJSONと言う方が正しいでしょうか?(「これらの2つのサービスは、それらの間でJSONを渡します」のように。)

4
無料ソフトウェアの無料アートワークを入手するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 多くのフリーソフトウェアプロジェクトには美しいアート、特にWebサイトがあり、コーダーとアーティストの出会いはどこにあるのでしょうか。地元の美術専攻の教育委員会以外にこれを求める場所はありますか?私はIRCについて考えましたが、実際にそこに尋ねることで、小さくて頻繁なユーザーベースを悩ますかもしれないと恐れています。

8
プログラムコードとグラフィカルインターフェイスコードを異なるクラスにパッケージ化することがベストプラクティスと見なされるのはなぜですか?
だから私の先生は、プログラムコードとグラフィカルインターフェースコードを同じクラスにカプセル化しないことが非常に重要であるが、それらを完全に独立した状態に保つことが非常に重要だと教えてくれます。私は現在、グリッドを使ってiPhoneゲームを書いています。私にとっては、同じ「グリッド」クラスでグラフィカルグリッドと技術コードの両方を作成する方がはるかに理にかなっています。他のプログラマはこれに眉をひそめますか?グラフィカルインターフェイスとコードを独立させることは本当に非常に重要ですか?そうしないとどのような問題が発生しますか? ありがとうございました! 編集:みんなありがとう!最初にプロジェクトを作成し、次にコードをコピーして懸念事項の分離設計を作成してもかまいませんか?私はこれが目的を完全に打ち負かすかもしれないことを知っていますが、練習として...だから、次回からこのデザインパターンを最初から適用できますか?

3
プラットフォームと「言語文化史」はどのような役割を果たしますか?
私は最近これに出くわしました数年前の記事。言語の実際の違いではなく、VBとC#を取り巻く文化の大きな違いが、C#コーダーが一般にVBコーダーより才能があることに貢献すると主張します。明らかに、それは多くの火炎戦争を引き起こし、C#ersとVBersのどちらが愚かであるかという質問には答えられません。そうは言っても、特定のプラットフォームを取り巻く文化がチームの質に貢献していると、作家は主張しています。たとえば、現時点ではJavaでアプリを開発する方が効率的ですが、Google Go開発者のチームは、Java開発者のチームよりも平均して高い能力を持っているようです。超初期の採用者であり、フロンティアハッキングの達人になること。簡単に言えば、あるプラットフォームまたは別のプラットフォームを取り巻く文化は、そのプラットフォームの平均的な開発者の品質に、もしあれば、どのような影響を与えますか?

6
開発環境への関数型プログラミングの導入[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 これは長い話ですが、できる限りベストを尽くして要約します。私たちは、さまざまな種類の資金のためのソフトウェアを書く.NETショップです。たとえば、健康保険金請求管理ソフトウェア、年金管理ソフトウェア、401(k)ソフトウェア、およびその他の金融タイプのものを作成します。 今、私たちは新しい領域に入ります:デリバティブと定量分析タイプの仕事です。これは、私が言われた次の8〜12か月で落ちてくるものです。 今、私は自分自身でいくつかの関数型プログラミングを学びました。主に、この本を通してさまざまな言語の表面的な目線を見ただけですが、深く掘り下げたことはありません。今、私たちは.NETショップなので、F#が良い選択だと思っていました。なぜなら、.NETライブラリと既存の知識を潜在的に活用できるからです。 私の質問は、どこから始めればいいですか?Haskell、Erlang、Scala、F#などと一緒に行くべきかどうかを判断しようとするのは非常に困難です。これらはすべて非常に興味深く、能力があるように見えます。 誰も同じような状況がありましたか?そうだとすれば、機能性へのジャンプを行った経験は何でしたか?私はこれが一種の大きな質問であることを知っていますが、現在関数型のメソッドを使用している開発者は知りませんので、グーグルを絶えず変え、最高の関数型言語のどこでも炎の戦争を見つけること以外に私は他にどこにもありません。

3
ペア交換:長所と短所は何ですか?
ほとんどのアジャイル / XP理論家が支持している一般的な考え方は、ペアは定期的に交換する必要があるようです。たとえば、各プログラマは1日に1回ペアを交換する必要があります。一日の始めに人の半分、昼食後に人の半分が入れ替わります:会議、休日などの外部要因により、ほとんどの人は週に1、2回スワップ時間を反転させ、ペア構成が分散する傾向がありますチーム全体でほぼ均等に。 頻繁にスワッピングを行う理由の1つは、特定のスキルや知識が特定の個人に集中するのではなく、知識がチーム間で迅速かつ均等に分散することです。ペアプログラミング自体を取り巻くドグマの一種の帰結である別の理論的根拠は、誰かがあなたを交換するたびに、新しいペアの目で新しいコードレビューを取得しているため、コードの品質を向上させることです。 どちらの主張も理にかなっています。管理の観点から見ると、安定性と品質の両方が向上したように聞こえます。このような頻繁な交換は、私が見たほとんどのアジャイル / XPの本でかなり標準的な理論です。 だから、実際に実行するとき、人々は実際にペアスワッピングについて何を考えますか プログラマーの視点? マネージャーの視点? そして 誰かがペアから/にスワップするとき、何を決定する必要がありますか?

5
バグを修正するためにソースコードをリリースすべきですか
作成中のアプリケーションにバグがあります。SOについて質問したところ、ユーザーの1人がすべてのコードを投稿または送信して、彼がそれを見ることができるように頼みました。 リクエストを完全に理解しています。それは有効で理解できます。しかし、私はそうすべきかどうか疑問に思っています。明らかに、私は彼/彼女に王国への鍵を与えます、そして彼/彼女が悪意のあることをするならば、私は頼りになりません。 私はまた、彼らの助けを提供したSOのユーザーに無礼を意味しないことを付け加えたいと思います。私はただ懸念を放映しています。 バグを修正したいのですが、この人がそれを修正できるという保証はありません。 ソースコード全体をリリースし、ベストを期待すべきですか?それとも、それを保持し、自分でそれを理解しようとしますか? あなたならどうしますか?

6
優れたAPIの共通点は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 優れたAPIが優れている理由は何ですか?「1つのことをして、それをうまくやる」というマントラに従うことは良い兆候であり、存在することは問題領域への良いマッピングであることが重要であると思いますが、素晴らしいAPIには何が共通していますか?
15 api-design 

8
自己更新アプリケーション-哲学
これは哲学的な質問です。 架空のデスクトップアプリケーション、および自動更新(Webサイトへの移動、更新の確認、更新のダウンロード、インストールを強制するのではなく)を提供したいという要望がある場合、どちらが「ベストプラクティス」アプローチですか。 同様のiTunes、それは新しいバージョンとプロンプトの新しいバージョンをダウンロードするユーザーがいるかどうかを確認します。その場合、フルバージョンをインストールするフルインストール実行可能ファイル(この場合はWindowsインストーラーファイル(.msi))をダウンロードします(以前のバージョンへのアップグレードだけでなく、複数のバージョンが存在する場合は管理が多すぎます) 。つまり、バージョン10.1.1であるとしましょう。フレッシュインストールでもアップグレードでも、同じファイルを使用します。ダウンロード後、アプリケーションを閉じてインストールファイルを自分で実行するようにユーザーに指示します。 他のバージョンと同様に、新しいバージョンをチェックしてユーザーにダウンロードを促しますが、実行可能ファイルをダウンロードしてユーザーに実行を促す代わりに、実際に実行します-開いているプログラムをシャットダウンし、取得しますファイルをインストールするために必要なセキュリティ。 #2の問題:プログラムは他のプログラム(OutlookおよびExcel)を開くことができるため、プログラムを終了することに関する多くの問題、またはユーザーが何かの途中にいた場合はどうなりますか。また、セキュリティに関しては、インストールするためにローカル管理者のアクセス権が必要ですが、それを持っていない場合はどうなりますか?Windowsの以降のバージョンでは、ユーザーのセキュリティを単に上書きすることはできません。 #1の問題:一部の人々は、これは非常に困難であり、エンドユーザーにとって多大な労力があると考えています。 プロジェクトで80〜120時間を節約でき、実装と保守がより簡単になるため、#1を使用することを強くお勧めします。ただし、あらゆる面で強く感じる人がいます。 このようなことのベストプラクティスは何ですか?

5
条件式でビット演算子を使用するのが適切な場合
まず、いくつかのバックグラウンド:私はトレーニング中のIT教師であり、10年生のクラスにjavaのブール演算子を導入しようとしています。教師と指導者は、準備したワークシートを確認し、単一の&または|を使用できるとコメントしました。「同じことをする」ため、演算子を示します。 &と&&の違いを認識しています。 &は、整数間の使用を目的としたビット単位の演算子で、「ビットトゥイドリング」を実行します。 &&は、ブール値間で使用するための条件演算子です。 これらの演算子が常に「同じことをする」わけではないという点を証明するために、ブール値間でビット単位を使用するとエラーが発生する例を見つけました。この例を見つけました boolean bitwise; boolean conditional; int i=10, j=12; bitwise = (i<j) | ((i=3) > 5); // value of i after oper: 3 System.out.println(bitwise+ " "+ i); i=10; conditional = (i<j) || (i=3) > 5 ; // value of i after oper: 10 System.out.println(conditional+ " "+ i); …

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