ソフトウェア工学

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

2
新しいプロジェクト用のJAX-RS実装の選択
RESTful APIを必要とする新しいJavaプロジェクトを開始しています。モバイルクライアントにサービスを提供するSaaSビジネスアプリケーションになります。 Java EE 6を使用して1つのプロジェクトを開発しましたが、ほとんどの経験がMicrosoftプラットフォームに関するものであるため、エコシステムについてあまり詳しくありません。 記載されているような新しいプロジェクトのJAX-RS実装の賢明な選択はどれでしょうか? ウィキペディアのリストから判断すると、主な候補者はジャージー、Apache CXF、RESTeasy、Restletのようです。しかし、Wikipediaで引用されているJAX-RS実装の比較は 2008年のものです。 それぞれのホームページから私の最初の印象は次のとおりです。 CXFは非常に包括的なソリューションを目指しています(Microsoft分野のWCFを思い出させます)。これは、必要なものよりも理解、セットアップ、デバッグが複雑になると思います。 Jerseyはリファレンス実装であり、良い選択かもしれませんが、Sunの遺産であり、Oracleがそれをどのように扱っているのかわかりません(アナウンスページが機能せず、最後のコミット通知が4か月前のものです)。 RESTeasyはJBossからのもので、おそらく堅実なオプションですが、学習曲線についてはわかりません。 Restletは人気があるように見えますが、多くの歴史があります。JavaEE 6の世界でどの程度最新であるか、または(多くのXML構成のように)重いJ2EEの考え方を持っているかどうかはわかりません。 これらの各選択肢のメリットは何でしょうか?学習曲線はどうですか?機能サポート?ツール(例:NetBeansまたはEclipseウィザード)?デバッグと展開の容易さについてはどうですか?これらのプロジェクトのうち、他のものよりも最新のものはありますか?それらはどれくらい安定していますか?
35 java  rest  java-ee 

5
HTML / JavaScriptのみのWebアプリの長所と短所[非公開]
ASP.NETフォームのバックグラウンドから来ましたが、過去にサーバー側のコーディングが非常に強力であることがわかりました。ただし、最近では、フロントエンドのサーバー側コードを段階的に廃止し、JSON Webサービスを介してデータにアクセスする純粋なHTML / JavaScriptに置き換えたいと考えていました。私はこれについて実際の経験がないので、これが試され、テストされたモデルであるかどうか聞きたいです。また、それを取り巻く落とし穴は何ですか? ASP.NETユーザーコントロールは非常に便利だと思うので、サーバー上の別個のHTMLファイルにマークアップテンプレートを保存することで、その背後にある理論を維持したいと思います。これらは、それぞれjQuery AJAXおよびjQuery HTMLテンプレートプラグインを通じて取得および使用されます。 任意の入力は非常に高く評価されます。 PS noobの質問は申し訳ありませんが、このタイプのWebアーキテクチャはweb-2.0と呼ばれるものですか、それとも完全にオフトラックですか?

3
オブジェクト指向で渡すメッセージとは何ですか?
私は、主にC ++、C#、およびJavaでオブジェクト指向プログラミングを研究しています。カプセル化、継承、およびポリモーフィズムの理解(およびこのサイトで多くの質問を読むこと)で、それを十分に把握していると思いました。 ここにポップアップ表示されるように思われることの1つは、「メッセージパッシング」の概念です。どうやら、これは今日の主流言語でのオブジェクト指向プログラミングでは使用されていないが、Smalltalkでサポートされているものです。 私の質問は: メッセージパッシングとは何ですか?(誰かが実用的な例を挙げることができますか?) C ++、C#、またはJavaでこの「メッセージパッシング」をサポートしていますか?
35 java  c#  c++  object-oriented 


16
プログラミング時に他の数値ベースを使用する理由
同僚と私は、10以外のベースで数字をプログラムするために誰かが邪魔にならない理由を考え出すことに心を曲げてきました。 私はおそらくあなたが作業している正しいベースに変数を置くことでより長い方程式を最適化できることを提案しました(たとえば、残りのない何かの5つのセットしか持っていない場合はベース5を使用できます)が、私はわからないそれが本当なら。 何かご意見は?

2
ASP.NET MVCでのデータアクセスの分離
私は、MVCでの最初の本当のクラックで、業界標準とベストプラクティスに従っていることを確認したいと思います。この場合、C#を使用したASP.NET MVCです。 モデルにEntity Framework 4.1を使用し、コードファーストオブジェクト(データベースが既に存在する)を使用するため、データベースからデータを取得するためのDBContextオブジェクトが存在します。 asp.net Webサイトで行ったデモでは、コントローラーにデータアクセスコードが含まれています。これは、特にDRY(自分自身を繰り返さないでください)プラクティスに従う場合、私には正しくないようです。 たとえば、公共図書館で使用するWebアプリケーションを作成しており、カタログ内の書籍を作成、更新、削除するためのコントローラーがあるとします。 アクションのいくつかはISBNを取得し、「Book」オブジェクトを返す必要がある場合があります(これはおそらく100%有効なコードではないことに注意してください)。 public class BookController : Controller { LibraryDBContext _db = new LibraryDBContext(); public ActionResult Details(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return View(currentBook); } public ActionResult Edit(String ISBNtoGet) { Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet); return …

5
スローされないチェック例外を処理する方法
例: foobar = new InputStreamReader(p.getInputStream(), "ISO-8859-1"); エンコーディングはハードコーディングされており、正しいため、コンストラクターは仕様で宣言されたUnsupportedEncodingExceptionをスローしません(Java実装が壊れていない限り、この場合はとにかく失われます)。とにかく、Javaはとにかくその例外に対処することを強制します。 現在、そのように見えます try { foobar = new InputStreamReader(p.getInputStream(), "ISO-8859-1"); } catch(UnsupportedEncodingException e) { /* won't ever happen */ } それを改善する方法はありますか?

4
抽象化のレベルを決定する方法
今日「Clean code」という本を読んでいて、関数ごとの抽象化のレベルについて著者が話している段落に出くわしました。彼はいくつかのコードを低/中/高レベルの抽象化として分類しました。 私の質問は、抽象化のレベルを決定するための基準は何ですか? 本から段落を引用します。 関数が「1つのこと」を実行していることを確認するには、関数内のステートメントがすべて同じレベルの抽象化であることを確認する必要があります。リスト3-1がこのルールにどのように違反しているかは簡単にわかります。そこには、getHtml()など、非常に高度な抽象化の概念があります。以下のような、抽象化の中間レベルにある他のもの:String pagePathName = PathParser.render(pagePath); さらに、.append( "\ n")などの非常に低レベルのその他のものもあります。

6
Scalaのシステム設計を再発明する
何年も前に、私はオブジェクト指向ソフトウェア工学の修士号を取得しました。プロジェクトの開始、要件、分析、設計、アーキテクチャ、開発など、すべてをカバーしました。これまでの私のお気に入りのITブックは、オブジェクト指向ソフトウェアの開発、経験ベースのアプローチ(IBM-1996)でした。当時の真の専門家グループによって作成された本。オブジェクト指向の分析、設計、開発手法に対する作業成果物中心のアプローチについて説明しています。 私はデザインと開発を行い、ゲームのトップで満足していましたが、少し時代遅れに感じ始めました。アジャイルムーブメントはその日のファッションになり、新しいヒップワードでよく知られている反復的かつ漸進的なアプローチを再ブランド化しました。「要件」または「アーキテクチャ」と言ったとき、あたかもこれらのことが魔法に取って代わられたかのように、突然、経験の浅い開発者は眉をひそめ始めました。 設計と開発は楽しさを失い、私はIT業界全体を取り残そうとしていました。 それからScalaを発見しました。ああ、ほこりっぽい道の柔らかい雨のように。すべてが明確になり、空気が再び甘くなり、私のハードドライブの小さな光が夜中深く点滅し、私の発見の世界で私を楽しませてくれました。 システム設計が好きです。私はプログラマーというよりも、建築家です。分析、設計、思考、議論、改善が大好きです。シンプルでクリーンで鮮明なデザインが大好きです。 純粋なScalaソリューションをどのように設計しますか? 確かに従来のシーケンス図、相互作用図、オブジェクト図などは、命令型と機能型のオブジェクト指向システムを融合させるために、すべて置き換えるか、改善することができます。確かに、まったく違うものの始まりがあります! 肥大化した複雑さを探しているのではなく、柔軟なシンプルさを探しています。Scalaは実際はシンプルで簡単ですが(違いはありますが)、ヨガパンツのように要件に合わせて拡張できます。この素敵な言語には、簡単に始められ、要件やドメインに合わせて拡張できる設計システムが必要です。確かにUMLはそうではありません! それでは、純粋なScalaシステムをどのように設計するのでしょうか?ちょっと想像してみてください。完全なシステムをゼロから設計する余裕があり、Scalaのみを使用することを知っています- モデルはどのように見えますか?構造と動作を説明するには、どのような種類の図が必要ですか?オプション、マッチ、ミックスイン、シングルトンオブジェクトなどを、新しくて軽量で革新的なツールセットではなく、既存のモデリングテクニックを拡張する複雑さに引き込まずに、どのようにモデリングしますか。 そのような設計/プロセス/ソリューションは存在しますか、それとも発明する時ですか?

7
コピー/貼り付け/スパゲッティプログラマを変換して光を見る方法は?
この質問はこれに触発されました。他の質問はローカライズされていると見なされていましたが、根本的な問題は業界では非常に一般的なものだと思います。私はこれを読んで私がこのものを作り上げていると思う開発者が何人かいることを知っています、そして彼らは誰もが自分の仕事を気にかけ、学びたい方法を返信するかもしれませんが、他のプログラマーSEの投稿を見るだけです(適切な場合)私はそれが普遍的に真実ではないことを知っています。 たとえば、チームに(または大多数)の標準操作手順がコピー/貼り付けであり、十分な関数呼び出しと変数を追加するだけですべてが解決できると考えている人がいるとします。この人はTDD、DRY、SOLIDのことを聞いたことがなく、仕事で忙しい40時間を超えて、一度も1つの方法論/実践/デザインの本を読んだことがありません。 過去に、私(および他の人)は、どのようにOODを教えるのかと尋ねてきました。しかし今、私はそれが正しい質問ではないと考えています。本当の問題は、そのような人/チームにどのようにアプローチし、物事のより良い方法に興味を持たせるかです。どのように彼らに学ぶよう促しますか?それがなければ、彼らの机に戻っていつもやってきたことを完全に満足していれば、すべての教育、会議、講義、議論は役に立たないようです。 私はそのような多くの人々と仕事をしています。彼らは実際には非常に優秀な人物ですが、「コーディングが終わったので、リファクタリングしてDXMを幸せにするために複数のクラスに分割するだけです」と聞いたときは嫌いです。きれいで、読みやすく、保守可能なコードをリファクタリングしませんが、そうしないとonlyられるだけです。私は彼らが学習できることを知っていますが、やる気の一般的な欠如があるように見えます。 私が仕事を提供するとき、それは一般的にずっと少ないバグを持ち、私が所有する仕事は決してクラスの5000行の怪物になりませんでした。他の人は、「あなたのコードは私たちのものよりもずっときれいで読みやすい」というようなコメントをするので、違いがわかります。しかし、同時に、彼らは何をしていても40時間の報酬を受け取ると信じているので、QAに3日間丸ごと入れてはいけないバグを探しても気にしない最初の場所。または、1つのクラスを変更するのに1週間かかるため、非常に多くの依存関係があり、最終的には触れることになります。ただし、「そのクラスは別の方法で記述されている必要があります」と表示されることはありません。 これらの状況で何かできることはありますか?成功した人はいますか?または、そのような考え方をプロジェクトの重要ではない部分に分離し、損害を最小限に抑えることが最善ですか? 注:「モチベーションの欠如」と言うとき。彼らは単に思いやりをやめたので、仕事をしたり、良い仕事をしたりする動機が不足しているとは思いません。私たちのチームのほとんどは、実際はまったく反対です。彼らは間違いなく製品を気にします。夜と週末に働く人がいます。私が乗り越えようとしているのは、習慣とスキルを改善することです。彼らは実際にはそれほど仕事をする必要はありません。「40時間」のことで、この投稿は少しネガティブに聞こえたと思います。

5
Androidマーケットで本名でAndroidアプリを販売するのは悪い考えですか?[閉まっている]
Android開発を始めたばかりで、いくつかの小さな「練習」アプリに取り組んでいます。例として、1つはライブ壁紙です。その他は、開発努力の点で似ています。これらのアプリが完成したら、市場にリストアップしたいと思います。私はそれらを無料でリストするかもしれませんし、そうでないかもしれません、そしてそれらはシンプルなアプリですが、物事がスムーズに進むなら、私は将来、より大きくて野心的なプロジェクトを構築して販売しようとするかもしれません。 私の質問は、Androidマーケットで自分の名前でアプリを販売するのが賢明なことですか?市場を見てみると、たとえ1〜2人だけの店であっても、ほとんどの人が会社名で売っているようです。人々のチームが関与する大きなアプリである場合、アプリを販売する会社を設立することの利点を間違いなく見ることができます。しかし、名前や身元だけでさえ、ライブ壁紙のようなものをリストするだけでも、会社を作るのはやり過ぎのようです。一方で、法的責任や私が予見していなかった他の潜在的な問題にさらされたくありません。ここでの最善の行動は何ですか? 法的管轄の目的で、私は米国にいます。あなたは私の弁護士ではなく、答えは法的助言ではないことを理解しています。 明確にするために編集します。 明確にするために、私が尋ねたいのは、会社を設立することの利点についてではなく、会社を設立しないことの潜在的な危険性についてです。言い換えると、「ああ、これをリストする代わりに会社を設立しただけなら、それは個人的なプロジェクトだ!」

4
GoogleはGo言語にいくら投資していますか?
Go言語についてはかなり読みましたが、有望なようです。言語にもっと労力をかけることに決める前に不足している最後の重要な情報は、次のとおりです。この情報を提供できない場合、プロジェクトへのGoogleのコミットメントを示す他の情報はありますか。新しい投資などの主要言語として使用されていますか(これには早すぎますが、わかりません)。

11
いつも離職する恐れがあり、一緒に働くのが難しいチームメンバーについてはどうすればよいですか?[閉まっている]
私は3人の開発者がいる小さな開発グループで働いています。私たちは大まかに管理されており、チームには構造がありません。指定されたチームリーダーは存在せず、マネージャーはかなり人手がありません。シニア開発者は4年間会社に在籍しており、その間にシステムのセットアップと実行の維持に多大な貢献をしました。彼は非常に優れた開発者ではありませんが、優れたカウボーイコーダーであり、私が決してできない方法でネットワークを理解しています。彼は年長であり、私たちの仕事よりも自分の仕事に優れていると感じているため、「主任開発者」と「システムアーキテクト」の役割を果たしました。 私の問題は、彼がいつも辞めると脅していることです。昨日彼は私に、6週間後に401kの権利確定プログラムでさらにレベルを上げ、その後退職することを通知しました。私が彼に理由を尋ねたとき、彼は私たちのマネージャー(男性)とチーム(私であるチーム)が彼を「非難する」からだと言った。彼は、自分の年功序列に基づいて開発マネージャーになったことに「ふさわしい」と感じています。私はバグ/問題追跡ソフトウェアのようなものを押し続け、仕事が得意なので、彼は私を好きではありません。 彼が辞めると脅した最後の時、私は彼を真剣に受け止め、彼が去る周辺で私の仕事を計画し始めました。それから彼は考えを変えて、私がやっていることは彼の責任だと言った。彼は私と彼の気性を失い、緊張はしばらくの間本当に高かった。 以下は、私がこの状況にアプローチしたさまざまな方法の一部です。 彼が求めていることをしてください。これは緊張を軽減しますが、その後何も行われず、ユーザーは動揺します。 コントロールを取り、物事を成し遂げます:これはユーザーを幸せに保ちますが、それから彼は私に怒り、シャットダウンします。彼は私が自分でそれをするために入らなければならないシステムへのアクセスを私に与えません。 上級管理職との緊密な連携:彼は上級管理職に敬意を払っていません。彼らは彼が会社を辞めることを望まないので、彼らは彼を甘やかしています。 まだ前進していないオプションの1つは、会社を辞めることです。1年はまだそこにいませんが、辞めるという考えは好きではありません。全体として、仕事は私のポジションのほとんどの要件を満たしています。 アイデア?提案?会話?検討していないオプションはありますか? 更新5/11/2012: 私は最終的に去ることに決めました。それは良い決断でした。元の投稿と今では良くなったが、それでも私は良い開発者であるとは思っていませんでした。私は彼の知識を尊敬していますが、彼と一緒に仕事をする必要がなくなってうれしいです。

7
コードモンキーであることの何が問題になっていますか?(または、コードモンキーとは何ですか?)[終了]
プログラマーは、軽的な方法で「コードモンキー」であることについて話す傾向があります。「そこでは動作しません、あなたはただのコード猿になります!」。 私は2つの仕事のオファーを持っています。1つは小さな会社で、もう1つは非常に大きな会社(同じ給料)でです。私の友人は私が大企業のコードモンキーになると言ったばかりで、小さな会社は私を「コードモンキー」に変えるよりもやりがいがあることを直接知っています。 「コードモンキー」プログラマと「本物の」プログラマの違いを本当に理解していません。詳しく説明してください。プログラミングが大好きなので、コンピュータープログラミング(コードモンキー)に座るという考えは悪くないようです。プログラマーがプログラミングを楽しんでいる場合、「コードモンキー」とはどういう意味ですか?

9
非IT担当者はWikiを処理できますか?[閉まっている]
私の会社は、市場調査データの管理を改善しようとしています。 現在のデータ管理スタイル: 「ねえ神保、WhatZit 2.0の写真はどこにありますか? 「ええ、私はその会社からその会社についてのメールを覚えています。数分でOutlookを検索してください」 「重要な競合他社の製品カタログの最新のコピーを持っているのは誰ですか?私のものは2009年からです。」...「コリーンはそうします、そして彼女は産休中です。ワークステーションのパスワードを得るために彼女に電話する必要があります...」 望ましいデータ管理スタイル: トピック(法律、経済、産業、競合他社)ごとに整理されたデータ トピックごとに、複数のメディアタイプ(会社の製品画像、プレスリリース、連絡先情報)が一緒に保存されますが、それでもタイプ別にきちんと並べ替えられます データ編集履歴 共同アクセス(データサイロなし) 私は、すべてのユーザーがアクセスできる部門wikiをセットアップすることを考えていました。上記の4つの基準を満たしているように見えますが、画像ギャラリーや記事の書式設定などのより高度な機能がユーザーフレンドリ(読み方:技術に詳しくない人でも解読可能)であることに少し懸念があります。 ここの誰かが非ITの人々のためにwikiをセットアップし、それが燃えたり、ゴーストタウンになったり、ジオシティのように見えたりしませんでしたか? おまけの質問:この問題を解決するためにMediaWiki(または他のwiki)を選択した場合、明らかな欠点がありますか? (私はあなたの何人かが以前にこの問題に遭遇し、いくつかの洞察を提供できることを望んでいます...)

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