ソフトウェア工学

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


4
抽象クラスの一般的な名前を避ける方法は?
一般に、ファイルハンドルやUNIXプロセスなどを扱っていない限り、ルーチン名やクラス名の一部として「ハンドル」や「プロセス」などの単語を使用しないことをお勧めします。しかし、抽象クラスは、処理などの他に何かをどうしようとしているのか、実際には分からないことがよくあります。私の現在の状況では、ユーザーの受信ボックスにログインして、そこからのメッセージを処理する「EmailProcessor」があります。次のスタイルの問題が発生することに気づきましたが、これをより正確な名前にする方法は本当にわかりません。 派生クラスをクライアントとして扱い、実装する機能の一部によって基本クラスに名前を付けた方が良いですか?より意味を与えますが、is-aに違反します。たとえば、EmailAcquirerは、派生クラスのために取得しているため、適切な名前になりますが、派生クラスは誰のためにも取得しません。 あるいは、派生クラスが何をするのか誰が知っているので、本当にあいまいな名前です。ただし、「Processor」は、ログインやIMAPの使用など、関連する多くの操作を実行しているため、まだ一般的すぎます。 このジレンマから抜け出す方法はありますか? 問題は、「これは何をするのか」という質問に実際に答えることができない抽象メソッドの場合により明白になります。答えは単に「クライアントが望むものは何でも」だからです。

4
C ++とMySQLでWebアプリを構築することには、概念的な欠点がありますか?
私は、非常に興味深いプロジェクトを継承しました。このプロジェクトでは、既存のソフトウェアを取得してSaaS Webアプリに変換する良い機会があります。プロジェクトが継承されるため、コードベース/フレームワークはすでにC ++およびMySQLとして定義されています。アプリ自体がコンパイルされ、Windows Server上でEXEとして実行されます。UIはWebベースであり、アプリは一種のサーバーとして機能します。私が最近のWebアプリについて知っていることから、これはおそらく珍しい選択です。最近では、ほとんどの人がPHPフレームワークまたはRuby on Railsを選択しているようです。確かにそれは私がこの主題についてブログを読んで得た印象です。それで、MySQLに裏打ちされたC ++ EXEがWebアプリの強固な基盤であるかどうか、または別の方法でビルドする必要があるかどうかを知りたいと思います。

4
フレッド・ブルックスの「外科チーム」はバス要因を効果的に処理しますか?
私の4人の経験豊富な開発者のチームは、大規模なモジュール式のWindowsアプリケーション(約200 KLoC)に取り組んでいます。私はプロジェクトの開始時(3年前)からコアコードベースに焦点を当てており、チームマネージャーではありませんが、徐々にセミリードの開発者ポジションに移行しています。 私たちの現在のイテレーションは、コアコードベースへの約15の変更を含む、上級管理職から要求された優先度の高いUI更新です。マネージャーから尋ねられたとき、15の変更のそれぞれが完了するまでに 4時間未満、合計で7営業日未満であると推定しました。それから私はボランティアでその仕事をしました。代わりに、マネージャーは15のタスクすべてを4人の開発者全員に均等に分配することを決定しました。 仕事を始めてから3日間で、次の2つのことがわかりました。 他の経験の浅いチームメンバーは、それぞれ約1つ以下のタスクを完了しました。 実行中のブルックの法則:半分の時間を費やして支援を提供しました(コンポーネントを使用するよう指導することを試みました)。その結果、私は自分で2つだけタスクを完了しましたが、予想された5または6ではありませんでした。 私は遅刻しているのではないかと心配して上司に連絡し、残りのタスクを完了するよう再度提案しました。私の要求は親切に拒否されました。負荷を均等に分割する理由は2つあります。 トラック/バスの要素を制限-これらのスキルで他の開発者を強化し、将来、私だけでなく誰にでもどんな仕事でも与えることができるようにします。 「ボトルネック」(私)を解消し、作業を迅速に行うため。 明確にするために、私は問題はありません:a)時間を教えることに投資する、b)私のコードに触れる人々、またはc)仕事の安全。実際、私は定期的にチームリーダーに、コアコードベースの特定の側面について他の開発者をトレーニングしてリスクを減らすように提案しています。 このイテレーションでは、優先度の高いバグ修正の大規模なコレクションも対象としているため、ワークロードが再分散されれば、より多くの進歩が見込めるようになります。 Mythical-Man-Monthでは、Brooksが提案する「外科チーム」では、すべてのチームがリード+サブリード(マネージャーと私)といくつかのマイナーな役割で構成されています。私たちは自然にこの組織に陥っているように感じますが、私のマネージャーはそれに反対しています。バスファクターはすでに処理されており(マネージャーはコアコードに精通している)、ボトルネックは実際には存在しない(開発者が増えると作業が速くならない)。この点で、外科チームは良いことだと思います。 これらは私の気持ちですが、私は経験豊富なマネージャーではありません。バス要因(木のノック)に対処する必要もありませんでした。ブルックスは正しかったですか?バス要因が関係する「外科チーム」で働いたことはありますか?専門知識の配布を管理するためのより良いテクニックはありますか? 同様の質問: バス係数を増やすと同時に専門化する方法は? /software/103718/always-keeping-2-people-expert-on-any-one-chunk-of-code

8
Web開発でクライアント側に急ぎます
過去数か月の間に、私はWeb開発におけるクライアントサイドスクリプトについて大きな興奮を感じました。しかし、サーバー側の技術は成熟しており、安定していて、バックエンド開発者に受け入れられていますが、クライアント側の技術は未成熟であり(つまり、大きなサーバー側のフレームワークに比べて)、多くの老舗の開発者には嫌われています。それにもかかわらず、最近では誰もがクライアント側の開発を行っています。個人的には、これらの大きなサーバー側フレームワークが2〜5年で消滅し、現在の傾向を見ると期待しています。 どうしてこんなことに?HTML5 / JSで開発された新しい「びまん性」のクライアント側の開発は、大きくてよく考えられたサーバー側のソリューションよりも優れているのでしょうか。

2
開発者としてユーザーストーリーを下書きするにはどうすればよいですか?
私はシステムの所有者と私自身の両方が開発者であるシステムを書いています。現在、システムへの「要求」またはシステムの要件の唯一の情報源であり、機能に関連付けられたユーザーストーリーにそれを記録したいと考えています{1}。私の緊急の優先事項は、現在、管理可能なバックログを取得することです。ユーザーストーリーでの作業に慣れている技術仕様のレベルをキャプチャするにはどうすればよいですか。 {1}アジャイルプロジェクト管理サービスTargetProcessを評価しています。各ユーザーストーリーは親機能に関連付ける必要があります。システムは適切だと思われるので、この小さな制約は、回避するよりも私が作業したいものです。

7
プログラミング知識とプログラミングロジック
2つのトピックに違いはありますか?私は、企業がグッドプログラミングの知識を求めているグッドプログラミングロジックを見てきました。 開発者のジョブプロファイルでこれを確認しました。たとえば、「優れたプログラミングロジック」、「強力なプログラミング知識」などです。 プログラミングの知識は、考慮中の言語に関する知識に関連していると思います。プログラミングロジックは、プログラミングを使用した問題解決ロジックです(一般的に)。 私が間違っていたら訂正してください。また、何がより重要ですか? 編集:アプリケーションのコンポーネントの選択、ユーザー入力を検証するインターフェイスの設計は、プログラミング知識またはプログラミングロジックに該当しますか? プログラミングロジックは単に問題解決を意味するのでしょうか、それともそれを構成する他の何かがありますか?

8
微積分と線形代数は、システムプログラマにとってどのように役立つのでしょうか。[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 システムプログラミングには微積分と線形代数が必要であるというウェブサイトを見つけました。 システムプログラミングは、私の知る限り、osdev、ドライバー、ユーティリティなどに関するものです。微積分と線形代数がその上でどのように役立つかを理解できません。微積分学は科学においていくつかの応用があることを知っていますが、この特定のプログラミング分野では、微積分学がどれほど重要であるかを想像することはできません。 情報はこのサイトにありました:http : //www.wikihow.com/Become-a-Programmer 編集:ここでのいくつかの回答は、アルゴリズムの複雑さと最適化について説明しています。私がこの質問をしたとき、私はシステムのプログラミングの領域についてより具体的にしようとしていました。アルゴリズムの複雑さと最適化は、システムのプログラミングだけでなく、プログラミングのあらゆる領域に適用できます。それが質問の時に私がそのような考えを思いつくことができなかった理由かもしれません。

9
グローバルが理にかなっているとしたら?
多くのオブジェクトに必要な値を持っています。たとえば、オブジェクトとしてさまざまな投資を行う金融アプリケーションで、それらのほとんどは現在の金利を必要とします。 金利をプロパティとして、「金融環境」をオブジェクトとしてカプセル化したいと思っていました。しかし、その値を必要とする兄弟オブジェクトはそれに到達できません。 では、デザインを過度に結合せずに、多くのオブジェクト間で値を共有するにはどうすればよいですか?明らかに、これは間違っていると考えています。

8
コードを記憶する必要はありますか?
私は新しい開発者で、大企業で雇われたばかりです。どうすればいいのかわかりませんが、必死だと思います。しかし、私はHTML5 / CSS3に精通していますが、物事は変化し、新しいものがリリースされて、私は可能な限り追いついています。しかし、この仕事では、JavaScriptを手動でコーディングし、JqueryとAjaxを知っている必要がありました。私はこれに少し触れたことがありますが、Javascriptを手動でコーディングできるかどうかはわかりません。 私の質問は、Javascriptに関するすべてを記憶する必要があるのか​​、それともJavaScriptコードを見るとたくさんの行コードがあるように見えるので、手動でコード化する方法を知っておくべきいくつかの重要な点があるのか​​、です。 正しい方向に向けてください。
10 javascript  html  jquery  ajax  css3 

4
「コンパイルして、CPUが間違った処理を実行しないようにしたかった」という文の意味は何ですか。
この記事を読んでいました。次の段落があります。 そして、Scalaは高速であることが判明しましたか?さて、あなたの高速の定義は何ですか?ほぼJavaと同じくらい高速です。CやAssemblyほど高速である必要はありません。PythonはRubyよりも大幅に高速ではありません。同時実行性を活用して、より少ないマシンでより多くのことを実行したいと考えました。それをコンパイルして、間違った処理を行っているCPUを焼き付けないようにしたかったのです。 最後の文の意味を探しています。インタプリタ言語はCPUにどのようにして「間違った」処理をさせるのでしょうか?

1
PHPとJavascriptを使用して広告システムのクリック詐欺を防止
PHP、MySQL、Javascriptを使用して広告プロジェクトを構築したいと思います。私のようなものについて話している... グーグルアドセンス BuySellAds.com その他の広告プラットフォーム 私の質問は、主に、システムをだます人や私が遭遇する可能性のあるその他の問題を防止するために何に注意する必要があるのですか? 私のデザインコンセプト。広告はデータベース内のレコードであり、ページが読み込まれると、JavaScriptを使用してサーバーを呼び出し、サーバーはPHPスクリプトを使用してデータベースにクエリを実行し、ランダムな広告を取得します。(人口統計やその他の基準に基づいて広告を取得するようなコレを行う場合もあります)PHPスクリプトは、それを呼び出しているサーバー/ウェブサイトに広告を返し、特別なトラッキングを行う画像としてページに表示します。リンク。 私はする必要があります... すべてのインプレッションをカウントする(広告がページに表示されている場合) 広告リンクのすべてのクリックをカウントする 広告リンクのすべてのユニーククリックをカウントする 私の質問は、純粋に広告のクエリと表示にあり、管理側とは何の関係もありません。Adspaceの広告スペースの購入/販売にかかわるお金がある場合、統計は正確であり、人々がシステムを簡単にだまさないようにする必要があります。クリック詐欺を防止する唯一の方法は、IPアドレスの追跡だけですか? 経験のある誰かが私が正しい軌道に乗っていることを明確にしてくれることを望んでいますか?同様に、このようなことをすることについて知っておくべきアドバイス、ヒント、または何か他のものを私に与えますか?
10 php  javascript 

3
効率的なバスローディング
これはずっと前にバス旅行会社でやったことで、結果に満足することはできませんでした。私は最近、その古いプロジェクトについて考えていて、その問題をもう一度見たいと思いました。 問題: バス旅行会社には、乗客定員が異なる複数のバスがあります(50人の乗客のバス15台、30人の乗客のバス25台など)。彼らは非常に大きなグループ(グループあたり300人以上の乗客)への輸送を提供することに特化しました。各グループは一緒に旅行する必要があるため、無駄を減らすために艦隊を効率的に管理する必要がありました。 たとえば、88人の乗客は、2人の50人乗りのバス(12人の空席)よりも3人の30人乗りのバス(2人の空席)でよりよくサービスされます。別の例では、75人の乗客は、1つの50人の乗客バスと1つの30人の乗客バス(種類の混合)でよりよくサービスされます。 これを行うための良いアルゴリズムは何ですか?
10 algorithms 

5
音声認識ソフトウェアによるプログラミング[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 私は数年前に非常に簡潔にDragon Naturally Speakingを使用し、それがプログラミングの実行可能な解決策になるかどうか考えていましたか? あなたが腕を骨折したり、プログラミングの大きな障害となるものを壊したりした場合、私はもっと考えていました。 SO についても同じ質問ですが、答えはありませんでした。

6
DRY原理の解釈
現在、コーディングでこのDRY(Do n't Repeat Yourself)の概念に取り組んでいます。この関数を作成していますが、複雑になりすぎるのではないかと心配していますが、DRYの原則に従っています。 createTrajectoryFromPoint(A a,B b,C c,boolean doesSomething,boolean doesSomething2) 私が言ったこの関数は3つの入力パラメーターを取り、ブール関数の組み合わせdoesSomethingとを指定すると、関数は少し異なる動作をしdoesSomething2ます。しかし、私が抱えている問題は、このブール関数が追加されるたびに、この関数が非常に複雑になることです。 だから私の質問は、多くの同じロジックを共有するさまざまな関数(したがってDRYの原則に違反している)や、いくつかのパラメーターを指定した場合にわずかに異なる動作をするが、はるかに複雑にする1つの関数(しかし、 DRYを保存する)?
10 java  design  dry 

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