ソフトウェア工学

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

5
XSLTおよび可能な代替案[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 1つのXMLファイルを別のXMLファイル(HTMLなど)に変換するためのXSLTを見てきました。XSLT(標準化されて使用されているツールである)には利点があることがわかりましたが、いくつかの理由で消極的です XSLTプロセッサは非常に巨大であると思われる/リソースを大量に消費する XMLはプログラミングにとって悪い表記法であり、それがXSLTのすべてです。 ここでXSLTをトロールしたくないのですが、私はそれについて嫌いなものを指摘したいだけで、私は代替手段に期待することのアイデアをあなたに提供します。 Lispのバックグラウンドがあるので、Lispに基づいたツリー構造変換のより良い方法があるかどうか疑問に思います。DSSSLへの参照を見てきましたが、残念ながらDSSSLに関するほとんどのリンクは死んでいるので、それを説明するコードを見るのはすでに困難です。DSSSLはまだ使用中ですか?docbookをチェックアウトするときに一度openjadeをインストールしたことを覚えています。 Jeff Atwoodのブログ投稿は、XSLTの代わりにRubyを使用することを示唆しているようです。 非XMLプログラミング言語でXSLTに似たXML変換を行うための適切な方法はありますか?私は上の入力のために開いているだろう XML変換を容易にするスクリプト言語に役立つライブラリ 特に(ただし排他的ではない)Lispのような変換言語、またはRubyなど。 これまでに見つけたいくつかのこと: Webのいくつかの場所で、Linqが代替案として挙げられています。非常に一般的には、あらゆる種類の分類であり、XSLTの経験が最も豊富な人のものです。 スキームhttp://cs.brown.edu/~sk/Publications/Papers/Published/kk-sxslt/およびhttp://www.okmij.org/ftp/Scheme/xml.html
14 xml  lisp  linq  xslt 

4
内部ビジネスアプリケーション用のWindowsインストーラーは理にかなっていますか?
私は、この状況でよくあることについて一般的な理解を深めようとしています。 次のような典型的な企業環境でインストーラーは歓迎されますか? 変更管理プロセス 開発/ QA /本番環境 さまざまな領域(ファイアウォール、データベース、ウィンドウなど)に指定された展開チーム。 インストーラーの作成に適しているかどうかを確認するために、アプリケーションに適用できる「リトマステスト」はありますか?* インストーラーはシンプルで、すべてのアプリケーションにインストーラーが必要ですか? インストーラーも適切なツールですか? 開発者がインストーラーをサポートするためにWiXのようなものを学ぶことを期待するのは合理的ですか? 一般的に保守性は懸念事項です。つまり、インストーラーを作成することはニッチなスキルですか? * たとえば、運用サーバーの共有ディレクトリにある一連のwinformアプリケーションがあります。特定のグループはこのディレクトリからアプリケーションを実行できますが、システム管理者のみが実行可能ファイルを変更できます。現在の展開プロセスでは、管理者が実行可能ファイルとライブラリを共有ディレクトリにコピー/貼り付けします。 アプリケーションは個々のユーザーのマシンにインストールされないため、これらのアプリケーションの新しいバージョンを共有ディレクトリに展開するためのインストーラーを作成するのは理にかなっていますか? 編集- ここでの答えは確かなアドバイスを与えると感じたので、多数のアプリケーションを構築して個々のフォルダーに展開する必要がある現在のプロジェクトで思いついたことを共有したいと思いました。 Webプロジェクトの_PublishedWebsitesの動作を模倣する_PublishedApplicationsというNuGetパッケージを見つけました。NuGetパッケージをプロジェクトにインストールすると、ビルドアーティファクトを出力パスの_PublishedApplicationsディレクトリにコピーするターゲットが追加されます。この動作は、コマンドラインからMSBuildを実行し、outdirプロパティを指定することでアクティブになります。 msbuild /p:Configuration=Release /p:outdir=C:\path\to\outdir MySolution.sln これにより、次のようなディレクトリ構造が得られます。 C:\ path \ to \ outdir _PublishedApplications \ Project1 \ dlls, exes, etc. Project2 \ ... そこから、さまざまな環境で抽出できるzipを作成するのは非常に簡単です。

3
使用できるUnicodeセンチネル値
私はファイル形式を設計しており、それを正しく行いたいと思っています。バイナリ形式であるため、ファイルの最初のバイト(またはバイト)が有効なテキスト文字を形成しないようにする必要があります(PNGファイルヘッダー1のように)。これにより、形式を認識しないツールでも、最初の数バイトを調べることでテキストファイルではないことがわかります。 上記のコードポイント0x7Fはすべて無効なUS-ASCIIなので、簡単です。しかし、Unicodeの場合はまったく別の話です。別に有効なUnicode文字からある民間利用の文字、noncharactersと歩哨は私がに見られるような、Unicodeのプライベート用途のキャラクター、Noncharacters&センチネルよくある質問。 無効なUS-ASCII、UTF-8、UTF-16LE、UTF-16BEになるファイルの先頭で使用できるバイトのセンチネルシーケンスは何でしょうか。 明らかに、最初のバイトは0x80有効なUS-ASCII(制御)文字になるため、以下の値を持つ0x00ことはできません。したがって、使用することはできません。 また、私用文字は有効なUnicode文字であるため、これらのコードポイントも使用できません。 それはリトルエンディアンとビッグエンディアンの両方のUTF-16で動作しなければならないので、非文字などは、0xFFFEその逆としてもできません0xFEFF有効なUnicode文字です。 上記の質問には、任意の使用していないことを示唆しているnoncharacters何かのようなので、まだ、有効なUnicodeシーケンスにつながることなどを0xFFFF行う画像のもあります。 私が使用するために残されている将来の保証のセンチネル値は何でしょうか? 1)PNG形式には、最初のバイトとして非ASCII 0x89値があり、その後に文字列が続きますPNG。PNGの最初の数バイトを読んだツールは、それが解釈できないのでそれがバイナリファイルであると決定するかもしれません0x89。一方、GIFファイルは、有効で読み取り可能なASCII文字列で始まり、GIFその後にさらに3つの有効なASCII文字が続きます。GIFの場合、ツールは読み取り可能なテキストファイルであると判断する場合があります。これは間違っており、非テクスチャバイトシーケンスでファイルを開始するというアイデアは、Andy McFaddenによるDesigning File Formatsから生まれました。
14 unicode 

8
プレッシャーにさらされているときに悪いコードを書きますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 あなたがプレッシャーにさらされているとき、締め切りが近づいており、マネージャーがあなたの首に息を吹きかけています。あなたはあなた自身が悪いコードを書き始めていると思いますか?TDDとベストプラクティスは、物事を成し遂げるために脇道をすり抜けますか?そのような状況では何をしますか?どんな経験をしましたか?
14 bad-code 

3
バグの優先度に開発者に影響を与え、それに応じてそれらを処理する方法は?
現在、作業中のバグプロセスがあります。 バグには3つのレベルがあります。 P1バグ:ユーザーの作業を妨げるバグ。それらはその場で解決されなければなりません。 P2バグ:影響はあるが、ユーザーは作業できるバグ P3バグ:影響がなく、ユーザーが作業できるバグ。 P1は必須であり、その場で対処する必要があります。しかし、P2とP3については、ケースバイケースで判断します。 3つのレベルがあるため、チームはP2とP3を扱うのではなく、顧客から求められたより緊急の新しい開発に取り組む傾向があります。 質問は次のとおりです。 P4を持つなど、別のレベルの優先度を追加する必要がありますか? 今週のように、緊急ではないチケットを処理するためのターゲットも割り当てる必要があります。コーディングタスクを割り当てない場合は、少なくとも1 P2を処理する必要がありますか。 現在、私が上で挙げたような目標はありませんが、私の懸念は、そのような目標を与えることは残忍なことです。確かなことは、目標について話し合う必要があることです。チームは、特に目標を設定するときに議論に関与するのが好きです。 更新: この質問は、類似性の観点から提案されました。しかし、まったく似ていません。 私の質問は、厳密なアジェンダを課すことなくバグを処理し、それを解決する方法です。だから、暗示された質問は私を助けない。それでも、ありがとう。

7
クラス変数を渡すクラスメソッドを作成したのは悪い考えですか?
ここに私が意味するものがあります: class MyClass { int arr1[100]; int arr2[100]; int len = 100; void add(int* x1, int* x2, int size) { for (int i = 0; i < size; i++) { x1[i] += x2[i]; } } }; int main() { MyClass myInstance; // Fill the arrays... myInstance.add(myInstance.arr1, myInstance.arr2, myInstance.len); } addクラスメソッドなので、必要なすべての変数に既にアクセスできますが、これは悪い考えですか?これを行うべき、またはすべきでない理由はありますか?

4
特定のランドマークの範囲内のすべてのランドマークを効率的に検索するにはどうすればよいですか?
特定のランドマークの10 km /マイル(この話では重要ではありません)内のすべてのランドマークを見つけるジオ検索プロジェクトから始めようとしています。 たとえば、1,000,000のランドマークのデータベースがあるとします。特定の座標を持つランドマークの10マイルの範囲ですべてのランドマークを見つけるには、検索からのランドマークと1,000,000ランドマーク間の距離を計算する必要があります。 それを行うより良い方法はありますか? 私が考えていた代替手段は、国、地域、都市、近隣、ビジネス、歴史などのランドマークを、ビジネスが近隣または都市の一部になることができるように分類することです。都市は、地域、国などの一部です。これにより、計算のリストを絞り込むことができますが、検索を高速かつ正確にするためには、多くの作業を行う必要があります。 Google Maps APIは役立ちますか?

5
実行時間が長すぎるスプリント計画に対処する方法
1週間のスプリントのスプリント計画に5時間以上かかりました。それは多すぎるようです。 ほとんどのチームメンバーはシニアではないため、スプリント計画で詳細を議論します。そうしないと、実装中にミスが発生し、スプリント中に再設計されます。 これにどう対処しますか? 1週間のスプリントあたりわずか2時間の長さに合わせるために、計画中にどの程度詳細に議論する必要がありますか?
14 agile  scrum  planning  sprint 

6
クリーンコード-リテラル1を定数に変更する必要がありますか?
マジックナンバーを避けるために、リテラルに意味のある名前を付ける必要があるとよく耳にします。といった: //THIS CODE COMES FROM THE CLEAN CODE BOOK for (int j = 0; j < 34; j++) { s += (t[j] * 4) / 5; } -------------------- Change to -------------------- int realDaysPerIdealDay = 4; const int WORK_DAYS_PER_WEEK = 5; int sum = 0; for (int j = 0; j …

5
結合を増加させずにDRYを適用することは可能ですか?
関数Fを実装するソフトウェアモジュールAがあるとします。別のモジュールBは、F 'と同じ関数を実装します。 重複するコードを取り除くには、いくつかの方法があります。 AにBのF 'を使用させます。 BにAのFを使用させます。 Fを独自のモジュールCに入れ、AとBの両方に使用させます。 これらのオプションはすべて、モジュール間に追加の依存関係を生成します。カップリングを増加させる代わりに、DRY原則を適用します。 私が見る限り、DRYを適用すると、カップリングは常に増加するか、リースでより高いレベルに移動します。ソフトウェア設計の最も基本的な2つの原則の間には矛盾があるようです。 (実際、そのような競合があることは驚くことではありません。これはおそらく、優れたソフトウェア設計をそれほど難しくしていることです。これらの競合は通常、入門書では扱われていません。 編集(明確化のため):FとF 'の等価性は単なる偶然ではないと思います。Fを変更する必要がある場合、F 'も同様に変更する必要があります。

4
ソフトウェアアーキテクチャは言語にどの程度依存していますか?
ソフトウェアアーキテクチャと設計パターンについて自分自身を教育していると、ほとんどの場合、言語の機能と設計の詳細が説明に含まれていることに気付きました。 例えば、それに関する実際の記事や本は、クラスとインターフェースを使用してアイデアを説明します。このトピックで簡単に見つけられるものはすべて、オブジェクトとOOPの概念に言及しています。 システムが記述されている言語にそのような概念がまったくない場合はどうなりますか?たとえば、動的に型付けされ、インターフェイスの概念がないPythonまたはNodeを使用した場合はどうなりますか?インターフェイスが一時的な構成要素であり、ランタイムには存在しないTypeScriptを使用するとどうなりますか?関数型プログラミングを採用しようとしている場合はどうなりますか?たとえばSOLIDを無視して、自分の言語に適した他の概念を探す必要がありますか? はいの場合、それらは何ですか?残念ながら、よく採用されているすべてのパラダイム(私が知る限り)は、何らかの形でOOPの概念と型を参照しています。いいえの場合、一般的なアーキテクチャと設計の原則を特定の言語とユースケースに適合させるとき、どの規則に従う必要がありますか? 一般的に、アーキテクチャと言語の依存関係をどのように説明しますか?

4
多型のコンテキストでサブタイプに追加されたメソッドを処理する方法は?
ポリモーフィズムの概念を使用してクラス階層を作成し、親の参照を使用すると、オブジェクトを持っている特定の型を知らなくてもインターフェイス関数を呼び出します。これは素晴らしい。例: 動物のコレクションがあり、すべての動物の機能を呼び出しeatます。犬を食べるのか、猫を食べるのかは気にしません。継承と実装クラス以外から-しかし、同じクラス階層には、追加を持っている動物持ってAnimal、例えばmakeEggs、getBackFromTheFreezedStateようにしています。そのため、関数の一部のケースでは、追加の動作を呼び出す特定のタイプを知りたい場合があります。 たとえば、朝の時間で、動物だけの場合はを呼び出しますeat。それ以外の場合は、人間の場合は最初washHandsに呼び出し、次に呼び出しgetDressedますeat。この場合の対処方法は?多型が死ぬ。コードの匂いのように聞こえるオブジェクトのタイプを調べる必要があります。このケースを処理する一般的なアプローチはありますか?

4
実際にどのように機能するのかわからないときに、どのようにコーディングしますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 2年前に閉店。 私は最近Cを学び、知識を固めるプロジェクトを始めたいと思っています。vimのような非常にシンプルなテキストエディタを作成することに決めました。私が直面している問題は、テキストエディタがどのように機能するのか、まったくわからないことであり、それについて学ぶために何をグーグルで検索するべきかわからないことです。 それについてグーグルで調べた結果、vimのGitHubリポジトリが作成されました。これは、コードベースが巨大であり、コードが私を混乱させるため、役に立たないものです。また、C言語でvimのような機能を持つテキストエディタを作成するためのチュートリアルも見つけました。 チュートリアルに従うことを考えましたが、不正行為のように感じます。vim開発者は、特定のチュートリアルなしでvimをコーディングする方法をどのように見つけましたか?それとも、よりシンプルなテキストエディターから始めましたか?彼らは言語とそのドキュメントの知識からそれをどうやって理解したのですか? チュートリアルを直接実行せずにこのテキストエディタの作成を開始するために必要なものは何ですか?私が考えたい別の例は次のとおりです。デニス・リッチーとケン・トンプソンはどのようにUnixをコーディングしましたか?OSがどのように機能するかはわかりますが、それをコードに組み込む方法はわかりません。私が見逃しているのは何ですか?この言語の知識を実際の実用に移すにはどうすればよいですか?
14 c  languages 

3
RxJavaクラスFlowableは、正当に460個のメソッドを持つことができますか?
JavaのReactiveX (RxおよびReactive Extensionsとも呼ばれます)の実装であるRxJavaを始めたばかりです。本当に私を襲った何かがの巨大な大きさだったRxJavaのフロアブルクラス:それは460個のメソッドを持っています! 公平であるために: オーバーロードされたメソッドが多数あり、メソッドの総数が大幅に増えます。 おそらくこのクラスは分割されるべきですが、RxJavaに関する私の知識と理解は非常に限られています。RxJavaを作成した人々は確かに非常にスマートであり、それらは作成するために選択するための有効な引数を、おそらくを提供することができますフロアブル剤を非常に多くの方法で。 一方: RxJavaはのJava実装であるMicrosoftの反応性の拡張機能、およびそれがさえ持っていないフロアブルクラスを、ので、これは盲目的に既存のクラスを移植し、Javaでそれを実施する場合ではありません。 [ 更新:イタリック体の前のポイントは事実正しくありません。マイクロソフトの観察可能な 400以上のメソッドを持つクラスは、RxJavaのための基礎として使用された観察可能なクラス、および流動性は、に似て観察可能な大量のデータのためではなく、ハンドル背圧。そのため、RxJavaチームは既存のクラスを移植していました。この投稿は、元のデザインに挑戦されている必要があり、観察可能マイクロソフトによってクラスではなく、RxJavaのフロアブルクラスを。] RxJavaはわずか3年以上前であるため、これは(Javaの初期リリースの場合のように)優れた(SOLID)クラス設計原則に関する知識が不足しているためにコードが誤って設計されている例ではありません。 Flowableほどの大きさのクラスでは、その設計は本質的に間違っているように見えますが、そうではないかもしれません。このSEの質問に対する1つの答えクラスメソッドの数の制限は何ですか?答えは「必要な数のメソッドを用意する」ことです。 明らかに、言語に関係なくそれらをサポートするためにかなりの数のメソッドを必要とするクラスがいくつかあります。それらは簡単に小さなものに分解されず、かなりの数の特性と属性を持っているからです。例:文字列、色、スプレッドシートセル、データベース結果セット、HTTPリクエスト。これらのことを表現するためのクラス用のメソッドをおそらく数十個用意することは、理不尽に思えません。 しかし、Flowableには460個のメソッドが本当に必要なのでしょうか、それとも非常に巨大なために、必ずしもクラスの設計が悪い例ですか? [明確にするには:この質問は、具体的RxJavaのに関し、フロアブルクラスではなく、神は、一般的にオブジェクト。]

1
「関数を返す関数」パターンにはJavaScriptで名前がありますか?
JavaScriptでこのパターンを頻繁に使用します。以下に例を示します。 const comments = [ { text: 'Hello', id: 1 }, { text: 'World', id: 4 }, ]; const byId = id => element => element.id === id; const comment = comments.find(byId(1)); 時々、このパターンはコードを読みやすく、モジュラーにすることができます。このパターンは何と呼ばれていますか?

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