ソフトウェア工学

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

6
二重再帰関数のランタイムを決定するにはどうすればよいですか?
任意の二重再帰関数がある場合、実行時間はどのように計算しますか? 例(擬似コード): int a(int x){ if (x < = 0) return 1010; else return b(x-1) + a(x-1); } int b(int y){ if (y <= -5) return -2; else return b(a(y-1)); } またはそれらの線に沿って何か。 このようなものを決定するためにどのような方法を使用できますか?

9
プロジェクトを完成させるために、デザインの「素晴らしさ」を犠牲にしてよいのはいつですか?
すぐに行う必要のある製品で作業し、うまく機能する場合、物事を迅速に完了してドアから外に出すために、設計の保守性と「ニートネス」を犠牲にするのはいつですか?そして、特にそれを「ニート」にするために使用される技術が私にとって新しい場合、それはどの程度大丈夫ですか?
15 design 

5
各ファイルを個別にバージョン管理するバージョン管理システムの利点は何ですか?
過去数年にわたって、私はいくつかの異なるバージョン管理システムを使用してきました。私にとって、それらの間の基本的な違いの1つは、ファイルを個別にバージョン化するか(各ファイルには独自のバージョン番号と履歴がある)、リポジトリ全体(「コミット」またはバージョンがリポジトリ全体のスナップショットを表す)である。 一部の「ファイルごと」バージョン管理システム: CVS ClearCase Visual SourceSafe 一部の「全体リポジトリ」バージョン管理システム: SVN ギット マーキュリアル 私の経験では、ファイルごとのバージョン管理システムは問題を引き起こすだけであり、正しく使用するにはより多くの構成とメンテナンスが必要です(たとえば、ClearCaseの「構成仕様」)。同僚が無関係なファイルを変更し、理想的には孤立した開発ラインを壊すという多くの事例がありました。 これらのファイルごとのバージョン管理システムの利点は何ですか?「全体リポジトリ」バージョン管理システムには、ファイルごとのバージョン管理システムにはない問題がありますか?

9
ペアプログラミング環境でパフォーマンスをどのように実証しますか?
最近、私の仕事でパフォーマンスのレビューが出てきて、私は興味深い立場に置かれました。私たちのチームは多くのペアプログラミングを行っていますが、これはチームメンバー間のスキルの差を平均化する傾向があります(特にペアをローテーションすることを考慮して)。一般に、パフォーマンスレビューを行うときは、行った作業を振り返り、達成したことと、昇給やその他のメリットを交渉しようとする期待をどのように上回ったかを示します。 このような環境で個々のパフォーマンスをどのように実証(または測定)しますか?

3
マルチタスクの仕組み
オペレーティングシステムの内部動作についてはまったくわかりませんが、多くの関数の近似動作を多かれ少なかれ推測できます。しかし、私が理解できないことの1つは、マルチタスクです。 理論的には、オペレーティングシステムは、実行中のさまざまなプログラムに応じた短い間隔でCPUに従って時間を管理します。しかし、これが実際にどのように機能するかは明らかではありません。 オペレーティングシステムがプログラムを開始したいとします。マシンコードは、特定のアドレスからRAMのどこかにロードされます。次に、そのアドレスにジャンプを実行して、コードを実行できるようにします。しかし、この方法では、私が戻るまでOSは制御を取り戻すことができません。 基本的に、この作品を作るには2つの方法しか考えられませんが、どちらも実際に適しているとは思えません。 オペレーティングシステムは、直接実行する代わりに、実行するマシン命令を読み取ってエミュレートできます。私はこれがどのように機能するかわからないので、意図的にあいまいですが、プログラムがかなり遅くなるようです。 または、オペレーティングシステムは、システムコールを行うまで待つことができます。その瞬間に制御を取り戻し、実行されている時間を確認し、タイムシェアリングを行うことができます。これは動作する可能性がありますが、システムコールを含まない長い計算を行い、すべてをしばらくハングさせる可能性があるため、信頼性がないようです。 したがって、どちらのメカニズムもうまく機能しないようです。マルチタスクは実際にどのように実行されますか?

7
財務記録を保持するデータベースを設計するとき、どのような特別な考慮事項が必要ですか?
この質問が広すぎないことを願っています。将来的には、いくつかのアプリケーション(主にWebベースのアプリケーションですが、私の質問はデスクトップアプリケーションにも関係します)にいくつかの会計および財務追跡システムを追加する必要があります。 現在、金融取引の簡単な記録を作成することは理論的には簡単です。いくつかの列を持つ1つのデータベーステーブルで作業を行うことができます。MS Access、Excel、または単なるASCIIテキストファイルでさえ、取引日、アカウントID、および金額を保存するために使用できます。ただし、トランザクションの整合性を備えた頻繁にバックアップされるSQLテーブルでさえ、深刻な財務追跡には十分な堅牢性がない場合があります。 「ダブルエントリアカウンティング」などの用語を耳にしますが、ほとんどの財務追跡アプリ(たとえば、Mint.com、GnuCash)には、すべてを確実に二重にするために、はるかに複雑なデータ構造またはプロセスが用意されているように感じます必要に応じて完全に加算され、データが失われたり破損したりすることはありません。 私の質問は次のとおりです。金融取引を追跡するアプリを設計するとき、特別な設計上の考慮事項を作成する必要がありますか?非常に多くの潜在的な問題があるようです...丸め精度、パリティチェック、ある種の監査プロセス、特別なバックアップ、セキュリティ/暗号化、データ入力中にクラッシュした場合のデータを保護する追加の方法に関する問題。 ...私が具体的に何を尋ねるべきかは本当にわかりませんが、プログラミング業界には私が何も知らない一連のベストプラクティスがあると感じています。彼らは何ですか? 編集: 予想以上に大きなワームの缶を開けたようです。明確にするために、私は特に2種類のアプリについて考えています。 GnuCashやQuickenなどの「レジストリの確認」タイプのアプリは、個人が使用するトランザクションを記録します。 企業と取引するベンダーと顧客の請求書/クレジット/または「ポイント」を追跡するアプリ。 私は恐らく、ダイレクトバンキングや(関連する)多くの金融関連の政府規制が添付されているものは何もしないでしょう。


5
既に経験豊富な開発者である私の学位を取得するための最良/最も簡単な方法は何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は過去5年間、アクティブなプロのソフトウェア開発者(主に.NETを使用)であり、自分自身に過度に集中することなく、私は非常に有能な開発者であると言えます。私は、最新のツール、業界、および最新の標準/プラクティスを常に最新の状態に保ちます。私はかなり高レベルのIT会社で働いており、他の会社とうまくやり取りしています。私は最新のチームの動的な方法論についても最新であり、優れたリーダーシップ/管理/人材スキルを持っていると感じています。 しかし、私は学位を取得したことがありません。私は何百もの本や経験から自分で知っていることをすべて学び、学んでいます。1年ほど前に経済から大きな打撃を受けるまで、私はしばらくの間自分のソフトウェア会社を経営していました。それには長い時間とたくさんのアプリケーションが必要でしたが、ついに今の仕事を見つけました。 バカみたいに大学を中退して授業料を払うのをやめて、会社を始めて、人生が進むにつれて、今は留まって学位を取得したかったのにと思います。デフォルトの学生ローンがあり、かなりのお金を再び稼いでいるので、これらの借金を返済するために、私は後端で働いています。 私はこの学位なしであまりにも多くの天井にぶつかりました。1つは、同じレベルの知識と経験を持つ人ほど多くの人を作ることはありませんが、学位も持っています。また、学位を取得せずに業界で仕事を得るためにかかった労力は、疲れ果て、憂鬱でした。 今、私の学位を取得するための最善の方法は何ですか? この学位を提供するオンライン学校はありますか? オンライン学校も良い選択でしょうか? 業界での私の知識と経験は、学校教育をより速く/安く仕上げるのに役立ちますか? 似たような立場にいる人はいますか?もしそうなら、あなたの前に置かれたすべての障壁をどのように克服しましたか? 学生ローンをデフォルトで借りて、後で学校に戻ろうとしたことがありますか?それにどのように対処し、どのように影響しましたか?

15
電話インタビュー中にサイドツールを使用するのは不正ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 電話の審査プロセスを経なければならないまともな技術職のための多くの時間。あなたが電話を吸い込んだ場合、あなたは一般的にあなたが実際にどれほど悪いロバであるかを示す機会を得ません。 これらのインタビューは、経験豊富な上級職であっても、非常に多くの場合、基礎に関するトリビアスタイルの質問を伴います。私にとって残念なことに、彼らはいつも私が一般的に考えていないものであり、準備することを想像していませんでした。彼らとのより多くの経験があれば(私は多くのそのようなポジションに応募していません)私は良くなるかもしれないと思いますが、その間に... したがって、たとえば、一部の10進数値XXを16進数または2進数に変換します。前回インタビューしたことで、実際にこれを行う方法について完全に頭を抱えていました。気にする必要はほとんどありません。値を数値として考えたいときに、値をビット構成と10進数に関連付けたいときはいつでも16進数を使用します。2つの間で変換することはめったにありません。必要なときは、電卓をポップして開いてください。それは難しいことでも何でもないようですが、どういうわけか私はそれをどうやってやっても覚えていませんでした。私はインタビュアーに真実を伝え、私は他の方法を変換するより良いチャンスがあるだろうと言いました(それは方法であり、方法は簡単で、私は推測を理解しているので)。 彼はその後、ほとんどの人がそれに苦労していると述べ、それが何らかの年齢差の問題であるかどうか疑問に思いました。多分そうでないかもしれません。私はどこから来たのかを説明し、それでそれをさせました。 しかし、電話でのインタビューでは、彼がどのように答えを思いついたのかを正確に伝えることができませんでした。おそらく、私がいつもしているツールを使用するだけで完全に合法なのでしょうか? どう思いますか?誰かにインタビューしたところ、そのような質問をしたところ、手や頭で質問するよりも、ツールやリファレンスを使って質問に答えていることがわかりました。問題を解決するために利用できる不正なツールまたはツールの適切な使用を検討しますか?
15 interview 

6
大企業はどのようにしてセキュリティホールを残す新人ミスを犯すのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ソニーは最近、SQLインジェクションでハッキングされ、ユーザーのパスワードはプレーンテキストで保存されました。これらは新人の間違いです。そのような大企業では、これはQAにどのように合格しますか?これよりもよく知るよりも良いチームがいないのはどうしてですか? ハッキングされた会社の規模の大きさにより、これは異なります。私たち全員が、いつかこのようなことを担当するチームに自分自身を見つけるかもしれないので、私たち全員に影響を及ぼします。それで、これにつながる要因は何ですか、どのようにそれらを防ぐのですか?
15 security  qa  mistakes 

6
GPL違反を見つけて文書化するにはどうすればよいですか?
クローズドソースコードにアクセスできない場合に、GPLでライセンスされたオープンソースコードがクローズドソースの商用アプリケーションにコピーされたことを見つける方法 編集:素晴らしい答え!パート2.実行可能ファイルにアクセスすることさえできないwebappの場合はどうなりますか? シナリオ:ソースをコピーし、GUIに若干の変更を加えて、フロントエンドがほぼ同じになるようにします。それ以外はまったく同じバックエンドに新しい機能を追加します。そして、それをオープンソースに戻すことに失敗します。

10
プログラマーを雇うという決定にとって、優れたコーディングスタイルはどれほど重要ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 学生としても、テストに合格した(していない)プログラマーのコードを確認するよう求められます(Androidでフィボナッチ数のリストを作成します)。 私はコーディングスタイルに非常に厳しいのですが、誰かが使用した「ブロック」スタイルについて読んだだけです(コメントを読んでください!)。 私の立場では、この種のスタイルを使用している人を雇わないことをお勧めします。このコードは、私の会社で使用されているコーディングスタイルとはまったく逆です。 コーディングスタイルとその欠如に対処する方法を探している間、私は1つのことについて興味があります。深刻なトラブル 会社で使用されているコーディングスタイルを採用していますか? お願い:これはコーディングスタイル全般についての議論ではなく、どちらの方がよいでしょう。誰かを雇うという決定のためのコーディングスタイルの重要性についてです! 詳しくは: 私は決定を下す人ではなく、コードに基づいて意見を述べるだけです。その男は、ソフトスキルをチェックするものすべての私たちの頭でインタビューを渡す必要があります。彼がこれに合格した場合、彼は私たちの小さなスキルテストに合格する必要があります。私はイエスかノーと言う立場にありません。レビューでコーディングスタイルがどれほど重要かを知りたいだけです...

6
RBツリーを完全に理解しなくても大丈夫ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 だから私はちょうどコーメンで赤黒の木を学び、すごい!通常、私はすべてのアルゴリズムとデータ構造を理解して、疑似コードをチートすることなく最初から再構築できるようにします。私はアルゴリズムが本当に好きなので、それらがどのように機能するかを学ぶことを楽しんでいます。通常、1行ずつ行き、コードを見て、何が起こっているのか理解しているかどうかを確認して、いくつかのケースを試します。 何が起こっているのかを理解するだけで、RBツリーにかなりの時間がかかりました。本の説明があっても、コードを理解するのは難しいと感じました。言うまでもなく、回転がどのように/なぜ機能するのか理解できませんでした。直感的ではありません。つまり、3つの(実際には6つの)挿入の場合と、4つの削除の場合ですか?このことを理解することは可能ですか?不正行為をせずにこのコードを再構築することは不可能です。バイナリツリーまでは、いくつかの微調整を行って頭の外にあるものを実装できますが、RBツリーは試してさえいません。つまり、先生でさえ混乱することもあるので、それほど簡単ではないと思いますが、同時に、起こっていることすべてを理解する必要があるのでしょうか、少なくともその理由は何でしょうか?本はしなかった 誰かがどのように回転のアイデアを思いついたのかを本当に説明します。誰かが2回転で挿入の問題を解決できることに気づきましたか?すごい! 私の質問は、本当にRBツリーを100%理解する必要があるのですか?私はそれを完全に理解せずにある種の悪いスキップを感じます。よろしくお願いします!(PS:RB-treeにはタグがなく、実際にはツリーにもタグがなく、バイナリツリーだけなので、アルゴリズムのみを配置します)
15 algorithms 

9
経験の浅い開発者が考えることを忘れる最悪のことは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 若い開発者として、私は高品質のアプリケーションを開発するために考えるべきことに関するいくつかのアドバイスを得ることが有用だと思います。私の大学のコースでは、ほとんどの教師が入力の検証を強調し、一部の人はセキュリティの問題について話しましたが、たとえばロギングなどの他の特定のものの重要性をカバーした人はいませんでした。 経験の浅い開発者が経験する開発者のフラストレーションにつながる可能性のあるミスは何ですか?

8
私のプロジェクト(アジャイル)の進捗を雇用者(プログラマーではない)に報告する方法は?
雇用主に進捗を報告するのに問題があります。私はパートタイムプログラマで、学校の(非技術)部門のソフトウェアプロジェクトを担当しています。 担当者: 1.実際にソフトウェアを使用し、機能要求を提起するスタッフ 。2.私の上司(プログラマーではない)。彼女はソフトウェアのユーザーではありません。 プロジェクトの性質: サードパーティから購入した既製のソフトウェアです。部門のニーズに応えるために、このソフトウェアの機能を変更または追加する必要があります。これは学期を通して使用する必要があるソフトウェアです。すべての機能を最初に使用する必要があるわけではありません。 そのため、アジャイルモデルを使用しています。スタッフが特定の機能を必要とするとき、リクエストを出し、変更を加えます。学期の終わりまでに、必要なすべての機能が引き上げられ、実装されると思います。 問題: 上司が進捗状況を尋ねるたびに、答える方法がわからないので、答えられません。すべての必要な機能の完全なリストがありません。先週提起された機能を完了しましたが、上司に「完了」したことを伝えることはできません。新しい機能も追加されており、その程度はわかりません。「%の完了率があります」や「xxxで完了します」とは言えません。3つのリクエストのうち、2を完了することができたので、上司に「2を完了しましたが、まだ完了していない機能が1つあります」と伝えます。長い時間を経て、「長い間、いつも終わらない何かがあります」と聞こえます。 進捗状況を報告できないことは、私にとって本当に悪いように見えます。それは私がどれだけやったかではなく、人々に知らせる方法です。私がマネージャーであり、私のスタッフが何ヶ月も進捗を報告し続けない場合、この男も能力がないと感じます。 「ソフトウェア変更のステータス/進捗状況」と同じくらい簡単に報告する方法、または質問に答える方法がありますか? 更新 私の上司は開発タスクに直接関与していないため、私が何をしているか、またはプログラムがどのように機能するかについて、手がかりがありません。彼女は忙しいので、定期的に会うことはありません。彼女はメインユーザーではなく、プログラムの詳細を知らないので時間の無駄になると思います。 私はソフトウェアを使用し、ソフトウェアについてよりよく知っているスタッフと定期的に会います。 上司に進捗を説明するのは難しいと感じています。

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