ソフトウェア工学

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

5
すでに開発されているプロジェクトを文書化する方法は?
すでに開発されたプロジェクトを文書化するためにどのオプションが利用できるか知りたいのですが、開発者は1ページも文書を作成しませんでした。 このプロジェクトには、過去2年間にこのプロジェクトに携わった開発者によって作成および変更された機能を備えた多くのスクリプトページ以外の詳細はありません。私が持っているのは、データベーススキーマとプロジェクトファイルだけです。このプロジェクトを組織し、文書化する方法があるかどうかを知りたいので、将来このプロジェクトに取り組む開発者に役立つようにします。 このプロジェクトはPHPとMySQLで開発されました。関数のコメントが不十分であるため、doxygenで実行すると良い結果が得られません。

2
JavaScriptのアクティベーションオブジェクトとは何ですか?
特定の実行コンテキストでは、変数オブジェクトはその実行コンテキストのアクティベーションオブジェクトです。 オンラインでの調査から、以前の文をさまざまな方法で言い換えることができますが、誰もそれが何であるかを知ることができません。 Activationオブジェクトとは何ですか?

4
手作業による依存性注入は、合成および多型のより良い代替手段ですか?
まず、私は初心者レベルのプログラマーです。実際、私は夏の最後の絶頂プロジェクトでASの学位を取得しています。私の新しい仕事では、私がやるべきプロジェクトがないとき(彼らはチームにさらに新しい採用をするのを待っています)、私は待っている間に読んで学ぶための本を与えられました-いくつかの教科書、他のそれほど多くはありません(コード完了など)。これらの本を読んだ後、できる限り多くのことを学ぶためにインターネットに目を向け、SOLIDとDIについて学び始めました(Liskovの代替原理についてはいくらか話しましたが、SOLIDのアイデアについてはあまり話しませんでした)。それで、私が学んだように、私はよりよく学ぶために座って、DIを手動で利用するためのコードを書き始めました(開発コンピューターにはDIフレームワークはありません)。 私がやっているように、それは馴染みのあることに気づきます...そして、ポリモーフィズムを使った抽象クラスの構成を使って過去にやった仕事に非常に似ているようです。ここに大きな画像がありませんか?DIについて(少なくとも手で)それを超える何かがありますか?再コンパイルすることなく物事を変更する限り、いくつかの大きな利点を持つDIフレームワークのコードに設定がない可能性を理解していますが、手動で行う場合、上記と異なるかどうかはわかりません...これに関するいくつかの洞察は非常に役立つでしょう!

4
文字列を短くするためにどのタイプのエンコードを使用できますか?
私が持っている文字列のエンコードに興味があり、使用できるエンコードの種類があり、英数字のみを含み、文字列を表すために必要な文字数を短くすることが望ましいかどうかに興味があります。 これまで、Base64エンコーディングを使用してこれを行うことを検討しましたが、文字列が長く==なるようで、回避したい場合もあります。例: テスト名| 120101 になる dGVzdCBuYW1lfDEyMDEwMQ == 16文字から24文字になり、英数字以外が含まれます。 私の要件を達成するために使用できる別の種類のエンコーディングを知っていますか?ボーナスは、.NETフレームワークに組み込まれている場合、またはエンコードを実行するサードパーティライブラリが存在する場合にポイントします。

4
すべてのCプログラマーが認識しなければならないセキュリティリスク/脆弱性は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 高度なプログラミング言語の十分にテストされ、実証されたAPIを使用するのではなく、ハードウェアに密接に接触することから生じる多くのセキュリティリスクがあります。Javaなどの言語よりもCでバッファオーバーフローを引き起こす方がはるかに簡単です。 すべてのCプログラマが知っておくべきリスクまたは脆弱性(バッファオーバーフローなど)とは何ですか(Cプログラマに関連するIEの脆弱性)。これらはどのような問題につながる可能性がありますか?それらを回避する方法、およびプログラムでこれらを発生させる一般的な間違いは何ですか?

2
データベース変更の展開をどのように処理しますか?
今日、データベースデプロイメントテクニックについて議論しており、現在のプロセスでいくつかの最近の失敗があり、デプロイメントをロールバックしたいが、アプリケーションの古いバージョンが新しいバージョンに対してテストされたことがない状況を見てきましたデータベース。 一方では、バージョンアップ命令とバージョンダウン命令(SQLまたはアプリケーション言語で書かれているかどうか)があり、アプリは到達する必要のあるバージョンを知っている移行スタイルのデプロイメントがあります。 これらは単純であり、あまりロールバックしないため、開発者は単純に熱心です。ただし、フィールド/テーブルを追加していて、ロールバックする前にそのフィールドにデータが入力されると、リスクがあります。さらに悪いことに、以前のバージョンに関連するデータをドロップした場合。 一方、アップグレード、ロールバック、ロールフォワードのアプローチを検討することもできます。このアプローチでは、ロールバックが移行ほど劇的ではありません。たとえば、アップグレードにより、null不可フィールドが追加される場合があります。rollbackはnullを許可するので、古いアプリは気にしません。rollforwardは、nullフィールドにデータを入力し、再びnull不可にします。 これはデータを保持しますが、コーディングとテストの両方が複雑です(残念ながら、自動化された統合テストはほとんど存在せず、修正中に問題が発生します)。 これらの問題を軽減する安全な方法はありますか?他に検討すべきオプションはありますか?後で痛みを和らげることができる悪い経験を共有したいですか?
13 database 

2
どうすれば自分のコーディングスキルを長続きさせることができますか?
この秋までに、私の2つの小さなWebサイトは、快適で快適に生活するのに十分な最小限/ゼロの入力で、月に合計約1200ドルを生成するはずです。 別のビジネスベンチャーに着手するのではなく、今後数年間、本当に良いことや、それを必要とする他の人々に役立つことをしたいと思っています。私は4年か5年を費やして価値のある目的に専念し、すでに持っているWeb開発とプログラミングのスキルを最大限に活用したいと考えています。 問題は、どこから始めればよいかわからないことです。私は自分自身の素晴らしいアイデアを持っていませんし、多くの大きな慈善団体に非常に懐疑的です。理想的には、誰もが無償で支援に集中している小さなプロジェクトを見つけたいです。 そのような小さな組織はありますか? プロジェクト/ウェブサイト/アプリのアイデアを持っている人はいますか? これは典型的なStackOverflow 2 + 2 =ではないことを知っていますか?タイプの質問とそれを削除したい人もいますが、IT業界の慈善的性質(SO自体を見てください)を考慮すると、これは現在またはキャリアのある時点で多くの開発者に非常に関連する質問です。日本の最近の出来事を考えると、この質問は、他の人が利用できるスキル/時間で他の人を助ける方法を探している多くの人々に特に関連しています。 これに関するあなたの考え/答えを読むのを本当に楽しみにしています、ありがとう
13 c#  java  php  javascript  jquery 

3
アジャイル開発における顧客関係
私の経営陣は、私の組織の(確かに簡潔な)歴史の中で、前例のない質問をしました。 同時に、私たちはかなり新しいクライアントのためにいくつかの大きなプロジェクトに取り組んでいます。彼らはプロジェクトの途中で要件をプッシュする能力が伝説です。これらの人のために開発することは、流砂の上でタップダンスするようなものです。 より機敏なアプローチへのシフトを提案する絶好の機会のようです。私が尋ねられることを知っているのは、そのようなプロジェクトの見積もり/入札/請求方法です。1時間ごとに行きますか?さまざまな価格で入札しますか?スプリントで請求しますか? より一般的には、「契約交渉よりも顧客とのコラボレーションを大切にしている」というアジャイル宣言の側面は、私の経営を怖がらせようとしています。少しでも多くのことを望む顧客の現実の世界で、それをどのように評価しますか?

18
良い名前が思いつかないとき、functions / variables / etcに名前を付けますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 関数/変数/などを定義していて、それを何と命名するかわからない場合、何と命名しますか?どうやって名前を思いつきますか? 仮の名前を実際の名前になるまでプレースカードとして使用する場合、どの一時的な名前を使用しますか? 更新 私は次のようなものを使用しているWILL_NAME_LATER、NEEDS_NAMEまたはTO_BE_NAMED。私は、採択された規約があることを望んでいました。この採択された規約を使用した場合、変更するまでIDEが名前を強調表示することを望んでいました。

1
イベントドリブンとイベントソーシングの違いは何ですか?
私はドメイン駆動設計(DDD)を研究していて、用語ドリブンとイベントソーシングという用語に出会いました。私はそれがプロデューサーからコンシューマーへのイベントの発行に関するものであることを知っており、ログを保存するので、私の質問は次のとおりです。 イベントドリブンとイベントソーシングの違いは何ですか?

4
C / C ++では、可能であればパラメーターとローカル変数で 'const'を使用する必要がありますか?
この質問は、Java に関する質問にfinal触発されたものです。 C / C ++では、const可能な限り使用する必要がありますか? パラメータでの使用constに関して、関連する質問が既にあることは知っています。残念ながら、その質問とその回答は関数のパラメーターに関するものだけなので、私の質問には完全には答えませんが、他のケース(たとえば、ローカル変数)についても知りたいです。 また、その質問に対するほとんどすべての回答constは、変数のアクセス可能性に関する有用な情報が含まれているため、使用する必要があると述べています。しかし、これはJavaでfinalを使用することに関する回答と矛盾するようです。このfinal情報は、余分な情報が含まれていない場合は不必要であり、コードを短く簡潔にするために省略する必要があると述べています。 それで、const可能な限り使用すべきですか?もしそうなら、なぜconstC ++でのアドバイスfinalがJavaでのアドバイスと異なるのですか?

5
関数呼び出しはパフォーマンスにどの程度影響しますか?
メソッドや関数に機能を抽出することは、特にOOPにおいて、コードのモジュール性、可読性、相互運用性にとって不可欠です。 しかし、これはより多くの関数呼び出しが行われることを意味します。 コードをメソッドまたは関数に分割すると、現代の*言語のパフォーマンスに実際にどのような影響がありますか? *最も人気のあるもの:C、Java、C ++、C#、Python、JavaScript、Ruby ...

6
3値変数または3状態変数を格納するのに最適なデータ型
免責事項:私はデータ型が使用しているスクリプト/プログラミング言語に少し主観的であることを知っています。好みの問題としてPythonで記述したいのですが。私はどんな言語/実装についても聞いてうれしいです。 3状態変数を格納するのに最適なデータ型は何ですか?ポジティブ、ニュートラル、ネガティブを可能にする、または表す何か。 例:整数-1、0、1。 プロ:非常に簡潔です。 長所:潜在的に効率的、単一の2ビット符号付き整数として格納できます。 Pro:浮動小数点乗算器などのスケールとして使用できます。 実施例2: 、0、null(1または任意の順列) メリット:非中立的なユースケースは、バイナリの場合があります。 欠点:動的データ型が必要です 短所:簡潔ではない可能性があります。 例3:+、(空の文字列)、- プロ:非常に簡潔です。 欠点:文字列ロジックを利用して状態を判断する可能性があります。 プロ?:直感的なグラフィック表現。 おそらく、私が想像もできないような巧妙なことを実行できる巧妙なバイナリロジックがいくつかあるでしょう。 また、3値状態をデータベースエンジンに格納するように調整する場合の考慮事項はありますか?参考としてInnodbのように。

2
ランダムキャッシュの有効期限
私はランダムなキャッシュの有効期限を実験して、個々のリクエストが複数のものを一度に更新する状況を回避しています。たとえば、Webページには5つの異なるコンポーネントが含まれる場合があります。それぞれが30分でタイムアウトするように設定されている場合、ユーザーは30分ごとに長い待機時間を持ちます。そのため、代わりに、15〜45分のランダムな時間にすべてを設定して、特定のページのロードで最大1つのコンポーネントのみがリロードされるようにします。 このトピックに関する調査やガイドライン、たとえば最適分散パラメーターを見つけようとしています。Google(?)がこの手法をどのように使用しているかについての記事を1つ見たのを覚えていますが、それを見つけることができず、そのトピックについてあまり書かれていないようです。

2
マルチテナントアプリケーションとは正確には何ですか?
オンラインで利用可能な定義によると、「マルチテナンシーは、ソフトウェアアプリケーションの単一のインスタンスが複数の顧客にサービスを提供するアーキテクチャです」です。つまり、私はレストランまたは学校のWebサイトを所有しており、学校の管理製品を購入したときに提供する資格情報を使用して、自分のデータでアプリケーションを使用するために別のレストランまたは学校へのアクセスを提供します。私のウェブサイトと同様のようですschoolmanagement.comと私のような別の学校のクライアントに異なるサブドメインを提供school1.schoolmanagement.com&school2.schoolmanagement.comが、コードは、これらのサブドメインの両方の背後に同じです。両方の学校の機能やテーマは異なり、それぞれのデータベースに依存しています。だから私は提供する必要がありますschoolmanagement.comそれぞれのURLなどへのログイン資格情報Iリダイレクトに基づいてログインのために、私のクライアントのログイン一度school1.schoolmanagement.com。 これは、マルチテナントアプリケーションについての私の理解です。私の理解は正しいですか?私が通過できるオンラインマルチテナントアプリケーションはありますか?

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