ソフトウェア工学

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

6
共同開発のための最も基本的でシンプルなプラットフォーム(PHPプロジェクト)とは何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 6年前に閉鎖されました。 codeigniterを使用して、平均的なPHPアプリケーションで4〜5人のプログラマーと協力する必要があります。私たちは1つの都市の5つの異なる場所にいて、すべてのプログラマーはあまり教育を受けていないので、ほとんどのバージョン管理システムを使用したことはないと思います。 このようなプロジェクトで共同作業するための、非常に簡単に入手できるプラットフォームをお勧めできますか?共有のDropboxフォルダーよりも少しだけ洗練されたものについて話しています。

8
スクラムチームでオーバータイムを停止/回避する方法は?
実際、私は彼らのスクラムの実装に関する小さなソフトウェアショップを手伝っています。最近、スクラムマスターから、チームがスコープ(コミットバックログ)を達成するために時間をかけて作業しているため、問題があると報告されました。そのため、Unreal Velocityがあります。 私の正式な質問は/です: レトロスペクティブ会議について話すこととは別に、オーバータイムを避けるためにいくつかのハードブロックを実装するのは良い考えだと思いますか? もしそうなら、どのようなテクニック/ツールを提案しますか? リビジョン管理システム(SVN、GIT、HGなど)、時間単位(8〜5)のブロック ワークステーションは、時間単位(8〜5)または累積時間(最大8時間/日)でブロックしますか? その他... または、多分、この種のものをハードブロックしないでください。しかし、不当な余分な時間に「ペナルティシステム」を実装しますか? 最初:あなたの速い応答のためのすべて。 @Baqueta(および同様の質問を持つ他の人):いいえ、彼らは余分な時間に対して支払われていません。彼らへの私の最初のアドバイスは、おそらく彼らが過小評価していたので、彼らの見積もりをレビューすることでした。これは私のお気に入りのアドバイスでした: 残業に興味がある場合は削除してください。開発は週に60時間行うことができ、生産性を維持できるものではありません。これを証明する多くの研究があります。残業代が問題になる場合は、それを取り除き、基本給を改善して、彼らが価値のあるものを手に入れるようにします。 また、(このチームの)根本的な問題は、次の組み合わせであると思います。 開発者は、スプリントで何を達成しなければならないかを伝えられている/達成可能なことについて相談されていない/作業が多すぎると言われたときに無視されている。 開発者は、タスクにかかる時間/各タスクに含まれる作業単位の数を常に過小評価しています。 要約:チームと話し合い、見積もりを確認します。POについても、あなたが述べたように、範囲について相談されていないように感じます。
14 agile  scrum 

12
WebサイトのSSL証明書はどれくらい重要ですか?
私は自分のプロジェクトをブートストラップしています。登録/ログイン領域があります(RoRを使用したデバイスを介して、もちろん適切にハッシュ化およびソルトされます)。私はサブドメインを使用しており、iframeでそれらにアクセスする必要があるので(本当に正当です!)、サブドメインをカバーする高価な証明書の1つが必要です。 私は自分の時間とお金でこれをやっているので、証明書に数百を落とすことにplusしており、さらに私が今まで試したことのないものを掘り下げるのに数時間かかります。メールアドレスとパスワード以外の機密情報は保存していません。私が理解している限り、唯一の脆弱性は、ユーザーが暗号化されていないネットワーク(コーヒーショップなど)からログインまたはサインアップし、誰かがネットワークをリッスンしているときに発生します。 安いの?これは私が野生にリリースする前に取り組むべきものです。おそらく、起動時に通知を受けるために25,000人のユーザーがサインアップしていることに言及する必要があるので、私はそれについて緊張しています。
14 security  ssl 

3
コンパイラは他のクラスとそのプロパティをどのように知っていますか?
私はオブジェクト指向で、これまでのところ単一の「クラス」を作成するのに適した最初のプログラミング言語を書いています。しかし、の私は、クラスに持って言いたいとしましょうClassAとClassB。これら2つが互いに関係ない場合、すべてが良好です。ただし、たとえばClassA、ClassB次の2つの関連する質問が発生します。 -どのようにコンパイルするコンパイラを知っているだろうClassAということClassBにも存在し、それがない場合、どのようにそれはそれは性質を知っているんでは? これまでの私の考えは、各クラスを一度にコンパイルする(つまり、スキャン、解析、コード生成)代わりに、各「ファイル(実際にはファイルではなく、「クラス」)ごとに最初にスキャン+解析する必要がありますか? 、すべてのコードを生成しますか?

1
LGPLとAGPLの決定的な違い
LGPL(v3)とAGPL(v3)の決定的な違いは何ですか? どちらも商業生産で使用できますが、両方とも有料製品に梱包することもできます。これらのソースコードを変更しない限り、ソースコードを製品で囲む必要はありません。 それでは、顕著な違いはどこにあるのでしょうか? (/programming/10996160/the-decisive-difference-between-lgpl-and-agplでもこれを尋ねましたが、ユーザーはここで尋ねることを提案しました。)
14 licensing  gpl  lgpl  agpl 


3
Scala暗黙の歴史的起源
Scalaは私の同僚や一部さえ非難すべての人々の多くは、その豊富な機能セットを持つ複雑な呼ばれている新しいそれの機能。ほとんどのプログラマーはオブジェクト指向の機能を知っており、少なくともまともなものは関数型プログラミングについても知っていますが、Scalaには特にその歴史的起源を知らない1つの機能があります。 私たちの職業の主要なマントラは車輪を再発明しないことであることを考えると、Scalaには前例のない実際の機能はないことを確信していますが、必要に応じて修正することをお勧めします。 実際の質問にたどり着くために、私はScalaの機能のほとんどの起源を知っていますが、そのimplicit宣言のようなものを見たことはありません。この機能を提供する他の(古い!)言語はありますか? 暗黙の異なるケース(異なるソースに由来する可能性がある)、つまり暗黙の変換と暗黙のパラメーターを区別するのは理にかなっていますか?

5
Javaの未定義の動作
私は、SOでこの質問を読んでいて、C ++の一般的な未定義の動作について説明していましたが、Javaにも未定義の動作がありますか? その場合、Javaの未定義の動作の一般的な原因は何ですか? そうでない場合、Javaのどの機能がそのような動作から解放されますか?これらのプロパティでCおよびC ++の最新バージョンが実装されていないのはなぜですか?

2
グラフデータ構造を実装する最もスペース効率の良い方法は何ですか?
私は通常、グラフを二重リンクリストとして実装しますが、これは私の経験ではかなりスペース効率が悪いです.k個の隣人にk個のポインタ/参照が必要なので、無向グラフの場合、数学が正しければリスト内に〜2k個の隣人リンクがあります。スペースを節約するより良い方法はありますか?グラフが方向付けられている場合、いくつかのリンクが特異になる可能性があることを知っていますが、これをもっとうまくやる方法はありますか?

3
typedefを使用する場合
C ++でtypedefを使用すべきかどうか、またいつ使用すべきかについて少し混乱しています。読みやすさと明快さのバランスをとる行為だと思います。 typedefを使用しないコードサンプルを次に示します。 int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { static std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int> lookup_table; std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int>::iterator lookup_it = lookup_table.find(lookup_key); if (lookup_it != lookup_table.end()) return lookup_it->second; ... } かなりいIMO。そこで、関数内にtypedefをいくつか追加して、見栄えを良くします。 int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { typedef std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator> Lookup_key; typedef std::map<Lookup_key, int> Lookup_table; static Lookup_table lookup_table; Lookup_table::iterator lookup_it = lookup_table.find(lookup_key); …
14 c++  coding-style 

9
TDD:私はそれを正しくやっていますか?
私は新しいプログラマーです(約1年しか学んでいません)。それをより良くするという目標で、最近TDDについて学びました。非常に役立つと思われるため、私はそれを使用する習慣を身に付けたかったのです。正しく使用していることを確認して確認したかったのです。 私がやっていること: 私が必要とする新しい方法を考えてください。 そのメソッドのテストを作成します。 テストに失敗します。 書き込み方法。 テストに合格。 メソッドをリファクタリングします。 繰り返す。 私が書いたすべての方法でこれをやっていますが、気にするべきではないものがありますか?後で、私は通常、既存のメソッドを別の方法または状況でテストする方法を考えます。私が考えているこれらの新しいテストを作成する必要がありますか、または各メソッドがすでに独自のテストを持っているので、気にする必要はありませんか?コードをテストしすぎることはできますか? 編集 また、これは私がただ疑問に思っていたものでした。GUIの作成などを行う場合、そのような状況ではTDDが必要ですか?個人的には、そのためのテストをどのように書くか考えられません。
14 tdd 

7
定型文の防御?
私にとって、定型的なコードは明らかに悪いです。しかし、ボイラープレートを減らすために抵抗を示す開発者に会いました。私は、私が長年にわたってそれに対して開発した嫌悪感を超えて、すぐに形成された、よく考えられた議論を持っていなかったことに気付きました。 定型文を少なくするという説得力のある議論を形成できるように、いくつかの反論は何ですか?言い換えれば、ボイラープレートを支持する議論(もしあれば)は何ですか? (私は一般的に定型語が意味すると思うものを意味しますが、良い例はJavaのゲッターとセッターです。)

3
ソフトウェア開発環境でシックスシグマを適用するにはどうすればよいですか?
私はJava開発者ですが、私たちの組織の利益を増やす目的でSix Sigmaを適用することを学ぶように頼まれました。Six Sigmaはすべての環境に適用できることを読んだことがありますが、ソフトウェア開発に適用することのニュアンスに興味があります。 Six Sigmaのどの概念をソフトウェア開発環境に適用でき、どのようにそれらを効果的に適用できますか? 私の理解では、シックスシグマは次のことに焦点を当てています。 欠陥の根本原因の特定と除去 製造プロセスまたはビジネスプロセスの適用におけるばらつきを最小限に抑える これらの概念はソフトウェア開発に適用できると思われますが、ソフトウェア開発ライフサイクル(SDLC)に効果的に適用できますか?

3
ASP.NET MVCとREST API + Webページの使用のためのWCF
プログラムによるサービス指向の使用と人間の相互作用の議論は明確だと思います。 しかし、プログラムAPIと同じAPIで接続されたデータを使用するWebサイトの両方を使用するアプリケーションを作成する場合、ASP.NETのみを使用する方が有利でしょうか? ASP.NETとWCFを統合して同じアプリケーションで動作させるのはどれくらい簡単ですか?

3
安全なiPhoneアプリ↔サーバー通信
iOSアプリとそのサーバーコンポーネント間のプライベート通信を達成するための最良のアプローチは何でしょうか?単一の不変の「秘密鍵」がアプリのソースに十分に焼き付けられていますか、またはそのような「ハンドシェイク」鍵の世代を何らかの形で動的に設定する必要がありますか? サーバー自体には機密データへのアクセス権がないため、ユーザーがプライベートエンドポイントにヒットしても、どこにもアクセスできませんが、それらはパブリックから非表示にしたいだけです。基本的に、iOSアプリからの要求でない限り、特定のルートにヒットするすべてのリクエストを無視します。 サーバーコンポーネントは、重要な場合はRoRで実行されます。

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