ソフトウェア工学

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

7
プログラマーとして、開発プロセスで使用される方法を気にしますか?
私は就職市場にいて、給与、業種など、次の仕事の優先順位を持っています。しかし、要件のリストに載っていないことの1つは、開発プロセスの方法論です。私の仕事はソフトウェアを作成することだと感じており、プロセス構造はスクラムでもウォーターフォールでも何でも適応できるものだと考えています。 開発プロセスの方法論はあなたにとって優先事項ですか?

7
Project In A Week /開発ブートキャンプ[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私たちのチームは「Project In A Week」(ブートキャンプ)を行うことを考えていますが、他の誰かがこれを行った経験があるか、何かアドバイスがあるかどうか知りたいですか? その背景にあるアイデアは、短期間で革新的で収益性の高い製品を考案するために、オフィスの気晴らしから逃れ、お互いに動機付け、チーム内で絆を築くことです。 計画では、開発チーム全体(約5人の開発者)、デザイナー、プロジェクトマネージャー、1週間のカンファレンスセンター/ホテルに1週間滞在するセールスおよびマーケティングのカップルを獲得します。1つのWebアプリ(事前に計画済み)を構築し、それを1週間以内にライブで市場に投入することに完全に集中します。私たちはかなり長い日働きますが、夕方にはチームとして一緒に楽しい時間を過ごします。日々のクライアントサポートに気を取られないように、チームのメンバーがオフィスに数人残っています。同様の「没入型」アプローチは、Firebrandなどのトレーニング会社で使用されています。 良いアイデア?ひどい考えですか?チームにインセンティブを与えるにはどうすればよいですか? どんな考え/経験/アドバイスも大歓迎です。 乾杯

4
中小企業から大企業への移行[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 新興企業から大規模組織に移行するアプリケーション/データベース開発者のためのヒント、考え、警告、または一般的な知恵はありますか? 考えの例には、次のようなものが含まれます。 管理チェーンと異なる方法でやり取りするにはどうすればよいですか? 大小で異なる品質または開発速度の傾向が見られますか? チーム開発者の考え。 社会的側面。 他に何か。 追加:誰かが同様の動きと共有する個人的な物語や経験を持っていますか? 何らかの方法で明確にできるかどうかを教えてください。 ご意見ありがとうございます!

8
物理的な現実世界のオブジェクトを参照せずにオブジェクト指向を教えるにはどうすればよいでしょうか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 オブジェクト指向の背後にある元の概念は、データの状態を保護する方法で複数のシステム間でデータのメッセージングを処理するためのより良いアーキテクチャを見つけることであったことをどこかで読んだことを覚えています。今はおそらく貧弱な言い換えですが、オブジェクトの類推(バイク、車、人など)なしでオブジェクト指向を教える方法があり、代わりにメッセージングの側面に焦点を当てているのだろうかと思いました。記事、リンク、書籍などがある場合、それは役立ちます。

9
Python:主要なプログラミング言語としての未来?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 数年前にいくつかのPythonの資料を読んで、いくつかのPythonコードを見た後、私はそれを旋回することにしました。Project Eulerの問題を解決するためにPythonから始めることにし、この言語に非常に感銘を受けました。それ以来、私はDjangoを学び、現在は主にWebアプリケーションに使用しています。私はこの言語でキャリアプログラミングをしたいと思っていますが、この言語の将来は現在不確実な状態にあることを恐れています。グーグルや他の大手企業がそれを採用しているので、希望があるかもしれません。Pythonについてどう思いますか、そこには多くの仕事の機会がありますか?
14 python 

8
技術面接でのテンプレート質問の使用[終了]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は最近、インタビューで技術的な質問について同僚と議論しました。卒業生として、私は多くの企業を巡り、同じ質問を使用していることに気付きました。例は、「数が素数かどうかを判断する関数を書くことができますか?」、4年後、特定の質問はジュニア開発者にとっても非常に一般的であることがわかりました。私はこれを正しい方法で見ていないかもしれませんが、ソフトウェアハウスは彼ら自身のインタビューの質問を考え出すのに十分な知性を持つべきではありませんか?私は卒業生として約16回のインタビューに参加しましたが、約75%で同じ質問が出されました。これにより、多くの企業が怠andで単純なGoogleであると信じるようになります。「ソフトウェア開発者にインタビューするためのテンプレートの質問」であり、このアプローチをとることで自分自身を傷つけていると感じています。 質問:いくつかのテンプレートから一連の質問を使用する方が良いでしょうか、それともソフトウェアハウスがより独創的で、独自のインタビュー資料を作成するように努力すべきですか? 私の観点から言えば、インタビューに失敗して出かけ、めちゃくちゃになった質問に対する良い答えを探した場合、質問が同じであれば次のインタビューを飛ぶことができました。
14 interview 

3
「ソフトウェアのサポート終了」状況に対処する方法
ベンダーがソフトウェアのサポートやサービスを提供するつもりはないと宣言した場合(およびアップグレードパスを提供せずにビジネスを終了する意図を述べた場合)、顧客はどのような手段を利用できますか? 顧客の観点からこれを考慮してください。顧客のITスタッフは技術的な選択肢のみを検討する可能性が高いですが、顧客が同様に追求できる非技術的な選択肢が存在する可能性があります。また、契約条件などで混乱を最小限に抑えるために、顧客は事前にどのような合理的な手段を講じることができますか? 私が考えることができるもの: 予備のハードウェアを購入し、ソフトウェアが動作し続けることができる予備環境をセットアップする必要があります。 ベンダーの関与を必要としないさまざまなデータエクスポート方法。(これには、商品データベースのバックエンドに保存されているデータを調べるなどの簡単な手法、スクリーンスクレイピング、画像への印刷、再スキャンなどのより複雑な手法などが含まれます) スタッフが古いデータを手動または半自動で新しいシステムに複製する並列システム ベンダーが金銭的な問題を抱えている場合の法的手段(ソースコードエスクローの場合など) 他のアイデアはありますか? 「迂回」が関係しない(DRMなし、DMCAなし)と仮定すると、データリカバリまたはリバースエンジニアリングは合法/許容可能ですか? 編集したメモ: それは、いくつかの逸話的な、しかし実際の物語の組み合わせです。私はそれらのいずれにも直接関与していません。「ソフトウェアのサポート終了」状況が一般的にどのように処理されるかを知りたいのです。元のストーリーを解決するには「難しすぎる」と思わせるつもりはありません。

3
1〜3人の開発者からなるチームが10人以上に成長した場合、どのような管理/開発プラクティスを変更しますか?
私のチームは数年前にクライアント用のウェブサイトを構築しました。サイトのトラフィックは急速に増加しており、クライアントはメンテナンスと機能要求のニーズを満たすためにチームを成長させるように求めています。 私たちは少数の開発者から始めましたが、チームは成長しました-今では2桁になっています。 チームが小規模な「ガレージサイズ」チームから10人以上の開発者に成長する場合、どの管理/開発の変更が最も有益ですか?

10
恐ろしいデザインを提示された場合、何をすべきですか?
当社はウェブサイトを作成しています。ウェブサイトもデザインしています。しかし、時々私たちのクライアントは彼/彼女自身のデザインをもたらします。これは多くの場合、社内のデザイナーが作成したものです。または、他の何かに使用したのと同じデザインです。ただし、これらのデザインがひどく見える場合があります。そして、私は本当に非専門的で、アンバランスで、クールではありません。しかし、クライアントは本当にこの設計を望んでいます。私は本当にひどいデザインで作業するのは好きではありません。それはコーディングのすべての喜びを奪います。あなたがコーディングします。デモを確認します。よく働く。ひどいですね。面白くない。 そして最終的にはクライアントは満足するかもしれませんが、1)最終製品に誇りを感じず、2)あなたのイメージに悪いisいウェブサイトを「開発」しているとコミュニティは見ています。 この種のものを経験している人はいますか?おすすめは何ですか? 思っている: これらのクライアントをブロックします。誰かが「独自の」デザインを持っている場合は、最初にそれを確認してください。それからどういうわけか丁寧に断ります。欠点:クライアントを失う。 新しいデザインを作成します。社内のデザイナーに、とてもクールな仕事をしてもらいます。欠点:クライアントはこれを支払う必要があります(要求しないで)、または拒否され、会社は時間=お金を失います。そして、もしあなたが突然新しいデザインを提案するならば、それはin辱として来るかもしれません。彼らのデザイナーは確かにそれを好きではないでしょう。 サイトの下部に明確な免責事項を記入してください。ウェブサイトのデザインはXXXXX、ウェブサイトの開発は米国です。コミュニティへの影響(人々が注意を払う場合)には役立ちますが、不安感には役立ちません。
14 design 

11
プログラミング言語は厳格か緩いか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 2年前に閉店。 PythonおよびJavaScriptでは、セミコロンはオプションです。 PHPでは、配列キーを囲む引用符はオプション($_GET[key]vs $_GET['key'])です。ただし、それらを省略すると、最初にその名前の定数が検索されます。また、ブロックに2つの異なるスタイル(コロン、または括弧で区切られた)を使用できます。 現在、プログラミング言語を作成していますが、どの程度厳密に作成するかを決定しようとしています。余分な文字は本当に必要ではなく、優先順位のために明確に解釈できる場合が多くありますが、一貫性を促進するためにそれらを強制するべきかどうか疑問に思っています。 どう思いますか? さて、私の言語はプログラミング言語というよりも、凝ったテンプレート言語ではありません。Haml テンプレートとDjangoテンプレートの一種です。私のC#Webフレームワークで使用されることを意図しており、非常に拡張可能であることになっています。

6
FlashはJavaアプレットよりも本当に優れていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私はまだ学生で、プログラミングの実生活経験があまりありません。〜5k行以上のコードを書いたことはありません。私はFlashとJavaの両方でコードを書きましたが、なぜJavaアプレットとしてではなく、Flashでビデオプレイヤー(YouTubeなど)のようなWebアプリケーションを書いているのか理解できません。そのため、実践的な経験をお持ちのプログラマーに、このテーマに関する賢明な言葉をお聞きしたいと思います。 アプレットに対するFlashの本当の利点はありませんが、少なくとも私にとっては、バグのように思えます。Flashで何かを作成する方が速いことは理解していますし、高速プロトタイピングに適している理由はわかりますが、一般的には価値がありますか?YouTubeが凶暴になるたびに、Flashでそれを書くために開発者を呪います。LinuxをOperaで使用している場合、これは常に発生します。 だから、基本的に、なぜ人々はアプレットではなくフラッシュを使用しているのですか?

3
WinformsソリューションのMVPを設定するにはどうすればよいですか?
私は過去にMVPとMVCを使用しましたが、MVPのほうが実行の流れを非常によく制御できるので、私の意見ではMVPを好んでいます。 インフラストラクチャ(データストア/リポジトリクラス)を作成し、サンプルデータをハードコーディングするときに問題なく使用できるので、GUIに移行してMVPを準備しています。 セクションA エントリポイントとしてビューを使用するMVPを見ました。つまり、ビューコンストラクターメソッドでプレゼンターを作成し、次にプレゼンターがモデルを作成し、必要に応じてイベントを関連付けます。 プレゼンターは、ビュー、モデル、プレゼンターが作成されるエントリポイントとしても見てきました。このプレゼンターには、コンストラクターでビューとモデルオブジェクトが与えられ、イベントを結び付けます。 2と同じですが、モデルはプレゼンターに渡されません。代わりに、モデルはメソッドが呼び出され、応答が直接返される静的クラスです。 セクションB 私が見たビューとモデルの同期を保つという点で。 ビューの値が変更されたとき、つまりTextChanged.Net / C#のイベントが発生したとき。これDataChangedEventにより、モデルに渡されるa が起動され、常に同期が保たれます。そして、モデルが変化する場所、つまり、モデルがリッスンするバックグラウンドイベントの場合、ビューはを上げるという同じアイデアによって更新されDataChangedEventます。ユーザーが変更をコミットSaveEventしようとすると、モデルが起動して保存されます。この場合、モデルはビューのデータを模倣し、アクションを処理します。 #b1と同様ですが、ビューは常にモデルと同期しません。代わりに、ユーザーが変更をコミットしたい場合に起動SaveEventされ、プレゼンターは最新の詳細を取得してモデルに渡します。この場合、モデルは、それに基づいて行動する必要があるまでビューデータを認識しません。その場合、必要なすべての詳細が渡されます。 セクションC ビュー内のビジネスオブジェクト、つまりプリミティブデータ(int、double)ではなくオブジェクト(MyClass)の表示 ビューには、ドメイン/ビジネスオブジェクトとして表示されるすべてのデータのプロパティフィールドがあります。ビューはこれらをTreeViewのノードに処理しますが、プロパティをview.Animals公開するなどIEnumerable<IAnimal>。次に、選択した動物について、プロパティSelectedAnimalとして公開しIAnimalます。 ビューはドメインオブジェクトの知識を持たず、プリミティブ/フレームワーク(.Net / Java)に含まれるオブジェクトタイプのみのプロパティを公開します。この場合、プレゼンターはアダプターオブジェクトにドメインオブジェクトを渡し、アダプターは特定のビジネスオブジェクトをビューに表示されるコントロールに変換します。この場合、アダプターは、ビューだけでなく、ビューの実際のコントロールにアクセスできる必要があるため、より緊密に結合されます。 セクションD 単一のコントロールを作成するために使用される複数のビュー。つまり、さまざまなタイプのオブジェクトを保存するような単純なモデルを持つ複雑なビューがあります。適切なコントロールが表示される項目をクリックするたびに、メニューシステムを横に配置できます。 ビューインターフェイスを介して公開される個々のコントロールすべてを含む1つの巨大なビューを作成します。 いくつかのビューがあります。メニュー用のビューとブランクパネルが1つあります。このビューは、必要な他のビューを作成しますが、表示しません(visible = false)。このビューは、含まれる各ビュー(子ビュー)のインターフェイスも実装するため、1人のプレゼンターに公開できます。空白のパネルには、他のビュー(Controls.Add(myview))および((myview.visible = true)が表示されます。これらの「子」ビューで発生したイベントは、親ビューによって処理されます。親ビューは、イベントをプレゼンターに渡し、逆もまた同様です。 メインビューであれ小さなビューであれ、それぞれのビューは、それぞれ独自のプレゼンターとモデルに配線されます。ビューコントロールを既存のフォームに文字通りドロップするだけで、機能の準備が整い、舞台裏でプレゼンターに配線するだけで済みます。 セクションE すべてにインターフェースがある場合、上記の例でMVPがどのように行われるかに基づいて、相互互換性がない可能性があるため、この回答に影響します。 すべてには、View、Presenter、Modelというインターフェースがあります。これらのそれぞれは、明らかに具体的な実装を持っています。具体的なビューが1つしかない場合でも、モデルとプレゼンター。 ビューとモデルにはインターフェースがあります。これにより、ビューとモデルが異なります。プレゼンターは、ビューおよびモデルオブジェクトを作成/指定され、それらの間でメッセージを渡すだけです。 ビューのみにインターフェースがあります。モデルには静的メソッドがあり、作成されないため、インターフェースは不要です。別のモデルが必要な場合、プレゼンターは静的クラスメソッドの別のセットを呼び出します。モデルは静的であるため、プレゼンターへのリンクはありません。 個人的な考え 私が提示したすべての異なるバリエーション(ほとんどはおそらく何らかの形で使用しました)から、さらに多くのバリエーションがあると確信しています。A3は、MVPの外でビジネスロジックを再利用可能に保つこと、A2はデータの重複を減らし、発生するイベントを減らすことを好みます。C1は別のクラスに追加しないため、少量のユニットテスト不可能なロジックをビューに入れます(ドメインオブジェクトの視覚化方法)が、これはコードレビューするか、アプリケーションで単に表示することができます。ロジックが複雑な場合、アダプタークラスに同意しますが、すべての場合に同意するわけではありません。セクションDの場合、D1はメニューの例としては大きすぎるビューを作成すると感じています。以前にD2とD3を使用しました。D2の問題は、イベントをプレゼンターとの間で適切な子ビューにルーティングするために大量のコードを記述する必要があり、ドラッグ/ドロップ互換性がないことです。新しいコントロールごとに、単一のプレゼンターをサポートするためにより多くの配線が必要です。D3は私の好みの選択肢ですが、ビューが非常に単純であるか、再利用する必要がない場合でも、ビューを処理するプレゼンターおよびモデルとしてさらに多くのクラスを追加します。D2とD3の混合物は、状況に基づいて最適だと思います。セクションEに関しては、インターフェースを持つものはすべてやりすぎだと思うので、ドメイン/ビジネスオブジェクトに対しては既にそれを行っており、そうすることで「デザイン」に利点がないことがよくありますが、テストでオブジェクトをモックするのに役立ちます。個人的には、E2を古典的なソリューションと考えていますが、E3は以前に取り組んだ2つのプロジェクトで使用されています。D2とD3の混合物は、状況に基づいて最適だと思います。セクションEに関しては、インターフェースを持つものはすべてやりすぎだと思うので、ドメイン/ビジネスオブジェクトに対しては既にそれを行っており、そうすることで「デザイン」に利点がないことがよくありますが、テストでオブジェクトをモックするのに役立ちます。個人的には、E2を古典的なソリューションと考えていますが、E3は以前に取り組んだ2つのプロジェクトで使用されています。D2とD3の混合物は、状況に基づいて最適だと思います。セクションEに関しては、インターフェースを持つものはすべてやりすぎだと思うので、ドメイン/ビジネスオブジェクトに対しては既にそれを行っており、そうすることで「デザイン」に利点がないことがよくありますが、テストでオブジェクトをモックするのに役立ちます。個人的には、E2を古典的なソリューションと考えていますが、E3は以前に取り組んだ2つのプロジェクトで使用されています。 質問 MVPを正しく実装していますか?適切な方法はありますか? バリエーションのあるマーティン・ファウラーの作品を読んだことがあり、MVCを始めたとき、コンセプトを理解していましたが、エントリポイントがどこにあるのか、すべてが独自の機能を持っていますが、オリジナルを制御して作成するものは元々理解できませんでしたMVCオブジェクトのセット。

6
「次はどのプロジェクトに取り組むべきか」ではなく、「次はどの言語を学ばなければならないのか」というのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私のような初心者プログラマーが、取り組むべき次のプロジェクトについて尋ねるのではなく、習得すべき次の言語について常に尋ねるのはなぜですか? エリックレイモンドが、「ハッカーになる方法」エッセイの「プログラムの学習方法」セクションで、言語を学ぶべき順序(プロジェクトに取り組むべき順序)について話しました。 初心者の大工は「ハンマーの使い方を知っています...次に鋸やレベルの使い方を学ぶべきですか?」 私が取り組むことに興味を持っているほとんどすべての有意義なプロジェクト(たとえば、Webアプリ、ポーカー分析ツールのセット)を見つけるには、十分な数の言語(Python、C、HTML、CSS) 、Javascript、SQL)およびフレームワーク/ライブラリ(wxPython、tkinter、Django)を実装します。 おかげで、 マイク

4
受け入れテストケースの作成
SCRUMプロセスにテストプロセスを統合しています。私の新しい役割は、後で自動化するためにWebアプリケーションの受け入れテストを作成することです。テストケースの作成方法について多くのことを読みましたが、複雑なWebアプリケーション用のテストケースを作成するための実用的なアドバイスを提供してくれる人はいませんでした。 テストケースは短くする必要があります。CMSの例を取り上げます。短いテストケースは、保守が容易で、入力と出力を識別するのが簡単です。しかし、長い一連の操作(たとえば、ドキュメントの追加、他のユーザーへの通知の送信、他のユーザーの返信、ドキュメントの状態の変更、ユーザーへの通知など)をテストする場合はどうでしょうか。むしろ、テストケースは完全なシナリオを表す必要があるように思えます。しかし、これにより、明らかに複雑なテスト文書がどのように生成されるかがわかります。 テストでは、入力と出力を特定する必要があります。:動作が異なる、相互作用するフィールドが多数ある長いフォームがある場合はどうなりますか。すべてに対して1つのテストを作成しますか、それとも1つのテストを作成しますか? テストケースは独立している必要があります。しかし、アップロード操作のテストに接続操作の成功が必要な場合、どのように適用できますか?そして、それはテストケースの作成にどのように適用されますか?各操作に対してテストを作成する必要がありますが、各テストはその依存関係を宣言しますか、それとも各テストのシナリオ全体を書き換える必要がありますか? テストケースは、軽く文書化する必要があります。この原則は、アジャイルプロジェクトに固有のものです。それでは、この原則を実装する方法について何かアドバイスはありますか? 受け入れテストケースの作成は簡単だと思っていましたが、私がしなければならないすべての決定に圧倒されました(参考:私は開発者であり、プロのテスターではありません)。私の主な質問は次のとおりです。複雑なアプリケーションの保守可能な受け入れテストケースを作成するために、どのような手順またはアドバイスがありますか。ありがとうございました。 編集:私の質問を明確にするために:受け入れテストは要件から開始し、アプリケーション全体をブラックボックスと見なす必要があることを認識しています。私の質問は、テストドキュメントを作成し、テストケースを特定し、テスト間の依存関係に対処するための実用的な手順に関するものです...複雑なWebアプリケーションの場合

4
データベースの観点からリアルタイムデータを処理する方法
私は念頭に置いて考えていますが、それでもデータベース領域を混乱させます。 ことを想像し、私はリアルタイムデータを表示したい(し、最新のブラウザ技術の一つを用いてウェブソケットは -にも使用して古いブラウザを、それが何をしているのか、誰もすべての観測(ユーザーのブラウザ)に表示するために非常に簡単です)。 レミー・シャープは、これについての単純さについての例を持っています。 しかし、私はまだデータベース部分を取得していません、どのようにフィードするのですか?データベースに接続された各ユーザーのパスを保存し、クライアントが何が起こっているのかを見たい場合は(Remy game Tronを使用して)想像してみましょう5秒の遅延が、彼はその瞬間まで、その、5秒だけでなく、表示されます時間に継続を ... そのようなDBにクエリするにはどうすればよいですか? SELECT x, y FROM run WHERE time >= DATEADD(second, -5, rundate); 推奨されるパスではありませんか? そして、このxをx時間で引き出します...これは、実際のデータフィードが正しくありませんか? 誰かがデータベースの観点を理解するのを手伝ってくれるなら、私は大いに感謝します。
14 database  sockets 

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