ソフトウェア工学

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

5
それについて何も知らない開発者に疑似コードを説明するための最良のプラットフォームは何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は科学者であり、開発者に理解して別の言語でプログラミングするために、複雑なMatlabコードを文書化する必要があります。過去には、MS Word(プログラムの各ステップを表の新しい行として説明する)を使用してからExcelを使用しましたが、Matlabコードの表示や明確で簡潔なコメントの入力には特に適していませんでしたそれを文書化する方法。 疑似コードを開発者に伝えるためのより良い手法があるかどうか疑問に思っています。既存のソフトウェア(無料?)または他のプラットフォーム(例:TextWrangler)は、コードとその説明方法を提供するのに特に適していますか?同じことをしている他の人の経験から学びたいと思っています。前もって感謝します。 コメントを読んだ後、さらに説明してみましょう...私はすべての開発者が疑似コードを知っていると思いますが、多くの人がMatlabコードを知っているとは思いません。したがって、疑似コードで記述した場合、Matlabコードを無視できます(または参照用に提供するなど)。しかし、私の質問は本当に単純です...コードを開発者に明確に伝えるために人々が過去に使用したソフトウェアまたはプラットフォームはありますか?ドキュメントを作成する人がコードを簡単に説明できるようにするものはありますか?たとえば、ソフトウェアの色分けしたコード(コメントの1色、予約語(if、then、else、forなど)など)を埋め込むことができ、片側には説明を入力する余地があります参考文献など、MS製品を使用してこれを試しましたが、同じことをする必要がある人々の業界があるので、

4
PHPとRuby:両方を活用するには?そして、それは価値がありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 タイトルからお気づきかもしれませんが、これは「PHPまたはRuby」、または「PHP対Ruby」の質問ではありません。これは、同じビジネスでPHP + Rubyを活用する方法に関する質問です。 私自身はPHP開発者です。その便利さから言語が大好きです。Joomla、Drupal、Wordpress、Symfony2、Doctrine2など、それを取り巻くリソースのエコシステムが特に好きです。しかし、言語自体が少しがっかりすることもあります。 。 OTOH、Rubyは非常に美しい言語のように見え、いくつかの側面で表面的に研究したことから、言語自体としてはPythonよりもスリムであると言えるでしょう。ただし、私が見たところからわかるのは、RoRがノイズを発生させることだけであり、RoRはあまり好きではありません(主にモデルレイヤーのため)。 私は会社の共同最高経営責任者兼CTOとして、テクノロジーの人間的側面に焦点を当て始め、PHPとRubyの両方を使用するのが正気かどうかを確認したいので、自由な発想で考えています。ここにいくつかのランダムな考えがあります: Rubyフォークは一般的にPHPフォークよりもプログラマーに適しているようです(平均値の観点から)。非常に優れた、よく設計されたPHPを作成できるため、前の文は多少ばかげていますが、Rubyプログラマーの文化はPHPの。 Rubyについてのことは、迅速な開発に適しているように見えることです。これがRoRにのみ当てはまるかどうかは本当にわかりませんが、モンキーパッチのような特定の慣行があることを知っていますより早く満足する必要があります。 マーケティングの観点から(そうです、あなたの会社のためにマーケティングBSを活用する必要がある場合があります)PHPはいくつかの不名誉を持っていますが、Rubyはより良いようです。 PHP 5.4はトレイトをもたらし、ミックスインよりも優れています。これにより、PHPは特定のものについてはRubyと同じかそれ以上にリーンになる可能性があります。 今、具体的に、私の質問: PHPプログラマーはRubyを学びたいと思いますか?私は知っていますが、逆に、RubyプログラマーはPHPを学びたいと思いますか?。 PHPに適さないRubyには、どのようなプロジェクトや状況が適していますか? Rubyの実際のエコシステムは何ですか?RoRを除いて、他の誇大広告テクノロジー/フレームワークを見たことはありません(RSpecを見たことがありますが、BDDが実際に何で構成されているか、およびその影響についてはまったく知らないことを認めています)。 Rubyに最適な特定のタイプのプロジェクトがあるとしたら、それをPHPに移行するほうが良い瞬間があるでしょうか。PHPが多くのことを処理できることは知っていますが、Rubyにはスケーリング時に制限があることを読んだことがあります(またはRoRですか、それともその両方に当てはまりますか?)。 最後に、そして最も重要なこととして、プロジェクトを2つの言語で維持することは正気でしょうか、それとも単に愚かです。先ほど述べたように、Rubyは短期的にはリーンであり、それがプロジェクトを実現し成功させる可能性があるように見えますが、長期的にはそれについてはよくわかりません。 私は主に、言語の長所と短所(できれば両方)と実際のRubyのエコシステム、つまりPHPのエコシステムから引用したようなフレームワークとアプリケーションをよく理解している人々からの洞察を探しています。

8
顧客/クライアントはMVCまたはWebフォームを気にしますか?
私は中小企業をすぐに始める計画があります。これは、ASP.NETを使用してWebサイトやアプリケーションを構築するための一種のフリーランスになるでしょう。WebフォームまたはMVCに焦点を当てたいと思います。しかし、クライアントにとってそれが重要かどうかはわかりません。つまり、クライアントはMVCまたはWebフォームについて知っていますか?彼らはそれらのうちの1つを好みますか?

3
大量のAjaxベースのWebアプリケーションを維持することはより困難ですか?
多分私はそれを間違っているのかもしれませんが、私の経験では、AjaxベースのWebアプリの開発と保守は、「より標準的な」Webアプリよりもはるかに困難です。 私はajaxを使用してデータをあちこちに読み込むアプリについて話しているのではありませんが、サーバーが送信するページのスタイルは単なるフレームであり、すべてのデータは読み込み時に入力されます。 これらの種類のアプリの開発経験のある方からの連絡をお待ちしています。私の個人的な経験では、構築と保守の両方にさらに時間がかかります。
8 ajax 

9
フリーランスや会社で働くことについてもっと学びますか?
1年ほど前に学校を辞めて、それ以来フリーランスをしています。ある会社で数年間働いて、私よりも多くの経験を持つ人々から学ぶのは良い考えのように思えることがあります。しかし一方で、自分のために働くことで、私が学びたいプロジェクトやテクノロジーを追求することができ、それを断念するのをためらっています。何かアドバイス?

6
ストアドプロシージャの単体テストまたは統合テストですか?
最近、複雑なストアード・プロシージャーおよび関数を維持する必要がある多くの機会がありました。これらはすでに壊れており、通常はかなり微妙な方法で行われます。有効なパラメーターを指定してSPを呼び出すことはほとんどなく、単純に機能しませんでした。 私の解決策は、データベースを必要な初期条件に初期化した後、トランザクション内でストアドプロシージャを実行するフレームワークを進化させ、同じトランザクション内で期待される結果をテストすることでした。トランザクションはテストの最後にロールバックされました。 これは非常にうまくいきました。しかし、データベースとの統合を伴うため、これを「統合テスト」と呼ぶ人もいます。個々のコンポーネントとそれらのコンポーネントの個々のテストケースをテストし、データベースの初期状態を完全に制御したため、これを単体テストと呼びます。 しかし、どこに線を引くべきでしょうか?これは統合テストですか、それとも単体テストですか?この種のテストが悪い考えである実際的な理由はありますか?これが「唯一の」統合テストである場合、これらのストアドプロシージャに対して実際の「単体テスト」を行う方法についての提案はありますか? 更新、3年半後。私の現在のプロジェクトでは、SSDT単体テストの使用を開始しましたが、成功した可能性もありますが、より優れている場合もあります。SQL Server単体テストを使用したデータベースコードの確認を参照してください。これらは通常、SQL Server LocalDBのインスタンスにデータベースプロジェクトを展開するので、これにより、テストに影響を与えるデータベース環境に関する質問がなくなります。事前テスト中に、データベースに必要なデータを入力します。これにより、データベースの内容に関する質問が削除されます。実際、私はこれを行うためにMERGEステートメントを使用して、現在のテストに必要のないすべてのデータがテストの前にデータベースから削除、挿入、または更新されていることを確認しています。彼らには問題があります: 彼らは速くない テスト条件を再利用することはできません 事前テストを再利用することはできません(プロジェクト内のすべてのテストにそれらを共通にしない限り) ユーザーインターフェイスを改善できる 上記の問題の理由の1つは、まだそれらについて不満を述べていないことです。興味のある方はこの機能を試してみて、不満を言うことをお勧めします。これが改善の方法です。

3
サーバーの使用を開始したクライアントにスタッフをトレーニングする方法は?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私はウェブ開発プロジェクトを完成させ、提供する過程にあります。契約では、クライアントがすべてのコンテンツの追加とインストールを担当することが明確に指定されています。指定された成果物はWordPressテーマです。すべてが期待どおりに機能することを確認するために必要だったため、既存のサイトの多くのコンテンツを使用することになりました。 また、作成したカスタムダッシュボードの使用方法を示すために、30分のトレーニングも行いました。私は昨日トレーニングを行い、クライアントに管理者ログインを提供して、彼らが私の仕事を検査できるようにしました。私は追加の時間単価でスタッフトレーニングセッションを行うことを提案し(元の契約はプロジェクトの価格設定でした)、コンテンツを追加する方法の例として使用するデータベースも含まれています。クライアントは拒否し、トレーニングを処理すると述べました。 彼らは今日いくつかのトレーニングを行う予定であると述べ、私のサーバーとインストールを使用できるかどうかさえ尋ねませんでした。新しい管理者アカウントが追加されたメールを3通受け取ったところ、一部のコンテンツの移行を開始したようです。 データベースに追加料金がかかることを伝えたり、サーバーの使用料金を請求したりする必要がありますか?これは私の最大のプロジェクトの1つであり、この状況に遭遇したのは初めてです。彼らが私を利用し、関係をそのままにしておかなくてはならない専門的なことは何ですか?

8
コードエディターが、入力したとおりにタブ/スペースなしでコードをフォーマットした場合、どのように感じますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 ほとんどの場合と同様に、私はこの概念が以前に試されたことを確信しています-私が「仮想フォーマット」と呼んでいるものを使用するエディターに出会ったことがありません。原則は、コードをフォーマットするために開発者またはエディター自体によって従来挿入されていたパディングスペース/タブ文字の効果をシミュレートする浮動左マージンがあるということです。入力すると、エディターは(コメントアウトされている場合でも)コードを継続的に解析し、各改行が見つかったコンテキストに基づいて必要なインデントを計算します XMLには文字の書式設定に特有の問題があり、入れ子になっている傾向があるため、特にXMLエディターを使用してこのアイデアを開発しています。ただし、多くの原則は従来のコードにも当てはまると思います。 そのようなツールを使ったコーディングの経験はありますか、それとも役立つか、妨げるかについての見解はありますか?バージョン管理システムで問題が発生しますか?(既存のパディング文字をすべて検出して取り除きます) 試していない限り、そのようなツールの動作を説明するのは困難です。実際に編集を開始するまでは、従来のように見えます。私は、XMLの編集、階層の変更、ドラッグ/ドロップ、コピーと貼り付けの操作、そして無効な文字が入力された場合のフォーマットの破損/修正を示す、プロトタイプの動作を示すスクリーンキャストビデオを公​​開しました。 編集 すべての回答/コメントはこれまで否定的でした-バランスを是正しようとするために、仮想フォーマットが考えるいくつかの利点: フォーマット標準についての議論は不要で、選択した/必須の規則に準拠する場所に改行を配置するだけです スペースが限られている場合(本/ブログ/ドキュメント)、ワードラップは可能ですが、完全なインデントを取得できます 各コードブロックには、画面の端に押し込まれずに、開始位置のすぐ隣に「マウスハンドル」があります。これをクリックして、ブロック全体または内部ブロックを選択します。 ドラッグアンドドロップして忘れる-初めて実行可能になります 他の人々のコードを再フォーマットする時間はありません 正しくフォーマットされていないコードはありません(レンダリングがないという意味で) Ctrl + Backspaceの代わりにBackspaceを使用すると、キーボードのガイドキーを指で維持できます 柔軟なレンダリング-レンダリングされたフォーマットを環境に適合させます。誰かが携帯電話/小さな画面のタブレットでコードを読んでみましたか? 編集可能な文字が(サンプルXSLTで)およそ25%少ないと考えてください。効率の面でメリットはありませんか? 編集-これまでの結論 開発者は、インデントに使用される埋め込み文字の使用に固有の欠点のほとんどを効率的に克服するツールと作業方法を確立しています。 書式設定文字を削除すると、一部の差分ツールに悪影響が及ぶことが懸念されます。 開発者は、自動レンダリングでは処理できないような方法でフォーマットを「微調整」する柔軟性を求めています。 先頭のスペース/タブを削除すると、そのようなコードを効率的に確認するには、コードをフォーマットできる「コード認識」ツールが必要になります。プレーンテキストエディターではフォーマットが表示されません。 (仮想インデントに対して)いくつかの仮想的なメリットがある可能性があると感じている人は、デメリットがこれらの潜在的なメリットを決定的に上回っていると考えています。 編集-評決 障害の認識といくつかの利点(ある場合)は、一般的な言語向けにこのスペースのない編集コンセプトを追求することは、単一の開発者としては賢明ではありません。ただし、XML / XSLTの場合(空白の特別な処理のため)、少なくとも可能性についてはある程度の合意があるようです。 編集-出荷された製品 ここで一般的に否定的な感情があったにもかかわらず、私は編集者を出荷しました。私は実際の経験に基づいて、より具体的な問題という形で批判をもたらすことを期待して無料版を作成しました。ややイライラして、これまでのところ不満はありません(実際、ダウンロード量を考慮したフィードバックはほとんどありません)。これは、ユーザーがこれを「そう何なのか」と考えるほどうまく調整したためだと思います。一種の機能-しかし、伝える方法はありません...

4
HTML / CSS / JSのみを使用したラピッドプロトタイピングのベストプラクティスは何ですか[完了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 Webアプリケーションのプロトタイプを開発しています。HTML、CSS、JavaScriptのみを使用したい。私はテキストエディターを使用することを好み、Axureのような新しいツールを学ぶ(またはそのために支払う)必要はありません。 あなたの考えでは、ベストプラクティスは何でしょうか?私にとって、良いプロトタイプには多くの資質があります。 迅速に開発 改善が簡単 UXに関する公正な忠実度(これは、ワイヤーフレームに特化したOmnigraffleやPowerPointなどのツールを失格にします) 私はできるだけ早く学習するように努めていますが、あなたの経験に基づいて、どのようにして迅速かつ機敏に対応できるかについて知りたいと思います。 参照: http://www.boxesandarrows.com/view/prototyping-with

1
サブセット合計問題はNP完全ですか?
私が正しく知っている場合、サブセット合計問題はNP完全です。ここにn個の整数の配列があり、ターゲット合計tが与えられた場合、ターゲットから合計できる配列から数値を返す必要があります(可能な場合)。 しかし、この問題は、多項式時間でテーブルを構築するダイナミックプログラミング法では解決できません。nX tテーブルで、最後の数が出力に確実に含まれ、ターゲットがt- a [n]になる場合などです。その他の場合、最後の数は含まれず、ターゲットは同じtのままですが、配列のサイズはn-1になります。したがって、この方法で問題のサイズを小さくし続けます。 このアプローチが正しい場合、このn * tの複雑さは多項式ではありませんか?そして、これがPに属し、(私が聞いたことから)NP完全である場合、P = NP 確かに、私はここで何かを見逃しています。この推論の抜け穴はどこですか? おかげで、


6
継承を使用してコードを再利用する場合、再利用の利点を飲み込むのが難しいと思いませんか?
私は約8年間コーディングを行ってきましたが、継承は柔軟性が高すぎるため、作成したコードと完全に混同されることがあります。最も簡単な例は次のとおりです。 abstract class AClass { protected void method1() { if(check()) { do1(); } else { do2(); } } protected abstract void do1(); protected abstract void do2(); } クラスの目的は、do1()とdo2()を実装してさらにロジックを実行できるようにすることですが、method1()をオーバーロードすることを決定すると、状況はすぐに複雑になります。 私は戦略パターンでのみコードを見つけます。コードは継承を通じてよく再利用されます。ほとんどの場合、基本クラスの設計者はそのサブクラスを非常によく知っており、その継承は完全にオプションです。 IoHandlerの4つのクラスによって継承されるクラスがあり、サーバーサイド、クライアントサイド、エッジサーバー、オリジンサーバーのサブクラスであり、私を狂わせ始めています。私はいつもコードのリファクタリングをしていました。うまくいくと思うアイデアを思いついたのですが、うまくいかなかったのです。人間の脳は一度に7つの情報しか保持できないと言われています。

18
一部のプログラマーは、他の人が知らないいくつかの秘密を知っていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 私の議論の詳細については気にしませんので、短いインスタンスの形で提示します。 Javaの人は、有名なプログラマー(私の国の一種のMartin Fowler)の記事や出版物をフォローしています。彼は他の有名なプログラマーが共有しないいくつかの秘密を共有していると言います。 私はプログラミング領域にウィザードのようないくつかの秘密があるとは信じていません。しかし、この分野でまだ良くない一部のプログラマーは、私たちが知らないいくつかの秘密を知っているため、他の有名なプログラマーは成功していると考えています。 私はこれに全く同意せず、誰かと話し合ったところ、最後に彼はあなたにこの分野で2年間いると言いました。 私は私が間違っていないことを確認したかったのです。それが私がこれを知りたかった理由です。

4
テスターはソースコードを見る必要がありますか?
テスターがブラックボックステストに加えてホワイトボックステストを行う必要はどのくらいありますか?開発者として、私はQA志向の人が私のコードを調べて弱点を探すことに価値があると考えていますが、技術者以外のテスターが十分かつ体系的である場合、彼らはアプリケーションをうまくカバーできるようです。 ホワイトボックステストでは、アプリケーションのみをユーザーの観点から見た場合、明白ではない重要なテストケースが明らかになる可能性がありますが、ブラックボックステストのみにかかる時間は少なく、作業を実行できる人の数が大幅に増加します。 。また、テスターに​​到達する前に、開発者が重要な量のホワイトボックステストを実行する必要がありますか?
8 testing 

4
Web開発者/開発チームに連絡する前に知っておくべきことは何ですか?
私はウェブサイトのプログラミングの経験がほとんどありません。しかし、実現したいウェブサイトのアイデアがあります。それはトリップアドバイザーのようなサイトが使用するのと同じ機能の多くを持っていますが、明らかに小規模であり、その主な機能はユーザー評価システムです。 自分でそれを行う方法を学ぶことは私にとって理想的ですが、その複雑さと時間のかかる性質を考えると、それは非現実的だと感じます。したがって、私の質問は、Web開発チームにアプローチする前に何を知って理解する必要があるかということです。つまり、自分の考えについて話し合うために座ったときに彼らが私に尋ねる質問は何ですか? 少し別の注意として、すでに行われているウェブサイトの作成に関する法的制限は何ですか?基本的に同じことをするウェブサイトは少数(2つまたは3つ)ありますが、私の意見では、ユーザーにとってより使いやすい方法で、はるかに便利な機能をユーザーに提供しています。

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