ソフトウェア工学

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

8
配列とスタックの違いは何ですか?
ウィキペディアによると、スタック: 後入れ先出し(LIFO)の抽象データ型と線形データ構造です。 一方で、配列: 要素(値または変数)のコレクションで構成されるデータ構造であり、それぞれが少なくとも1つの配列インデックスまたはキーによって識別されます。 私が理解している限り、それらはかなり似ています。では、主な違いは何ですか?それらが同じでない場合、配列がスタックでできないこと、およびその逆ができることは何ですか?

2
3-Strike Securityの弱点
私はセキュリティ、特にパスワードセキュリティ/暗号化に関するいくつかの文献を読んでいて、疑問に思っていることが1つあります。3ストライクルールは、パスワードセキュリティの完璧なソリューションですか?つまり、パスワードの試行回数がいくつかの限られた数に制限されている場合、すべての認証要求が受け入れられなくなると、ユーザーの侵入を防ぐことができませんか?何かへのアクセスや制御を得ることは、常に認証システムを通過することを意味するわけではありませんが、この機能は辞書/総当たり攻撃を時代遅れにしないのですか?行方不明のものはありますか?
10 security 

3
継続的インテグレーション(iOSおよびAndroidプロジェクトを使用)[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私は会社にプラスの変更を加えようとしており、その変更の1つは継続的インテグレーションの実装です。モバイル開発(iOS / Android)を行っているので、両方のタイプのプロジェクトをサポートするCIが必要です。ご存知のように、CIについてはあまり詳しくありませんが、少しググってみましたが、JenkinsとHudsonの2つが最も人気があると思います。 2つの質問があります。 ジェンキンスについてのあなたの考えは? CIがプロジェクトが コーディング標準に従ってコンパイルされているかどうか(疎結合など)を確認する方法はありますか?

1
現在のiOSバージョン/デバイス統計?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 このSOの質問への答えは古くなっています:iOSバージョン/デバイス統計-どこで見つけることができますか? 時間の通貨はその質問の一部ではなく、この質問が尋ねられてからiOSバージョンのアップデートがリリースされたためです。 おそらくアプリ分析やウェブサイトのログやその他の手段を継続的に監視することにより、iOSデバイスとOSバージョンのパーセンテージの現在または頻繁に更新されるリストを保持するウェブサイトまたは他の公的に利用可能なソースはありますか? そして、もしあれば、iOSアプリ分析が現在報告を許可されているデバイスまたはOSの情報は何ですか?(...もちろん、適切なプライバシーポリシーを前提とし、それを順守します。)
10 iphone  ios  appstore 

4
JavaScriptマルチスレッド
まあ最近JavaScriptはすべてのWeb開発テクノロジーのメインプレーヤーです。クライアント側では、ユーザーインターフェイスを改善するために、クライアント側のロジックで、一部のWebサーバーではサーバー側のロジックとしても使用されます これに加えて、人々(少なくとも一部の人々)の事実が、Webゲーム開発をフラッシュからJavaScriptおよびHTML5に移行し始めました マルチスレッドをサポートする時ではありませんか?JavaScriptをマルチスレッド化できるブラウザはありますか、それとも標準、HTML5、または将来のバージョンにありますか?

4
外部のコマンドラインアプリケーションを呼び出すか、そのアプリケーションのロジックを内部化する方が良いでしょうか?
ワークフローを自動化するために、基本的に既存のツールの束をリンクするだけの「パイプライン」タイプのプロセスがあります。ステップの1つとして、既存のコマンドラインツールがあり、そのステップで実行する必要のある処理をすでに実行しています。 外部CLIツールはJavaベースであり、パイプラインも同様であるため、ツールをパイプラインステップに直接統合することは可能ですが、ツールは非常に複雑で、現在、コマンドライン入力(次のようなもの)と密接に関連しています37の構成フラグオプション)。 問題は、単に外部プロセスを呼び出して呼び出す方が良いのでしょうか、それともアプリケーション内に外部コードを統合する方が良いのでしょうか。 外部プロセスの統合と呼び出しのメリットとデメリットは何ですか?

12
QAは再現可能なシナリオを見つける必要がありますか?
時々、私のQAチームはバグを報告しますが、私も彼らもそれらを再現する方法について何の考えも持っていません。これにより、非常に長くてイライラするデバッグセッションが発生し、結果が得られない場合もあります。 私のソフトウェアは専有のハードウェアと強く結びついているので、バグは一度に多くの方向から発生する可能性があります。 「ボタンを押したときにソフトウェアがクラッシュした」以上のことを期待するべきでしょうか、それとも自分で何が起こったのかを理解する必要がありますか? 編集: 私の同僚の1人は、おそらくここではすべての開発者であるため、結果には少しバイアスがかかる可能性があると指摘しました
10 testing  bug  qa  reporting 

5
インターフェースと継承:両方の長所?
私はインターフェースを「発見」し、それらを愛するようになりました。インターフェイスの優れた点は、それがコントラクトであることであり、そのコントラクトを満たすオブジェクトは、そのインターフェイスが必要な場所であればどこでも使用できます。 インターフェースの問題は、それがデフォルトの実装を持つことができないことです。これは、ありふれたプロパティの苦痛であり、DRYを無効にします。これは、実装とシステムの分離を維持するため、これも良い方法です。一方、継承はより緊密な結合を維持し、カプセル化を壊す可能性があります。 ケース1(プライベートメンバーによる継承、適切なカプセル化、密結合) class Employee { int money_earned; string name; public: void do_work(){money_earned++;}; string get_name(return name;); }; class Nurse : public Employee: { public: void do_work(/*do work. Oops, can't update money_earned. Unaware I have to call superclass' do_work()*/); }; void HireNurse(Nurse *n) { nurse->do_work(); ) ケース2(単なるインターフェース) class IEmployee { virtual …

2
プログラマがユーザーが入力したデータをキャプチャできないようにするにはどうすればよいですか?
私はセキュリティに重点を置いたWebアプリケーションを開発しています。アプリケーションで作業するユーザー(プログラマー、DBA、品質保証スタッフ)が、パスワード、社会保障番号など、十分に保護する必要があるユーザー入力値をキャプチャしないようにするには、どのような対策を講じることができますか?
10 security 

3
ソース管理:役割と責任-ベストプラクティス
私は、役割と責任、特に開発ブランチからトランク(またはメイン)へのマージの責任者に関する「ベストプラクティス」を探しています。基本的に私は自分の大義を助けるための弾薬を探しています。 私が直面していることを説明させてください。私は特定のアプリケーションのリード開発者(所有者)です。私たちの会社は最近、VSS(私のアプリケーションが保存されているVSSデータベースの管理者でした)からTFS(私たちの「運用」チームによって作成された開発ブランチに対する権限しか持っていません)に移行しました。以前の仕事ではTFS管理者でしたので、TFSとMSBuildの使い方を知っています。 使用されている分岐およびマージ戦略に問題はありません(メインブランチ、必要に応じてバグ/プロジェクト開発ブランチが作成され、メインにマージされてからリリースブランチに昇格されます)。私が抱えている問題は次のとおりです。 自分でブランチを作成することはできません。「オペレーション」チームメンバーにブランチを作成させるには、TFSタスクを作成する必要があります。 Mainから開発ブランチにマージできません。「オペレーション」チームメンバーがマージを実行するようにTFSタスクを作成する必要があります。「運用担当者」は開発者である場合とそうでない場合があるため、チームが変更を「踏まない」ことを期待しています。彼がマージしているコードに関する知識はほとんどありません。 開発からMainにマージできません。繰り返しますが、 "ops guy"にマージを実行させるには、彼が正しく実行することを期待して、TFSタスクを作成する必要があります。次に、別のTFSタスクを作成してブランチにマージし、開発者以外がMainにマージすることで発生した問題を解決できるようにします。 MSBuildスクリプトを作成または編集できません。ここでも、MSBuildの新機能である「ops」チームと協力して、最も基本的なビルドタスクのみを実行できるようにする必要があります。(複雑なことは何も忘れてください、またはカスタムタスクを天国で禁止してください)。 MSBuildスクリプトを実行できません。繰り返しますが、「ops」チームだけがこれを行うことができます。 このすべてをオフにするには、通常、要求されたタスクを実行する「オフショア」リソースであるため、早朝に(ブランチ/マージ/ビルド)へのタスクを作成しても、完了しない可能性があります。その夜まで。 これで、リリースブランチを維持する「運用」チームに問題はありません。彼らがしていることはすべて、(基本的に)Mainから最新バージョンを取得し、それをリリースブランチにプロモートすることです。"Main"が安定していて準備ができている限り、リリースブランチは適切です。 私の意見では、テクニカルリード(Iなど)は、トランク(「メイン」)の保守と、開発ブランチとの間のマージを担当する必要があります。チームリーダーには、MSビルドスクリプトを生成して、統合テスト環境にビルドおよびデプロイする機能も必要です。 私のケースを証明するのに役立つベストプラクティスドキュメントを誰かに教えてもらえますか?私が行ったすべての検索で、分岐とマージの手法に関するベストプラクティスのみが判明しました。WHOについての言及では、分岐/マージを実行すべきではありません。

4
チームメンバーにWebフレームワークを使用するように説得するにはどうすればよいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 問題はこれであり、詳細は次のとおりです。プログラマとして、彼を私の側に連れていくために私が言える/育てることができるものはありますか? 私はこれについて双方の正当な議論を聞きたいですが、主に彼と話す方法についての提案です。 私の状況は次のとおりです。私は学位課程のチームプロジェクトに取り組んでおり、大学のプロトタイプとして中規模のウェブサイトを構築しています。グループ内のすべてが平等であると見なされ、指名されたリーダーがいないため、この問題の答えは「プルランク」にはなりません。 すべてが同等ですが、メンバー間の知識には大きなギャップがあります。問題のチームメンバーと私はどちらも有能な開発者ですが、業界での経験はありません。他の3人のメンバーは能力が低く、2人は完全に開発をオプトアウトしています。知識不足のため、3人とも状況についてコメントすることを拒否した。 私たちはグループとして、ウェブサイトの実装に使用するテクノロジーを決定します。具体的には、PHPフレームワーク(Code Igniter)を使用するかどうか。 私は賛成で主張して、引用します: 車輪を再発明しない うまく機能するように作成およびテストされたコードベース 始めましょう(締め切りは私たちが望むよりも近いです) 開発のスピード 健全で保守可能な設計パターンと優れた実践 彼は彼が慣れている方法で働くことを支持して主張しています: 必要に応じて、オーダーメイドの1回限りの関数を「ライブラリ」ファイルに書き込む データアクセスおよびページへのそのデータのレンダリング、セッションへのセッションの取得/設定、データの取得/投稿などの機能 ページごとに1つのファイルがあること(結果として、制御、表示、およびデータの間で懸念が分離されない) 彼がフレームワークを使用する理由は、主に彼が要点を理解できないことに基づいています。彼はそれらすべてのことをすでに行うことができます。フレームワークはそれを変えません、彼がフレームワークを学ばなければならないので、それは単にそれを難し​​くします。彼は自分で書いていないコードを使いたくありません。 また、「プロジェクトはプロトタイプにすぎず、維持されることはないため、コードベースの品質は問題ではない」とも述べています。私にとって、それは保守不可能なコードを書くための言い訳にはなりません。 なぜ彼がそのような議論をするのかはわかりますが、私は彼の「保守性に対する懸念の欠如」と「彼の優れた設計の無視」、あるいは懸念の分離についてさえ問題を抱えています。しかし、彼はデザインパターンを研究したことがないのではないかと思うので、彼の方法が維持できないことが判明する理由を示すのにどれほど効果的であるかはわかりません。 私はこのプロジェクトを始めたいと思っていますが、長年にわたって学んだすべてのことを考慮せずにそれをやりたくありません。先に述べたように、ここにランクを上げる可能性はなく、他のチームメンバーも積極的にピッチングすることはできません。彼は頑固すぎて経験が浅く、よく知ることができませんか?それとも私はここで頑固なのですか? TL; DR経験の浅いチームメンバーが頑固ですが、どうすれば彼を倒すことができますか?

9
プログラミング言語での継承の省略
私は自分のプログラミング言語を開発しています。これint x = 1;は、クラウド向けではない汎用言語(デスクトップ用の静的型付けPythonなど)です。 継承やMixinsを許可しないことは問題ないと思いますか?(ユーザーが少なくともインターフェースを持っている場合) 例: Google Go、継承を許可しないことでプログラミングコミュニティに衝撃を与えたシステム言語。
10 python  google 

9
オブジェクトをコンストラクターに渡すか、クラスでインスタンス化する必要がありますか?
次の2つの例を検討してください。 オブジェクトをコンストラクターに渡す class ExampleA { private $config; public function __construct($config) { $this->config = $config; } } $config = new Config; $exampleA = new ExampleA($config); クラスのインスタンス化 class ExampleB { private $config; public function __construct() { $this->config = new Config; } } $exampleA = new ExampleA(); プロパティとしてのオブジェクトの追加を処理する正しい方法はどれですか?いつどちらを使用すればよいですか?単体テストは私が使用するべきものに影響しますか?

3
シナリオを説明する正式なアンチパターンはありますか?
一部のコードは、Excelスプレッドシート(​​Office Interop)を生成するために記述されています。 コードのパフォーマンスが非常に悪い。 サブシステムは、夜間にファイルを生成するように設計されています。夜間のパフォーマンスは気になりません。 選択したパラメーターのセットに応じて、利用可能な100の異なるファイルから正しいファイルを選択する関数が作成されます。 物理ファイルが存在するため、これらのファイルをバックアップするためにアーカイブシステムが追加されます(アーカイブする理由はありません。これらのファイルはオンザフライで生成する必要があります)。 このシステムには構成ファイルが含まれていません。代わりに、コードが実行されているサーバーを単に反映するハードコーディングされた「サーバーピッカー」関数があります。 このサービスをサポートして実行するには、スケジュールされたタスクが必要です。 これは、1つの問題に要約されます。元のコードは、実稼働環境で実行するにはパフォーマンスが低すぎます。 パフォーマンスの問題が解決されていれば、サブシステムとその後のアーカイブシステム、「ファイルピッカーファクトリー機能」、ハードコードされた障害ポイント、およびスケジュールされたタスクのメンテナンスと追加された障害ポイントが存在する必要はありません。 これは、「カスケードエラー」です。元の問題は、より多くの不良コード、より多くの不良ソリューション、および不要なオーバーヘッドにつながりました。それを説明する正式なアンチパターンまたは一般的な用語はありますか?


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