ソフトウェア工学

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

9
メンターなしで改善する[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私自身はあまり経験がないと思いますが、私は何とかしてリーダーとして仕事に就き続けています(現在の私は会社の技術部長で、以前の私は研究開発責任者でした)。 私はこれがなぜ起こるのか理解しています(特定のスキルセットがあり、いくつかの珍しいプログラミング言語を使用しています)、私の問題は:メンターが見つかりません... 私は学ぶべきことがあるに違いないことを知っており、私が長年働いていると、徐々に多くのことを学んでいることに気づきますが、コーディングよりもはるかに速く改善する方法があると信じています... だから、会社に他に教えてくれる人がいないとき、または彼らのコードを読むとき、私はどのように改善しますか?(またはコードを修正する...) 私は本を​​超えていると思いますが、「マスター」レベルをはるかに下回っているので、どこでもっと学ぶべきかわかりません。

6
関数で動詞を使用し、クラスで名詞を使用する-インターフェイスはどうですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 OK、動詞を関数で、名詞をクラスで使用する通常の規則を理解しています。インターフェイスはどうですか?インターフェイス名を思い付くときに、それほど明白ではないかもしれない方法論はありますか? 明確にするために、名前の前に「I」を付けるか、またはcamelCaseまたはPascalCaseを使用するかについては話していません。インターフェイスの明確で意味のある名前を見つける方法について疑問に思っています。 編集 最も明確な方法でインターフェイスに名前を付ける方法に夢中です。クラスの命名について考えるとき、クラスに関連付けることができる最も近い「実際の」世界オブジェクトを考えるので、それも名詞である必要があると思います。現実世界のインターフェイスは、キーボード、マウス、リモートコントロール、ATM画面のようなものだと思います。それらはすべて名詞です。とにかく、インターフェース名を定式化する良い方法に関する追加の洞察はありがたいです。

9
マルチスレッド同期のインタビューの質問:m個のスレッドからn個の単語を見つける
この問題は、単一のスレッドではなく、複数のスレッドを使用したソリューションの恩恵を受けることができますか? インタビューで、複数のスレッドを使用して問題を解決するように依頼されました。私には、複数のスレッドは何の利益ももたらさないように見えます。 問題は次のとおりです。 n個の単語を含む段落が与えられ、m個のスレッドが与えられます。あなたがする必要があるのは、各スレッドが1つの単語を印刷し、次のスレッドに制御を与える必要があることです。このように、各スレッドは1つの単語を印刷し続け、最後のスレッドが来た場合、最初のスレッドを呼び出す必要があります。すべての単語が段落に印刷されるまで、印刷が繰り返されます。最後に、すべてのスレッドが正常に終了する必要があります。どのような同期を使用しますか? ここではスレッドを活用できないと強く感じていますが、インタビュアーは私の同期スキルを測定しようとしていると考えています。この問題で、複数のスレッドに価値をもたらす何かが欠けていますか? コードは不要です。考えてみてください。自分で実装します。

2
JSONからProtobufに移行します。その価値はありますか?
XMLまたはJSON(WCF)を提供できるREST Webサービスがあります。Protobufsを実装するというアイデアをいじっています。どうして? 長所 サーバーの負荷が少ない。 メッセージサイズが小さい-トラフィックが少ない。 後で切り替えるよりも、すぐに切り替える方が簡単です。 短所 実装する必要がある デバッグ用のメッセージのトラブルシューティング/スニッフィングが難しくなります。 サーバーでGZipを有効にすると、JSONは同じ量のトラフィックを消費します これについてのあなたの提案や経験は何ですか?

7
単体テストのコード品質?
単体テストを作成するとき、コードの品質と可読性を高めるために余分な時間を費やす価値はありますか? テストを書くとき、より速く書くために、そして非常に多くの変数の使用を避けるために、私はしばしばDemeterの法則を破ります。技術的には、単体テストは直接再利用されません-それらはコードに厳密にバインドされているため、それらに多くの時間を費やす理由は見当たりません。機能する必要があるだけです。

11
実際のiPhoneデバイスでiPhoneアプリをテストする必要がある理由
iPhone用に1つのアプリケーションを開発しましたが、今ではApp Storeでそれを求めています。私のiOSオタクの友人の多くは、実際のデバイス、つまりiPhoneでテストするように言った。 だから私は実際のiPhoneデバイスで私のiPhoneアプリをテストする必要があるのだろうか?彼らは(Apple)が私のデバイスとほぼ同じ「シミュレータ」を与えているのですか?
23 testing  iphone  ios 

4
「ビッグデータ」の定義は何ですか?
あるの? 私が見つけることができるすべての定義は、データのサイズ、複雑さ/多様性または速度を説明しています。 ウィキペディアの定義は、実際の番号で見つけた唯一のものです ビッグデータサイズは、2012年現在、単一のデータセットで数十テラバイトから数ペタバイトのデータに至るまで、常に変化するターゲットです。 ただし、これは、次の段落で参照するMIKE2.0の定義と矛盾しているように見えます。これは、「大きな」データは小さく、3GBのデータのみを作成する航空機の100,000個のセンサーは大きいと見なされることを示しています。 IBMは次のように言っていますが: ビッグデータは、サイズの問題よりも単純です。 彼らの定義でサイズを強調しました。 オライリー "volume, velocity and variety"も同様に強調しています。よく説明されていますが、より詳細に、定義は他の人の再ハッシュであるようです-もちろんその逆です。 Computer Weeklyの記事タイトルは、「ビッグデータとは何か、それを使用して競争上の優位性を得るにはどうすればよいか」という記事をかなりうまく要約していると思います。 しかし、ZDNet は2012年から次のように勝ちました。 「ビッグデータ」は、IT市場の高性能コンピューティングニッチから浮上しているキャッチフレーズです...テクノロジーの10のサプライヤーからのプレゼンテーションを見てみると、15ほどの異なる定義が出てくる可能性があります。もちろん、各定義は、そのサプライヤの製品とサービスの必要性をサポートする傾向があります。想像してみろ。 基本的に、「ビッグデータ」は何らかの形で「ビッグ」です。 「大きな」とは何ですか?現時点で定量化できますか? 「大きな」が定量化できない場合、一般性だけに依存しない定義はありますか?

7
クライアントが非現実的な期待を抱いている場合はどうしますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 クライアントサイトではデータの機密性が必要であり、私たちが自分のオフィスで働きたくないので、私は過去6か月間クライアントサイトでプロジェクトに取り組んできました。 このクライアントサイトに一人で現れたとき、2か月でプロジェクトを完了する必要があると言われました。 クライアントはソフトウェア会社ではないため、さまざまなポリシーがあるため、Eclipse、Tomcatなどをインストールする権利を自分のマシンに与えるだけで約20〜25日かかりました。環境のセットアップが遅れても、彼らは、私が同じ2か月の期間でプロジェクトを完了することを期待していました。 要件文書は提供されませんでしたが、私はクライアントサイトで作業しているため、以前は定期的に会議を開いて要件について話し合いました。 6か月後もアプリケーションはまだ完成しておらず、誰もが私を非難していますが、最初の数回の会議で説明した機能よりも多くの機能を追加したことに気づきません。 この期間中に多くのことをやり直す必要がありました。たとえば、フォームを2つのセクションに分けます。数週間後、彼らは混乱を招くので2つのフォームを再度マージするように頼まれました。 アプリケーションの範囲は日々拡大していますが、彼らはまだそれが遅れた2ヶ月のプロジェクトだと考えています。範囲が増えたと彼らに言ったとき、彼らは最初に要件を求めなかった理由を尋ねます。 私はすでに毎日11〜12時間働いており、3〜4時間旅行していますが、今では土曜日にも来ることを期待しています。 ここですべてを行う必要があります。要件、設計、コード、およびテストを行います。 そのような場合はどうすればいいですか? その他の詳細:成果物のリストがありましたが、それらも重要であると言っていくつか追加しました。また、いくつかの成果物を変更しました。彼らはUATサーバーさえ持っておらず、IPアドレスを介して私の開発マシン自体でテストします。

10
雇用主は独学の志願者に何を求めますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は就職市場に参入しようとしている独学のプログラマーです。私が知りたいのは、私の経験を雇用者に示す最良の方法は何ですか? 雇用主は私のプログラミング体験について何を知りたいですか?雇用主は私が書いたコードを見たいですか、それとも彼らが実際に動作しているソフトウェアを見たいですか?または、彼らは私のソフトウェアがどれだけ使用されているか/どれだけ収益を上げたかを気にしますか?私のデザインとプログラミングスタイルについて書くべきですか? 私の経歴:私は最近、外国語を勉強した大学を卒業しましたが、その間にプログラミングが本当にやりたいことだとわかりました。現在、私はガレージプログラマーであり、自分自身を教え続けながら、商用利用のためのソフトウェアを開発していますが、私の目的は「適切な」雇用とキャリアを始めることです。追加のひねりとして、私は現時点でフィンランドに住んでいますが、中国または日本での就職を探しています(留学中に両方の言語を学びました)。
23 skills 

7
プロジェクトの期間を見積もるときの許容誤差はどのくらいですか?
私が働いている会社は、最大10%のエラーマージンを目指しています。 私はそれを比較するものが何もなかったので、私はそれについてどう考えるべきかわかりません。 多かれ少なかれ、私たちがあまりにも間違って推定している場合、測定するための良いベースラインは何でしょうか?どのように(%で)ずっとあなたがあると思います大丈夫ミスに?

8
アジャイルがうまくいかないとき[クローズ]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は最近私たちが参加しているいくつかの新しい人のためにアジャイルのコースを書いています、そして私はアジャイルがすべてのプロジェクトを意味するものではないことを彼らが理解するように注意書きを加えたいです。 私の問題は、私がアジャイルで取り組んでいるプロジェクトの性質のため、これまでかなりうまく機能していたため、間違った種類のプロジェクトで何が間違っているのか、なぜそれを使用するのかを正直に指摘することはできません。 アジャイルプロジェクトがうまくいかないときに注意すべきことは何ですか?
23 agile 

7
公開用のデータベースIDを不明瞭化/難読化することは、本当に「ベストプラクティス」ですか?
私は人々がインターネット上であちこちで講義するのを聞いたことがあります。それはウェブアプリケーションで人前向きのデータベースIDを隠すのがベストプラクティスだということです。私はそれらが主にフォームとURLで意味すると思いますが、私は主題について一口以上を読んだことがありません。 編集:もちろん、今私はこれを尋ねたので、私は主題に関するいくつかのリソースを見つけます: /programming/2374538/obscuring-database-ids /programming/1895685/should-i-obscure-primary-key-values http://joshua.schachter.org/2007/01/autoincrement.html これらのリンクは私の好奇心の一部を満たしましたが、SOの投稿には多くの票がなく、必ずしもこのコンテキストのトピックに集中しているわけではないので、何をすべきかわかりません。リンクは偽です。残りの投稿はそのままにしておきます。 あいまいさとセキュリティの違い、およびこの2つがどのように連携するかを理解していますが、なぜこれが必要なのか想像できません。 これには真実がありますか、それは単なる妄想ですか、それとも完全に偽物ですか? 私はそれを行う方法を考えることができますが、もちろん、それはアプリケーションコードに多くの複雑さを追加します。これはどのような状況で役立ちますか?これが人々が頻繁に行うことである場合、通常はどのように展開されますか?識別子をハッシュしますか?他に何か?余分なセキュリティを確保するための多くの作業のようです。私は本当の解決策を探しているのではなく、人々が現実の世界でこれをどうやって/なぜ行うのかを知りたいだけです。 これは本当に「ベストプラクティス」と見なされますか、それとも単に価値の低い微最適化のみですか? 注:少数の人々は間違った考えを持っているかもしれないと思います:推測が困難なIDが唯一のセキュリティメカニズムであることを示唆していません。明らかに通常のアクセスチェックがあるでしょう。それらが適切に配置されており、レコードのIDまたはハッシュされたIDを知るだけでは、アクセスを許可するには不十分であると仮定しましょう。

5
REST APIで双方向同期をどの程度最適に表現しますか?
リソースを持つWebアプリケーションと、別の同様のリソースを持つリモートアプリケーションへの参照があるシステムを想定して、「ローカル」リソースを「リモート」リソースと同期する双方向同期アクションをどのように表現しますか? 例: ToDoリストを表すAPIがあります。 GET / POST / PUT / DELETE / todos /など そのAPIは、リモートTODOサービスを参照できます。 GET / POST / PUT / DELETE / todo_services /など APIを介してプロキシ経由でリモートサービスから仕事を操作できます GET / POST / PUT / DELETE / todo_services / abc123 /など TodoのローカルセットとTODOSのリモートセット間で双方向の同期を行う機能が必要です。 ある種のRPCでは、次のことができます POST / todo_services / abc123 / sync / しかし、「動詞は悪い」という考えでは、このアクションを表現するより良い方法はありますか?

8
データオブジェクトタイプを不変に設計する必要があるかどうかをどのように決定しますか?
不変の「パターン」はその長所から気に入っています。過去には、不変のデータ型(一部、ほとんど、またはすべて)を使用してシステムを設計することが有益であることがわかりました。多くの場合、そうすることで、作成するバグが少なくなり、デバッグがはるかに簡単になります。 しかし、私の仲間は一般的に不変を避けています。彼らはまったく経験がありません(それからはほど遠い)が、データオブジェクトを古典的な方法で書き込みます-すべてのメンバーのゲッターとセッターを持つプライベートメンバー。その後、通常、コンストラクターは引数をとらないか、単に便宜上いくつかの引数をとります。多くの場合、オブジェクトの作成は次のようになります。 Foo a = new Foo(); a.setProperty1("asdf"); a.setProperty2("bcde"); たぶん彼らはそれをどこでもします。たぶん、それらがどれほど重要であっても、それらの2つの文字列を受け取るコンストラクタを定義することすらありません。そして多分、それらは後でそれらの文字列の値を変更せず、変更する必要はありません。明らかに、これらのことが真実であれば、オブジェクトは不変として設計されるでしょう。(コンストラクターは2つのプロパティを取り、セッターはまったく取りません)。 オブジェクト型を不変として設計する必要があるかどうかをどのように決定しますか?判断するための適切な基準はありますか? 私は現在、自分のプロジェクトのいくつかのデータ型を不変に切り替えるかどうかを議論していますが、ピアにそれを正当化する必要があり、型のデータは(めったに)変更されない可能性があります-いつでも変更できますそれは不変の方法です(新しいものを作成し、変更したいものを除いて古いオブジェクトからプロパティをコピーします)。しかし、これが単に不変物が透けて見えるのが私の愛なのか、それとも実際にそれらの必要性/利益があるのか​​はわかりません。

5
いくつかの一般的なプログラミング言語がCの影響を受けるのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 TIOBEインデックスによると、プログラミング言語のトップ10は、Cの影響を強く受けているようです。 1. Java この言語は、その構文の多くをCおよびC ++から派生していますが、オブジェクトモデルが単純であり、低レベルの機能が少なくなっています。- wikipedia.org 2. C Cは史上最も広く使用されているプログラミング言語の1つであり、Cコンパイラが存在しないコンピューターアーキテクチャはほとんどありません。- wikipedia.org 3. C# .NET Frameworkの開発中、クラスライブラリはもともとSimple Managed C(SMC)と呼ばれるマネージコードコンパイラシステムを使用して作成されました。1999年1月、Anders Hejlsbergは、「Cのようなオブジェクト指向言語」を意味するCoolと呼ばれる新しい言語を構築するためにチームを結成しました。- wikipedia.org 4. C ++ Bjarne Stroustrupによって1979年にBell LabsでC言語の拡張として開発されました。- wikipedia.org 5. Objective-C Objective-Cは、Cプログラミング言語にSmalltalkスタイルのメッセージングを追加する、反射型のオブジェクト指向プログラミング言語です。- wikipedia.org 6. PHP 彼はこれらのスクリプトをCプログラミング言語のCommon Gateway Interface(CGI)バイナリとして書き直し、Webフォームと連携してデータベースと通信する機能を追加し、この実装を「パーソナルホームページ/フォームインタープリター」またはPHP / FIと呼びました。- wikipedia.org 8. Python Pythonは1980年代後半に考案され、1989年12月に、オランダのCWIのGuido van Rossumによって、例外処理とAmoebaオペレーティングシステムとのインターフェイスが可能なABCプログラミング言語(SETLに触発された)の後継としてその実装が開始されました。- wikipedia.org ABC(プログラミング言語)その設計者は、ABCプログラムは通常、同等のPascalまたはCプログラムの約4分の1のサイズで、より読みやすいと主張しています。- wikipedia.org 9. Perl Perlは、C、シェルスクリプト(sh)、AWK、sedなどの他のプログラミング言語から機能を借用しています。- …

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