ソフトウェア工学

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

10
ユーザーストーリー、機能、および叙事詩の関係?
まだアジャイルに慣れていない人として、ユーザーのストーリー、機能、叙事詩の関係や違いを完全に理解しているとは思いません。 この質問によると、機能はストーリーのコレクションです。答えの1つは、機能が実際には叙事詩であることを示唆しています。機能とエピックは同じものと見なされますか?それは基本的には関連するユーザーストーリーのコレクションですか? プロジェクトマネージャーは、階層構造があると主張しています。 Epic->機能->ユーザーストーリー 基本的に、すべてのユーザーストーリーはこの構造内に含まれている必要があります。したがって、すべてのユーザーストーリーはアンブレラ機能に該当し、すべての機能はエピックに該当する必要があります。 私には、それは厄介に聞こえます。ユーザーストーリー、機能、および叙事詩がどのように関連しているかを誰かが明確にできますか?または、違いを明確に概説する記事はありますか?
111 agile  terminology 

7
すべてのソースファイルにライセンス通知を含める必要がありますか?
私は私のオープンソースプロジェクトに使用できるさまざまなライセンスを探していましたが、私が見たすべてのプロジェクトは、あらゆる種類のライセンスで、巨大で不愉快です(私の意見では)ファイルが特定のライセンスの下にリストされていることを示す各ソースファイルに注意してください。私はそのような通知を持たないパブリックドメインではない単一のソースプロジェクトを見つけたとは思わない。 これは時間とファイルスペースの無駄のようです。私は自分のプロジェクトにタグを付け@licenseたり@authorタグを付けたりする予定ですが、コードをパブリックドメインにしたくない場合、個々のファイルにそのような巨大な通知をリストする必要がある理由がわかりません。 私は私のプロジェクトでは、このような通知を含めるしたい、または単にで予告を含むなぜ任意の理由があるREADMEと@licenseタグは十分に良いことは?これは、ほとんどのライセンスの「明確に述べられた」ルールに影響を与えますか、それとも人々が議論しないように過剰になっていますか?
111 licensing 

13
ソースコードの代わりに構文ツリーを保存しないのはなぜですか?
プログラミング言語はたくさんあります。すべての言語が解析され、構文にチェックされてからコードに変換されるため、抽象構文ツリー(AST)が構築されます。 この抽象構文ツリーがあります。ソースコードの代わりに(またはソースコードの隣に)この構文ツリーを格納しないのはなぜですか? ソースコードの代わりにASTを使用する。チーム内のすべてのプログラマーは、このツリーを(適切な文脈自由文法を使用して)必要な言語にシリアル化し、終了したらASTに解析して戻すことができます。そのため、コーディングスタイルの質問({と}の配置場所、空白、インデントなどの配置場所)に関する議論がなくなります。 このアプローチの長所と短所は何ですか?

15
管理が好きではない開発者のキャリアパスは何ですか?
あなたが開発者(シニアまたはリード開発者)であり、管理キャリアを追求するよりもコード/デザインにとどまることを希望する場合、あなたの会社で利用可能なキャリアパスは何ですか?どこまで行けますか? あなたがほこりをかむまでオタクであり続けることは可能ですか? 例えば、ボブおじさんのような人々は、彼らが主張しているように、まだ開発者と見なされていますか?
110 management  coding 


3
構造化ロギングと基本ロギングの利点
新しいアプリを作成しています。構造化されたログを含めたいと思います。私の理想的なセットアップはSerilog、C#コードとBunyanJSのようなものです。これらはfluentd、いろいろなものに食い込んでから出て行くことができると、最初は考えていましたelasticsearch + kibana。MySQLデータベースはすでにあるので、短期的にはSerilog + Bunyanのセットアップと開発者がそれを使用することに興味があり、もう少し時間をかけてfluentdと残りを取り込む間にMySQLにログインできます。 :しかし、私たちの経験豊富なプログラマーの一つは、単にような何かを好むlog.debug("Disk quota {0} exceeded by user {1}", quota, user);使用log4netして、同じようにMySQLのに対してSELECT文を実行します:SELECT text FROM logs WHERE text LIKE "Disk quota"; そうは言っても、どのアプローチがより良いか、ロギングシステムのタイプを選択する際にどのようなことを考慮する必要がありますか?
110 c#  javascript  mysql  logging 

10
従来のヌルポインターチェックの代わりにJava 8以降でOptionalを使用する理由
最近、Java 8に移行しました。今、アプリケーションがOptionalオブジェクトであふれていることがわかります。 Java 8(スタイル1)より前 Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } Java 8(スタイル2)の後 Optional<Employee> employeeOptional = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Optional<Employee> employeeOptional = employeeService.getEmployee();サービス自体がオプションを返すときの付加価値はありません: Java 6のバックグラウンドから来た私は、スタイル1がより明確で、コードの行が少ないと考えています。ここに欠けている本当の利点はありますか? すべての回答からの理解とブログでのさらなる調査から統合
110 java  java8 

5
GitHubでリポジトリをフォークするのはなぜですか?[閉まっている]
多くのGitHubアカウントには、他のアカウントから分岐されたリポジトリしかありません。さらに、これを行う人々は通常、フォークされたリポジトリに貢献しません。 切手や貝殻を収集する人のことを聞いたことがありますが、なぜリポジトリを収集したいのでしょうか?個人的には、リポジトリに変更を加えたい場合にのみ、リポジトリをフォークします。

14
SCMなしでコード品質を維持するにはどうすればよいですか?
私は政府機関で働いています。ここで使用されている技術とソフトウェアの開発方法は非常に古いものです。 大量のストレージスペースがありますが、ここでの作業のほとんどを自動化するために使用されるアプリケーションを保持および維持するための適切なスペースはありません。 この機関では、GITやSVNなどのSCMソフトウェアを使用できません。 コードの品質を維持し、後でアプリに新しい機能を追加できるようにするための最良のアプローチは何でしょうか? コードを壊さずに行った変更を記憶するにはどうすればよいですか? 編集:私は言及するのを忘れました、彼らはそれぞれのコンピュータのためのネットワークドライブを持っています、そしてどういうわけかこれらのネットワークドライブは定期的にバックアップを作成または保存します。ただし、作業を保存し、既存のコードを壊さずに新しい機能を追加できるようにする独自の計画を作成しない場合、SCMソリューションに勝る大きな利点はありません。 編集:多くの人々がポータブルGitを提案したので、私はより多くの情報を追加する必要があります。Visual SVNサーバーをインストールしようとしましたが、インストールする管理者権限がないため失敗しました。また、通常のGitシェルをダウンロードしようとしましたが、ファイアウォールまたはネットワーク設定により、Gitダウンロードページにアクセスできませんでした。ポータブルGitをGmailであるメールに送信してみました。Googleはパッケージ内のexeファイルを検出しましたが、それでも仕事用コンピューターにポータブルGitバージョンをダウンロードできませんでした。もう1つ言及しなければならないのは、教育機関のコンピューターに適用されるネットワークポリシーでは、USBストレージデバイスの使用が許可されていないことです。USBポートを使用して、スマートフォンを充電したり、小型スピーカーなどの一部の機器に電力を供給したりできます。また、一部の人々が言及したように、インターネットさえ許可されていないコンピューターがあります。
110 git  code-quality  svn  scm 

7
統合テストとは正確には何ですか?
私の友人と私は、統合テストとは何かを正確に分類するのに苦労してきました。 今、家に帰る途中で、統合テストの実世界の例を挙げようとするたびに、それが受け入れテストであることがわかりました。事業者が大声で言うことで、システムが何を提供すべきかを特定します。 これらのテストタイプの分類についてRuby on Railsのドキュメントを確認しましたが、今では完全にスローされています。 統合テストの簡単なアカデミックな説明を実際の例で教えてもらえますか?
110 testing  agile  tdd 

13
C ++にはあるがJavaにはない言語機能を避けるべきですか?
プロジェクトの環境によってC ++の使用に制限されているとします。C ++にはあるがJavaにはないいくつかの言語機能(例えば、多重継承、演算子のオーバーロード)の使用を防ぐのは良いですか? その理由は次のとおりです。 JavaはC ++よりも新しいため、JavaがC ++の機能を提供しない場合、その機能は適切ではないことを意味するため、使用を避ける必要があります。 C ++固有の機能(例:フレンド関数、多重継承)を備えたC ++コードは、C ++プログラマーのみが保守またはレビューできますが、JavaのようなC ++(C ++言語固有の機能なし)を記述するだけで、コードは両方によって保守またはレビューできますC ++およびJavaプログラマ。 いつかJavaにコードを変換するように求められる場合があります 通常、C ++固有の機能を持たないコードの方が保守しやすい すべてのC ++言語固有の機能(例:多重継承)には、Javaで実装する代替手段が必要です。そうでない場合、設計パターンまたはコードアーキテクチャに問題があることを意味します。 本当?
110 java  c++  code-quality 

12
インスタンス変数よりもローカル変数を好む理由は?
私が取り組んでいるコードベースでは、インスタンス変数を頻繁に使用して、さまざまな簡単なメソッド間でデータを共有しています。元の開発者は、これがアンクルボブ/ロバートマーティンによる「クリーンコード」の本で述べられているベストプラクティス、つまり「機能の最初のルールは小さくなければならない」に準拠していると断言します。「関数の理想的な引数の数はゼロ(niladic)です。(...)引数は難しいです。概念的な力を多く必要とします。」 例: public class SomeBusinessProcess { @Inject private Router router; @Inject private ServiceClient serviceClient; @Inject private CryptoService cryptoService; private byte[] encodedData; private EncryptionInfo encryptionInfo; private EncryptedObject payloadOfResponse; private URI destinationURI; public EncryptedResponse process(EncryptedRequest encryptedRequest) { checkNotNull(encryptedRequest); getEncodedData(encryptedRequest); getEncryptionInfo(); getDestinationURI(); passRequestToServiceClient(); return cryptoService.encryptResponse(payloadOfResponse); } private void getEncodedData(EncryptedRequest encryptedRequest) { encodedData = …
109 java  refactoring 

4
「長い」禁止は理にかなっていますか?
今日のクロスプラットフォームC ++(またはC)の世界では、次のことができます。 Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS …

7
セキュリティ集約型サイトの小さなバグを修正するために雇われています。コードを見ると、セキュリティホールがいっぱいです。職業はなんですか?[閉まっている]
誰かに雇われて、サイトでちょっとした仕事をしています。大企業向けのサイトです。非常に機密性の高いデータが含まれているため、セキュリティは非常に重要です。コードを分析すると、セキュリティホールで満たされていることに気付きました-読み取り、ユーザーのget / post入力をmysqlリクエストとシステムコマンドに直接投げる多くのPHPファイル。 問題は、彼のためにサイトを作った人は、その仕事に依存している家族や子供を持つプログラマーだということです。「あなたのサイトはキディ遊園地のスクリプトです。あなたのためにやり直してください。元気になります。」 この状況で何をしますか? 更新: 私はここでいくつかの良いアドバイスに従い、サイトでいくつかのセキュリティ上の欠陥を発見したことを開発者に丁寧に報告しました。私はそのラインを指摘し、そこにSQLインジェクション攻撃の潜在的な脆弱性がある可能性があると述べ、彼がそれについて知っているかどうか尋ねました。彼は答えた:「確かに、しかしそれを悪用するには、攻撃者はデータベースの構造に関する情報を持っているべきだと思う。もっとよく理解しなければならない」。 アップデート2: 私はそれが常にそうではないと言って、彼がそれを適切に扱うためにこのStack Overflow質問リンクに従うことを提案しました:PHPでSQLインジェクションを防ぐ方法は?彼はそれを勉強するだろうと言い、以前彼に言ったことに感謝した。おかげさまで、私の役目は終わったと思います。

3
GitHubでレポをフォークしますが、フォークで新しい問題を許可します[終了]
以前に他の人のリポジトリをGitHubでフォークしましたが、元のリポジトリに問題が残ることに気付き、フォークしたリポジトリで問題を提出できないことに気付きました。 現在、次のタスクがあります。私は、彼の個人アカウントのプリンシパルの1人によって開発が行われている中小企業で働いています。彼は友好的にプロジェクトを去りました。そのプロジェクトを彼の個人アカウントからGitHubの新しい「ロール」アカウントに移行したいと思います。 コード履歴を保存するためにレポジトリを自然にフォークしますが、新しい問題を提出できないレポジトリになりますが、これは非常に望ましくありません。 この元のリポジトリのコピーを新しいアカウントにコピーして、理想的にはコード履歴を保持しながら、この新しいアカウント内で新しい問題を提出する方法はありますか?

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