ソフトウェア工学

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

9
命名規則が言語と競合する場合はどうしますか?
さて、これはいつも私を悩ませた小さなものの一つです。通常、識別子は省略しません。短い識別子(例:)を使用するのiは、タイトなループのためだけです。したがって、C ++で作業しているときに、名前を付ける必要のある変数がある場合、operatorまたはclass回避するか、略語を使用する必要があるため、それが突き出てしまうため、イライラします。警告:これは、ドメインオブジェクトがホスト言語の概念を反映し、不注意に衝突を引き起こす可能性があるプログラミング言語の設計に多く携わっているため、不均衡に頻繁に発生する可能性があります。 これにどう対処しますか?短縮しますか?(op)スペルミス?(klass)他に何か?(operator_)
14 naming 

12
バグ/問題を追跡するために共有スプレッドシートを使用しないことをどのように支持しますか?
当社では、開発者は適切なバグ追跡ツールを使用して、アプリケーションの問題を管理したいと考えています。ただし、管理者は共有スプレッドシート(​​以前は共有Excelファイルでしたが、現在は同時アクセスを可能にするWebベースソリューションのスプレッドシート)の使用を主張しています。 彼らの主張は、スプレッドシートを使用すると、プロジェクトの状態をより高レベルで把握できるため、開いているバグの数を一目で確認できるためです。また、これにより、各バグに取り組んでいる人を確認し、それらをすべて閉じるのに必要な時間の見積もりを取得できます(開発者は、作業中のバグの時間見積もりを記入する必要があるため)。 理解できるように、これは開発者にとって実際に使用するのは実際的ではありません(バグ追跡ソフトウェアは、ある理由で発明されました)。では、開発者の作業を容易にするためにバグ追跡ソフトウェアをどのように提唱できますか? ボーナスとして、管理者が高レベルのビューでフィードバック(バグのオープン数、それらに取り組んでいる人、時間の見積もり)を取得できるようにするソフトウェアをお勧めしますか?

5
ソフトウェアの設計をより効果的にキャプチャできないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 エンジニアとして、私たちは皆、アーティファクト(建物、プログラム、回路、分子など)を「設計」します。それは、何らかの結果(design-the-noun)を生成するアクティビティ(design-the-verb)です。 私たちは皆、design-the-nounがアーティファクト自体とは異なるエンティティであることに同意すると思います。 ソフトウェアビジネス(実際、製品成果物の強化が必要なビジネス)の主要な活動は、「デザイン(名詞)」を理解することです。しかし、私たちは、コミュニティとして、コードベースに関する事実を再発見するために人々が注いだ努力の量によって証明されるように、それを記録するのにほとんど完全に失敗しているように見えます。誰かにコードの設計を見せて、何が得られるかを見てもらいます。 ソフトウェアの設計には次のようなものがあると思います。 ソフトウェアが何をすべきか、およびそれがどれだけうまく機能するかについての明示的な仕様 コードの明示的なバージョン(この部分は簡単で、誰もが持っています) コードの各部分が仕様を達成するためにどのように機能するかについての説明(例えば、仕様フラグメントとコードフラグメント間の関係) 根拠のコードは、それがある方法です理由として(例えば、なぜ特定の選択ではなく別のものより) デザインではないものは、コードに関する特定の観点です。たとえば、[特に選択しない] UMLダイアグラムは設計ではありません。むしろ、これらはコードから派生できるプロパティ、または間違いなくコードから派生したいプロパティです。ただし、一般的なルールとして、UMLからコードを派生させることはできません。 なぜ50年以上ソフトウェアを構築してきたのに、これを定期的に表現する方法がないのでしょうか?(明示的な例で私と矛盾することをお気軽に!) たとえそうだとしても、コミュニティのほとんどは「コード」を取得することに集中しているようで、とにかくdesign-the-nounは失われます。(私見、デザインがエンジニアリングの目的になり、デザインからアーティファクトが抽出されるまで、これを回避するつもりはありません)。 デザインを記録するための手段としてあなたは何を見ましたか(私がそれを説明した意味で)?論文への明示的な言及は良いでしょう。特定の一般的な手段が成功しなかったのはなぜだと思いますか?これをどのように変更できますか? [ 上記の箇条書きの視点を具体化する独自のアイデアを持っていますが、他の人の答えに興味があります...そして私のスキームを実装するのは難しいです[そしておそらくそれが本当の問題です:-]] EDIT 2011/1/3:answer-threadsは、「文書化」(おそらくテキスト形式、特に非形式的)が適切である可能性があることを示唆しています。私はこれを信じていないことを明確にする必要があると思います。CASEツールは80年代からシーンに登場しましたが、初期のツールはほとんど、あなたが描いたものの図のピクセルをキャプチャしただけでした。ツールはほぼ間違いなく商業的に成功しましたが、実際にはあまり役に立ちませんでした。重要な洞察は、追加の「設計」アーティファクトが正式に解釈可能でない場合、深刻なツールヘルプを取得できないことでした。同じ洞察は、デザインキャプチャの長期的に有用な形式にも当てはまると思います。形式的な構造がなければ、実際に使用することはできません。テキスト文書はこのテストにほとんど失敗します。

10
プログラマー適性検査[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 9年前に閉鎖されました。 私は自分のやっていることを見て、興味を持ち、質問をする友人がたくさんいます Do you think I could be a programmer? 私の応答は ... ummm ... do you like math? 有益な回答が欲しいので、スクエア1から開始するが、批判的思考と問題解決スキルを持っている人のためのかなり適切な適性テストを知っている人がいるかどうか知りませんでしたか?
14 learning  skills 

4
XMLをブラウザに送信し、XSLTを適用できるようにすることの欠点は何ですか?
環境 フリーランスの開発者として働いていた私は、多くの場合、完全にXSLTに基づいたWebサイトを作成しました。つまり、リクエストごとに、ページコンテンツについて知る必要があるすべてのものを含むXMLファイルが生成されます。現在ログインしているユーザーの名前、トップメニューエントリ、このメニューが動的/設定可能な場合、ページの特定の領域などに表示します。次に、XSLプロセス(キャッシュなど)をHTML / XHTMLページに送信して、ブラウザに送信します。 特にPHPを使用して小規模なWebサイトを簡単に作成できるようにすることには良い点があります。これは一種のテンプレートエンジンですが、他のテンプレートエンジンよりも、ほとんどのテンプレートエンジンよりもはるかに強力であり、私はそれをより良く知っており、気に入っているため、他のテンプレートエンジンよりも好みます。また、必要に応じて、個別のAPIを作成することなく、自動アクセスの要求に応じて生のXMLデータにアクセスできるようにすることもできます。 もちろん、中規模または大規模のWebサイトでは完全に失敗します。これは、優れたキャッシュ手法を使用しても、XSLがWebサイト全体のパフォーマンスを低下させ、サーバー側により多くのCPUを必要とするためです。 質問 最近のブラウザには、XMLファイルを取得し、XMLで宣言された関連するXSLファイルで変換する機能があります<?xml-stylesheet href="demo.xslt" type="text/xsl"?>。Firefox 3でできます。Internet Explorer 8でも可能です。 これは、50%のユーザーのXSL処理をサーバーからクライアント側に移行できることを意味します(これを実装する可能性のあるいくつかのWebサイトのブラウザー統計による)。つまり、これらの50%のユーザーは各リクエストでXMLファイルのみを受信するため、ユーザーとサーバーの帯域幅が削減され(XMLファイルは処理されたHTMLアナログよりもはるかに短い)、サーバーのCPU使用率が削減されます。 この手法の欠点は何ですか? いくつか考えましたが、この状況には当てはまりません。 困難な実装と、ブラウザのリクエストに基づいて、いつ生XMLを送信し、代わりにHTMLに変換するかを選択する必要性。明らかに、システムは実際のシステムよりもそれほど難しくありません。行う唯一の変更は、すべてのXMLにXSLファイルリンクを追加し、ブラウザーチェックを追加することです。 XSLTファイルはサーバーによってキャッシュされるのではなく、ブラウザーによってダウンロードされるため、IOおよび帯域幅の使用量が増えます。XSLTファイルはブラウザによってキャッシュされるため(画像、CSS、またはJavaScriptファイルが実際にキャッシュされるため)、これが問題になるとは思いません。 一部のブラウザでページを保存するときの問題など、クライアント側の問題の可能性があります。 コードのデバッグの難しさ:表示されるソースはダウンロードされたXMLのみであるため、ブラウザーが実際に使用しているHTMLソースを取得することはできません。一方、クライアント側でHTMLコードを見ることはほとんどなく、ほとんどの場合、直接使用できません(空白が削除されます)。

9
請負業者に固定価格での作業を再考させることができる議論はありますか?
私はいくつかの良いプロジェクトを導入する請負業者のために働いてきましたが、それらはすべて固定価格であり、しばしば固定時間です。 その結果、彼は常に緩い要件を引用してくれますが、機能のクリープにより大きな緊張をもたらすことはありません。 彼は最初にクライアントと価格について合意できなかった場合、彼は契約を決して得ないと主張しますが、私が懸念している限り、私はこれらの条件の下で別のプロジェクトをやりたくありません。 彼に時間単位で支払いをしてもらうために私が作ることができる議論はありますか、または私は推定であまり吸うべきではありませんか?

4
Namepsaces / Packagesのメリット
一部のプログラミング言語(JavaやC ++など)には、「パッケージ」または「名前空間」と呼ばれる言語機能があります。名前空間を持つことは本当に便利ですか?SDLのように(たとえばSDL_BlitSurface())、そのような言語機能を使用せずに、関数とクラスを特定のライブラリに属する​​ものとしてマークすることができます。名前空間は持つ価値があるほど有用ではありませんか?ライブラリでは便利ですが、アプリケーションでは役に立ちませんか?小さなプロジェクトを除いてどこでも便利ですか?考え?

10
C ++:バイナリレベルでの標準化の欠如
ISO / ANSIがC ++をバイナリレベルで標準化していないのはなぜですか?C ++には多くの移植性の問題がありますが、これはバイナリレベルでの標準化の欠如によるものです。 Don Boxが書いています(彼の本Essential COMの章COM As A Better C ++から引用) C ++と移植性 C ++クラスをDLLとして配布することを決定すると、C ++ の基本的な弱点の 1つ、つまりバイナリレベルでの標準化の欠如に直面します。ISO / ANSI C ++ドラフトワーキングペーパーは、どのプログラムをコンパイルし、それらを実行することのセマンティック効果をコード化しようとしますが、C ++のバイナリランタイムモデルの標準化は試みません。この問題が初めて明らかになるのは、クライアントがFastString DLLのビルドに使用した環境以外の C ++開発環境からFastString DLLのインポートライブラリにリンクしようとしたときです。 このようなバイナリ標準化の欠如により多くの利点または損失がありますか?
14 c++  dll  ansi  iso 

9
嫌いな言語を使用してプロジェクトに取り組む必要がある場合はどうしますか?
私は最近、PHPで書かれたプロジェクトの作業に割り当てられました。私はそれを変えることはできず、実際に試みるつもりもありません。 ただし、これは珍しいシナリオではありません。見ているコードや制作しているコードが泣きたいときに、プロジェクトに取り組む意欲をどのように高めますか? 編集: これは、現時点で利用可能なソフトウェア関連の処理を行うキャンパスでの唯一の仕事であるため、「ジョブを変更するだけ」は実際にはオプションではありません。

2
オープンソースソフトウェアを適切にライセンスする方法
私は、オープンソースとして新しい公開Githubリポジトリにプッシュしたいプロジェクトを進めています。StackExchangeで使用する適切なライセンスを検索した後、BSDライセンスに同意しました。 私の質問は:今何?リポジトリのルートにあるLICENSEというファイルにBSDライセンスのテキストをコピーして、それを適切に呼び出す必要がありますか?それはすべてのオープンソースライセンスがどのように機能するかの一般的なルールですか?または、必要に応じて「強制」できるように、このライセンスを使用していることを他の組織に通知する必要がありますか?

3
ORMはデータベースの非正規化を促進しますか?
DoctrineとPropelは両方とも単一および具体的なテーブル継承を利用してオブジェクトの関係をマップします。前者は単一のテーブルにマッピングされたクラスツリー内のすべての可能なフィールドを参照しますが、後者は各クラスを特定のテーブルにマッピングし、継承階層の共通フィールドを複製します。 これによりORM装置が容易になりますが、データベース設計が悪いことを示唆しています。これらの悪い設計パターンは、データベースに適用されますか?


6
中間で単体テストを書く
単体テストは100%ですか、それともまったく関係ありませんか? 私は古いプロジェクトを閲覧し、機能の追加を開始しました。今回は単体テストです。ただし、単体テストのない過去のコンポーネントを再利用する場合、これは最終的には価値がありませんか? 以前のすべてのクラスの単体テストを作成する必要があり、気にする必要はありませんか、または追加する新しいものの単体テストのみを作成しても大丈夫ですか?

8
開発のために新人/新人を雇うとき、あなたが求めるスキルは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は会社の新入社員を雇っているので、この質問をProgrammers.SEの仲間の開発者に本当に質問したいと思います。 開発のために新人/新人を雇うとき、あなたが求めるスキルは何ですか?


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