ソフトウェア工学

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

7
静的コード分析とコードレビューの違いは何ですか?
静的コード分析とコードレビューの違いを知りたかっただけです。これら2つはそれぞれどのように行われますか?より具体的には、PHPのコードレビュー/静的分析に現在利用できるツールは何ですか?また、あらゆる言語のコードレビューに適したツールについても知りたいです。

6
ロックを使用している場合でも、アルゴリズムにロックは不要ですか?
ロックフリーの一般的な定義は、少なくとも1つのプロセスが進行することです。1 キューなどの単純なデータ構造があり、ロックで保護されている場合、1つのプロセスがロックを取得し、必要な処理を実行して解放できるため、1つのプロセスは常に進行できます。 それでは、ロックフリーの定義を満たしていますか? 1たとえば、M。Herlihy、V。Luchangco、M。Moirを参照してください。障害物のない同期:例として両終端キュー。分散コンピューティング、2003年。「一部のスレッドが常に進行することのみを保証する場合、ロックフリーです」。


5
リモートで作業する開発者がオンサイトで作業する場合よりも生産性が低いという証拠はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 そこで私は数日前にここで一緒に仕事をしている人の一人に話していました、そして彼らは彼らの会社がもはや生産性の低下によりもはや労働者が遠隔で働くことをもはや許さないと不満を言っていました。この言い訳を聞いた人は、リモートの機会を探すためにオンサイトのみのスタッフ配置を正当化するために使用されたので、これを確認する実証的証拠があるのか​​、それとも業界で知っている私や他の人が話をされているのか疑問に思っています。 。

3
基本クラスの抽象化とコピーの構築、経験則
多くの場合、オブジェクトのインターフェイスを分離するための抽象基本クラスを用意することをお勧めします。 問題は、C ++ではデフォルトでコピー構築であるIMHOがかなり壊れており、コピーコンストラクターがデフォルトで生成されていることです。 では、抽象基本クラスと派生クラスに生のポインタがある場合の落とし穴は何ですか? class IAbstract { ~IAbstract() = 0; } class Derived : public IAbstract { char *theProblem; ... } IAbstract *a1 = new Derived(); IAbstract a2 = *a1;//??? そして、階層全体のコピー構築を完全に無効にしますか?コピー構造をプライベートとして宣言しますIAbstractか? 抽象基本クラスで3つのルールはありますか?

7
頻繁な要件の変更にどのように対処しますか?
現在の職場ではかなりストレスの多い状況(私の意見では)を扱っています。 私たちは新しいプロジェクトの開発を開始し、いくつかの要件を取得して実装し、「ビジネスアドバイザー」と呼ばれる人(ビジネス要件を知っているがプログラムを使用しない人)に見せます。その人は顧客の視点からアプリケーションを評価し、それをテストすることになっています。 ここに「プロセス」がどのように見えるか: ビジネスアドバイザーは、Windowsメッセンジャーで1〜2時間、上司と夕方話し合います 翌日、その会話のコピーをメールで受け取ります。私はそこからタスクを選択し、報告されたバグをチェックすることになっています(これは多くの場合、バグではなく、テストが不十分で、過去の施設を忘れています)。 私は変更を実装し、実装が受け入れられ、1〜2週間で、彼らが望んでいないことが判明しました(5分間ソフトウェアを見た可能性のあるクライアントと話し、変更を提案しました)-新しい変更を行う必要があります 誤解しないでください。要件が変わる場合があることを理解しています。気が動転するのは、職場で変更が発生する頻度と、「管理」がいかに簡単かによって、新しい要件が与えられたり、既存の機能に根本的な変更が加えられたりすることです。 同時に厳しい締め切りに取り組んでおり、ソフトウェアを進めるのではなく、サークルを運営しているという印象を受けます。 この状況への対処方法を教えてください。これは通常の状況であり、私はそれについて過敏になっていますか?

7
LOC /日の比率が高すぎる場合、私は気にする必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は現在インディープロジェクトに取り組んでいるので、人間によるテストや外部コードのレビュー全体を行う余裕はありません。しかし、現在のコードに難しいバグはありません(私が見ているように修正しています) 、そしてほとんどの場合、フィールド名などが間違っているため、1〜2分で修正することができます)。機能を実装した後、プッシュする前にテストします。最近、私のLOC番号は1日あたり約400でした(実際には、C#です)。新しいシステムを実装するだけでなく、既に記述した内容を書き換えて、いくつかのバグを修正しています。 気にする必要がありますか?これまでに作成したすべてのコードを停止して確認し、リファクタリングする必要があるという兆候ですか?
9 c#  refactoring 

3
JAX-RS @PathParamで日付タイプを使用する必要がありますか?
これは、Jerseyを使用してJEE Glassfishサーバーで実行しようとしていることです。 @GET @Path("/{name}/{date}") public String getMessages(@PathParam("name") String name, @PathParam("date") Date date) このRESTfulなWebサービスを利用する人々に「ここの日付はJavaのDateクラスで機能するものなら何でもよい」と伝えることができるというアイデアが気に入っています。これは、Date仕様だけを見ることができるという観点からは非常に単純であり、テストできる動作モデルが既に用意されています。 私が心配している問題は、これを行ったときに、Date()がコンストラクターで取得した内容が気に入らない場合、JAX-RSがあまり良くないことです。Date()は、与えられたものを解析できない場合(実際の日付ではなく「today」という文字列を渡した場合など)にエラーをスローするため、JEEサーバーは404エラーを返します。 これは良い習慣ですか?私が考えていない、これを行うより良い方法はありますか?

6
.NET開発者として基幹業務のタブレットアプリを開発するにはどうすればよいですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私の会社は.NET開発に多くの経験があり、ERPシステムの製品の1つです。最近、顧客から、そのシステムにタブレットインターフェイス、つまり、顧客が製品情報を表示してタブレットで注文を作成できるソフトウェアを提供できるかどうか尋ねられました。 もちろん、Objective-Cの学習、Mac開発ワークステーションの購入、Appleへの料金の支払いなどに多くの時間とお金を投資するという考えにわくわくすることはありません(この1つのプロジェクトのためだけにアプリを販売できるかもしれません)。その後、数人の追加の顧客に提供しますが、ERPシステムの既存の顧客にのみ有用であるため、市場は非常に小さいです。 だから何をすべきか?私の知る限り、次のオプションがあります。 「プレーンな古いWindowsアプリケーション」(WPF)を作成し、Samsung SlateやAcer IconiaなどのWindows 7タブレットで実行します。 欠点:実行時間が短い(「実際の」タブレットと比較して)重くて高価なデバイス。 Windows 8 ARMベースのタブレットを待ち、Metro(WinRT)アプリを作成します。 欠点:少なくとも1年は待ちます。Windows 8 ARMがアプリストアを経由せずにカスタムB2Bアプリのインストールをサポートするかどうかは不明です。 Android用のモノを使用して、Android用の.NETアプリを作成します。 欠点:さらに別のUIライブラリ(WPFやSilverlightとは異なります)。一部のプロバイダーは、アプリのサイドローディングを許可していません。 これまでのところ、オプション1と3が最も現実的です。明らかな欠点や利点を見逃しましたか?まだ検討していない別のオプションはありますか?あなたは同じような状況にあり、(成功した)1つの特定のオプションを選択しましたか?

7
自宅からのウェブサイトのホスティング[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 自宅からウェブサイトをホストしたい場合は、ドメイン名を購入します。次に、ISPから静的IPを取得します。次に、ホームシステムのIPアドレスをポイントします。システムにインストールされているSQLサーバーも使用でき、サイズを気にする必要はありません。ここではサーバーの山について話しているのではありません。1つのサーバーのみ。 こんなに簡単なのかと思っていたのですが、どうでしょうか。ここに欠けているものはありますか?ややシンプルなウェブサイトについて話している。しかし、それは重要ですか?

1
JavaのIteratorとListIteratorが要素間を指すのはなぜですか?
ListIteratorのJavadocは次のように述べています。 AにListIteratorは現在の要素がありません。カーソル位置は常に、への呼び出しによって返されるprevious()要素とへの呼び出しによって返される要素の間にありますnext()。 Java ListIteratorが現在の要素ではなく要素間を指すように実装されたのはなぜですか?繰り返し呼び出す必要があるとき、これはクライアントコードが読みにくくなりますようだgetNext()、getPrevious()私は選択のための正当な理由がなければならないと仮定して、。 注意点として、私はちょうど書いたpeekable-のArrayListと呼ばれる小さなライブラリ拡張ArrayList、IteratorおよびListIteratorその提供peekAtNext()とpeekAtPrevious()同じように実装する方法を: @Override public synchronized T peekAtNext() { T t = next(); previous(); return t; }
9 java  iterator 

5
新しいコードで新しいチームを管理するためのヒント/トリック[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 自分が最上級の開発者であり、チームの他のほとんどが数年後輩である新しいチームでどのように自分自身を扱いますか。チームの前の仕事は、あなたを含め、他の誰もがこれまでのキャリアで成し遂げたことはありません。 経営陣はチーム全体の生産性の向上を要求し、上級開発者として責任があります。 このような状況で切り札を出すためのヒントはありますか?明らかに、チーム全体が学ぶ時間を必要とし、チームの新しいことを忘れないようにしましょう。ただし、期限も前倒しです...


5
関数型プログラミングの準備で私の考え方を変える
手続き型およびOOPから来た関数型プログラミングに切り替える場合、「この新しい考え方」について事前に知っておくべきことは何ですか。 FPの世界でのダイビングに向けてどのように準備し、それを初めて体験するのですか? 最初に学び、最初に設定するための基本は何ですか?

6
URLでタイトルの大文字を使用する必要がありますか?
現在、複数のWebアプリケーションを使用するサイト全体で一貫した命名規則を決定しています。歴史的に、私は「小文字のすべての文字!」を提唱してきました。URLを作成する場合: http://example.com/mysystem/account/view/1551 ただし、1年か2年以内に、具体的にはASP.NET MVCを使い始めて、RESTベースのURLとの取引が増えたため、URL内の各セクション/単語の最初の文字を大文字にするのが好きになりました読みやすい(imho)。 http://example.com/MySystem/Account/View/1551 私たちは人々が URLを読んだり理解したりする必要がある状況にないので、それ自体はドライバーではありません。私たちが求めている主なものは、合理的で理にかなった一貫したアプローチです。 何らかの方法で良いことを宣言する標準、または別のものよりも優先を選択する(少なくとも現実的には現代的な)セットアップで遭遇する可能性のある問題はありますか?現在、この議論の一般的なコンセンサスは何ですか?

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