ソフトウェア工学

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

8
良いJavaScriptを書くための5つ以下のヒント [閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 JavaScriptは明らかに非常に不可欠になりました。しかし、私はまだそれに慣れていないので、このような混乱のように感じ、今は対処したくないという気持ちと戦うのは難しいと感じました。JavaScriptを使用しているよりも、他の言語をはるかに理解しています。この恐怖に対処できないように思えるからです。JavaScriptを書いているときに、ワイマラナーの子犬の肖像画を描こうとしているような気がします。 たいていの場合、私は自分が行うそれぞれの動きを自問することができるという最も重要な指示をいくつか覚えておくのに役立ちます。(私の考えでは、一握りは5つ以下です。) JavaScriptをコーディングしているときに、移動ごとに質問する必要があるJavaScript固有の5つ(またはそれ以下)の質問をリストできますか?彼らは何でしょうか? 更新:明確にするために、JavaScriptを学習する際に留意すべき5つのことは求めていません。私は常に自分自身に問いかける5つの質問を求めています。誰もが常に問うべきです。「これをどこか他の場所で繰り返しますか?」のような高レベルの質問。または「この変数/関数名は十分に具体的(または具体的すぎる)」<==これらの質問例はJavaScriptに固有のものではありません。JavaScript固有のディレクティブを探しています。
14 javascript 

8
どのような状況でも、フローチャートは依然として価値のある便利なツールですか?
最初にプログラミングを始めたとき、私はフローチャート(およびプリンター間隔チャート)に大きく依存していました。COBOLクラスにいる間、フローチャートがインストラクターによってサインオフされるまで、コードを書き始めることができませんでした。当時、私はすべてのフローチャートを作成する必要がありました。 25年後の今日、私は2種類のことだけをフローチャート化しています。ロジックがトリッキーまたは非常に一般的な概念であるすべての大きなステップを適切な順序で定義できるようにするための非常に具体的なアルゴリズム。 私が単に見落としているフローチャートの他のユースケースはありますか?

2
最高のオープンソースASP.NET MVC eコマースプロジェクト[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 eコマースサイトを立ち上げて運用する必要がありますが、必要のない場合はボトムアップでプログラムしたくありません。ASP.NET MVCを使用してプログラムしたい。 ベースとして使用し、必要な機能を強化できる、優れたオープンソースの代替案(またはモジュール式の場合は購入用の代替案)を探していますか? すべての「通常の」eコマース機能を備えている必要があり、選択したクレジットカードAPIと統合する可能性も必要です。 誰かが私にここで私に何か提案があれば、私はそれを感謝します:)

5
Haskellから得た知識とスキルをエクスポートするために最も互換性があり、広く使用されている生産言語は何ですか?
私はHaskellが好きで、シンプルでシンプルです。Haskellは本番ソフトウェアで使用されていますが、私が見たものから特に広く展開されているわけではありません。業界で同様に素晴らしいものを使用する雪だるまの機会を得るために、生産プロジェクトに関して最も類似しており、まだ広く使用されている言語は何ですか? また、最初の部分と同じ言語が多数のプラットフォームで利用可能ですか?そうでない場合、プラットフォームを幅広く展開するのに最適な代替手段は何ですか?大規模な群れや家族ではなく、1つの言語でTo Doリストを作成したいです。確固たる証拠はプラスになります。

8
教育ではなく仕事の経験ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 5年前に閉鎖されました。 このトピックに「教育と経験」という名前を付けたかったのですが、このトピックはすでに存在しています。私はその議論を読みましたが、私が尋ねたいことはそのトピックに関連していますが、質問はまったく異なります。 私は約12年前にプログラミングを学び始めました。過去4年間、ソフトウェアアウトソーシングの開発者として働いています(ロシアにあります)。ロシアを離れ、オーストラリアのような他の場所に移動することを考えています(基本的には問題ではありません)。一般的な能力とサクセスストーリーを示すいくつかの例がありますが、それでもこれらすべての人々と私のケースには違いがあります。 私はかなり良い技術的経験を持っています-主な分野はC ++と.NETです。さまざまなテクノロジー/プラットフォーム(Windows、Linux、Android、Qt、.NETなど)に基づく7つのプロジェクトに既に参加しています。だから、ソフトウェア開発者として働くことができると信じています。それを考えてみましょう-「技術的な観点から、この男は絶対に大丈夫です」。 唯一の問題は、教育を受けていないことです。だから、ここに質問があります: ほとんどの場合、「CSのBS、同等、またはそれ以上」などの単語を「N年の経験」と読みますか? 更新:MCSD(.NET用)のような証明書を取得する意味はありますか?この質問には別のトピックがあることは知っていますが、まだ教育はないが証明書と経験はあるというケースを求めています。

8
コンパイラは開発以外で使用されていますか?
私の理解では、コンパイラは開発者がコードを実行可能(マシンコード)ファイルにコンパイルするためのものです。コンパイラは、クライアントのマシンまたはエンドユーザーシステムには拡張されません。 代わりに、開発者はコンパイラを使用してコードをマシンコードに変換し、アプリケーションとして使用するために他のマシンに転送します。 コンパイラには、このプロセス以外の機能がありますか?その場合、いつ使用されますか?
14 compiler 

3
なぜcファミリーは、LISPファミリーではなく、数学/ CSプログラムの標準CS研究連隊なのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は自己改善のためにLISPに慣れてきました。私が気づいたことの1つは、LISPはCと言うよりも数学のパラダイム内にあるということです。構文と設計構造は、アルゴリズムの実際の数学的モデルを直接反映しているようです。優れた数学ベースのCSプログラムでさえ、LISPではなくCを学習する理由は、私には意味がありません。LISPはCよりも高い数学概念をより直接的に採用していると思います。Cで数学構造をモデル化できないと言っているのではありません。LISPが数学者にハードワイヤーされているように見えることに気付いています。 私は、JAVA学校でのジョエル・スポルスキーの暴言の多くを読みましたが、彼の評価に同意しますが、私の学校はその理由でJavaを教えませんでした。彼らは、ポインター、アルゴリズム設計、再帰、さらにはアセンブリ命令などの基本概念を教えるのに厳格でした。ただし、これらはすべてCおよびc ++で行いました。誰もこれおよび/またはその歴史の理由を知っていますか?

5
JavaScriptが従来のアプリケーション開発(コンパイル済みソフトウェア)に使用されないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 JavaScriptを使用したWeb開発の長年の間に、信じられないほど強力な言語であるという結論に達しました。 次のような豊富な機能セットを提供します。 動的型付け 一流の機能 入れ子関数 閉鎖 メソッドとして機能 オブジェクトコンストラクターとしての機能 プロトタイプベース オブジェクトベース(ほとんどすべてがオブジェクトです) 正規表現 配列リテラルとオブジェクトリテラル 私は、この種の言語でほとんどすべてを達成できるように思えます。また、OOプログラミングをエミュレートすることもできます。 ソフトウェア指向のカスタム機能(I / O、FileSystem、入力デバイスなど)を使用すると、アプリケーションを開発するのに最適だと思います。 ただし、私が知る限り、Web開発または既存のソフトウェアでスクリプト言語としてのみ使用されています。 ごく最近になって、おそらくV8エンジンのおかげで、他の種類のタスクにより多く使用されています(たとえば、node.jsを参照)。 なぜこれまではWeb開発のみに委ねられていたのですか?ソフトウェア開発から遠ざけているのは何ですか?

6
言語の標準フレームワーク/ API /機能をどのように学習しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 4年前に閉鎖されました。 コーディング方法を理解しています。私は定期的に使用する言語の基本を回避する方法を知っています。私は少し基本的な正規表現を書く方法を知っています。データベースと話をしたり、入力を受け付けたり、出力を出力したり、ファイルを処理したりできます。やや複雑なプログラム。 私の問題は、それが十分だとは思わないということです。私は自分の言語の標準ライブラリのごく一部しか知らないように感じます。少なくともすべてを理解するまでは、それを使って仕事を得ようとする権利さえありません。私は(コミュニティ/ジュニア/ whathaveyou)大学を卒業したばかりで、友人たちは業界で仕事を得ていますが、それでも私は偽物や物差しのように感じています。 「十分に知っている」ための適切なマーカーはありますか?少なくとも、FizzBu​​zzをコーディングすることができるという事実を、物事に申し込むことは大丈夫だという指標として採用すべきでしょうか?これらの標準ライブラリ、フレームワーク、APIを比較的簡単に学習するにはどうすればよいですか?私は定期的にコーディングし、本を読んでいますが、私の知識はまだとても浅いものです。 助けて!

3
C ++またはMATLABでのテクニカルペーパーアルゴリズムの実装
私は電気工学の学部生です。信号および画像処理アルゴリズム(再構成、セグメンテーション、フィルタリングなど)に関する多くの技術論文を読んでいます。これらの論文に示されているアルゴリズムのほとんどは、連続時間と連続周波数にわたって定義されており、多くの場合、複雑な方程式の観点から解を提供します。上記の論文で得られた結果を複製するために、C ++またはMATLABでゼロから技術論文をどのように実装しますか? より具体的には、Wang et al(IEEE Trans Med Imaging。1993; 12(3):486-96)の論文「A general cone-beam rebuild algorithm」を見て、どうすれば始めることができるのか疑問に思っていました。アルゴリズムを実装していますか?式10は、再構築された画像の式を示します。どのようにコーディングしますか?各ボクセルを通過し、対応する式を計算するforループがありますか?その式で関数の関数をどのようにコーディングしますか?任意のポイントで関数をどのように評価しますか? ゴンザレスとウッズの本「デジタル画像処理」を読みましたが、まだ迷っています。また、数値レシピの本シリーズについても読んでいます。それは正しい方法でしょうか? 研究論文からアルゴリズムをプログラミングした経験は何ですか?ヒントや提案はありますか?
14 c  algorithms  matlab 

5
ストーリーのスクラム再評価
毎日、スタンドアップの後、チームと私は各ストーリーの見積もりを更新します。私たちのやり方に何か問題があると感じているので、あなたの助けが必要です。 これが俺たちのやり方です: ストーリーAの見積もり:24時間(1日8時間-基準として「理想的な日」を使用) N日:開発者は午前中にストーリーAの作業を開始します(1日の終わりまでに8時間の作業が完了します) N + 1日目:ストーリーAの再推定= 16時間(N日からストーリーAから1営業日を取り除いた) N + 2日目:ストーリーAの再推定= 8時間(N + 1日目からストーリーAから1営業日を取り出した) N + 3日目:ストーリーAはこれまでに完了する必要があります。しかし、そうではありません。開発者は、完了するまでにさらに3時間かかると考えています。ホワイトボードのストーリーを更新し、それに応じてバーンダウンします。 N + 4日目:ストーリーAは、わずか3時間ではなく終日かかりました!これで完了です。5時間という違いは、計画ではまったく考慮されていません。 ストーリーを毎日再評価する方法を教えてください。
14 scrum  estimation 

6
なぜこれほど多くのライブラリにドキュメントがない/不十分なのですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 同様に、オープンソースプロジェクトの設計やアーキテクチャに関するドキュメントがなくても成功する方法はありますか?質問、私は好奇心が強いです:なぜこれほど多くのライブラリがエンドユーザーのドキュメントにそれほど欠けているのですか? 私の見解はこれです: ほとんどの人は、ソースコードを書くよりもソースコードを読むのが難しいことに同意します。 ドキュメントがなければ、ライブラリを使用するにはライブラリのソースコードを読む必要があります。 したがって、文書化されていないライブラリを使用することは、ライブラリをゼロから再作成するだけではありません。 その結果、人々にライブラリを使用してもらいたい場合は、文書化されていることを確認してください。 多くの開発者がドキュメントを書くことを好まないことは知っていますし、退屈な作業になる可能性があることに同意します。しかし、それは不可欠な仕事です。世界で最高のプログラマーインターフェースを持つよりも、ライブラリに優れたドキュメントがあることが重要です。(人々は常にくだらないライブラリを使用します;文書化されていないライブラリを使用する人はほとんどいません) ああ、ドキュメントを言うとき、私は本当のドキュメントを意味することに注意してください。Sandcastle / Javadoc / Doxygenボイラープレートではありません。

5
アルゴリズムの複雑さをテストする必要がありますか?もしそうなら、どのように?
ソートされたリスト/配列の検索のような単純なものを実装しているとしましょう。関数(c#内)は次のようになります。 static int FindIndex(int[] sortedList, int i); 機能の面でこれを実装してテストすることもできますが、明らかな理由から、通常は線形検索や意図的に愚かなものよりもバイナリ検索を好むでしょう。 だから私の質問は次のとおりです。アルゴリズムの複雑さの観点からパフォーマンスを保証するテストを作成する必要がありますか? 私はこの質問の「あなたがすべき」部分の両側で議論を始めましたが、私はそれらを促すために私の議論なしで人々が言うことを見てみたいです。 「方法」に関しては、非常に興味深いものになります:)比較演算子をパラメーター化して、比較演算子が比較などをカウントするテストを持つことがわかります。しかし、あなたができるからといって... 他の誰かが(おそらく)これを考えましたか?ありがとう。

3
「継続的な」配信を実現するためのヒント
チームが頻繁にソフトウェアをリリースするのが困難になっています(毎週1回)。以下は、典型的なリリースのタイムラインです。 反復中: 開発者は、マスターブランチに基づいて、短期間(これは熱狂的に実施されます)機能ブランチのバックログのストーリーに取り組みます。 開発者は、頻繁に機能ブランチを統合ブランチにプルします。統合ブランチは、自動的に継続的に構築およびテストされます(テストカバレッジの範囲内)。 テスターは、統合をステージング環境に自動展開する機能を備えており、これは週に複数回行われ、テストスイートの継続的な実行が可能になります。 毎週月曜日: (テスターの作業に基づいて)どのストーリーが「既知の善」であり、したがってリリースに含まれるかを決定するリリース計画ミーティングがあります。ストーリーに既知の問題がある場合、ソースブランチは統合から除外されます。 テスターがリリースをカットするための安定したコードベースを確保するために、今週の月曜日に新しいコード(テスターに​​よって要求されたバグ修正のみ)を統合に取り込むことはできません。 毎週火曜日: テスターは、可能な限り時間をかけて可能な限り統合ブランチをテストし、既知のバグがないため、リリースがカットされ、運用ノードにゆっくりとプッシュされました。 これは実際には問題ないように思えますが、達成するのは非常に難しいことがわかりました。チームには次の症状が見られます 本番環境では、ステージング環境で特定されなかった「微妙な」バグが見つかります。 土壇場でのホットフィックスは火曜日まで続きます。 実稼働環境の問題にはロールバックが必要であり、ライブデプロイメントが成功し、マスターブランチが更新される(したがって分岐する)まで、継続的な開発をブロックします。 ここでは、テストの範囲、コードの品質、回帰テストの迅速な機能、土壇場での変更、環境の違いが関係していると思います。誰もが「継続的な」配信を達成するための最善の方法に関するアドバイスを提供できますか?

9
一人のプログラマー、多くの言語—名前のジレンマ
複数のプログラミング言語にまたがって作業すると、問題が発生します... ある言語の有効な名前(識別子)は、別の言語では無効です。例えば... var new function thisJavaScriptのキーワードですが、Pythonで自由に使用できます。同様にlist dict def、JavaScriptで問題なく使用できます。 これは非常に一般的であり、プログラマーが複数の言語でプログラムを作成するときに一般的にすぐになじむものです。 ただし、コラボレーションで作業しているときは、コードの一貫性と均一性を確保するために、チームメンバーのいくつかのルール/ガイドラインをレイアウトする必要があります。チームでは、この問題は、プログラム中に有効なものとそうでないものを単に覚えるよりも重要になります。 だから、私の質問は、あなたが採用する戦略です... 使用するすべての言語に存在するすべての予約語の和集合を取り、すべての人にリストを配ってその使用を控えますか? 「コンテキストスイッチング」の際に多様性を受け入れ、さらに苦労する ある言語が他の言語を使用できるが、その逆は使用できない中間基盤を採用する (注:この質問ではPythonとJavaScriptについてのみ話しますが、より広く質問に答えてください) -更新- すべての答えをありがとう。だから、私が浮上していると思う一般的なコンセンサスは、プログラマーが他の言語をどうするかに関係なく、どのような名前でも使用できるようにすることです。
14 polyglot 

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