ソフトウェア工学

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

8
アジャイルのメリットを享受するために最低限必要なチームサイズはありますか?
私は、開発チームの規模を繰り返し削減している会社で働いており、以前の10人のチームは、製品ごとに1人の開発者(および5つの製品間で共有された2、3人のテスター)になりました。私たちは以前、かなり大きなプロセスを要し、大企業からのスピンオフであり、その多段階ウォーターフォールプロセスを継承していました。 ソフトウェアを十分な速さでリリースしていないこと、およびこれがプロセスの障害である可能性が高いことが経営陣から判明しました(90%の人員の損失はおそらく助けにはならなかったものの、それが原因である可能性があります)。設計ドキュメントの作成などに時間を費やさないようにするために、アジャイルプロセスに移行するよう強く求められてきました。 アジャイルへの切り替えが一人のチームで役立つかどうかについて私はちょうど興味があると思います。多くのメリットは、チームメンバー間の可視性の向上とコミュニケーションの向上から得られると私は理解していましたが、私は自分のしていることを理解しており、マネージャーもそうです。とにかく製品をテストする人がいないので、私はすでにTDDを行っています。 TL; DRバージョン:私が本当に求めていることは、1人の「チーム」でアジャイルを実装できますか、それから何かメリットがあると思いますか、それとも通常、大規模なチームにとってより効果的なものですか?
8 agile  team 

6
上司が開発者に提供できる最大のサポートは何ですか?
最高のハードウェアを購入し、最も貴重なボーナスまたは報酬を支払い、それらを丁寧に扱い、改善の機会を提供するなど。 開発チームの生産性を向上させたいと考えています。最大のサポート(または一般的には良いサポート)と見なすことができるものを見たいので、そこから始めることができます。

4
ボーダーライン初心者はどうやってオープンソースに飛び込むことができますか?
すべてのオプションとプロジェクト、特にそれらのほとんどのサイズを利用できるので、オープンソースは初心者にとって非常に困難な場合があります。私の質問は、どのようにしてオープンソースのソフトウェアを助け、そこから学ぶことができるのでしょうか?どこから始めますか?どのファイルを最初に読み取りますか?初心者レベル以上のプログラマーが貢献を始めるのを助けるためのアドバイスはありますか?

3
非トランザクションデータベースと統合テスト
統合テストで遭遇すると思う1つの問題は、複数のテストが同じデータベースにアクセスすることです。現在、これは問題ではありませんが、同じデータベースにアクセスする複数のアプリケーションが存在することはわかっています。この問題が発生する前に回避する方法を考えているところです。 私がよく見たアイデアはトランザクションを使用することです。起動時にトランザクションを開始してから、ティアダウンでトランザクションをロールバックします。これは、同じデータベーステーブルにアクセスする複数のテストが互いに影響を及ぼさないことを意味します。私の問題は、私の場合、MySQLで使用しているテーブルの85〜95%がトランザクションをサポートしないMyISAMであるということです。 トランザクションをサポートしないストレージエンジンを回避する方法はありますか?それでも、複数のテストが互いに影響を与えずに同じテーブルにアクセスできるようにしますか?私が聞いたところによると、Ruby on Railsテストフレームワークはこのようにトランザクションを使用しますが、どのようにしてこの問題を回避しますか(またはそれらを行いますか)?

5
カスタムとブラウザネイティブのスクロールバー
Webアプリケーションに、カスタマイズ可能なJavaScriptベースのスクロールバー(および一般的なスクロール機能、つまりコントロールをマウスのスクロールホイールにバインドする)を含めると、魅力的です。 しかし、私が見つけたすべての解決策は個人によって開発されました(正式なサポートや将来のサポートの欠如と同じです)。さらに、それらを使用している主流のサイトを覚えていない。 私の特定のケースでは、非JavaScriptまたはIE6 / odd-browser環境はサポートされることを意図していません。 今日、カスタムスクロールバーは避けるべきですか?そうでない場合、選択できる最良のオプションは何ですか?

8
60年代から70年代のメインフレームを使用する企業/学術センターはまだありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 若いソフトウェアエンジニアとして、パンチカードや「部屋と同じ大きさのコンピューター」の時代について他の同僚がよく話しているのをよく耳にします。 私が持っているコンピュータの初期の記憶には、MS DOSとWindows 3.1が関係しています。 私の質問は、1960年代から70年代のメインフレームを日常業務に使用している企業、学術センター、政府機関はまだあるのかということです。 もしそうなら、訪問者がそのような機械を職場で見ることができる場所を考えることができますか?そのような作品を所蔵している美術館がいくつかあることは知っていますが、機能している美術館とは思えません。
8 mainframe 

1
並列プログラミングライブラリ?(+いくつかの機能)
注:質問はスタックオーバーフローフォーラムには適さないと見なされており、ここに投稿する必要があったため、これは再投稿です。元のトピックはあります。 その作業を実現するために、マルチスレッド、並列処理、および現在利用可能なライブラリについてお話ししたいと思います。特に、この概念を実現するための使いやすいライブラリ(以下を参照)が既に存在するのか、それとも作成する必要があるのか​​、そしてそれがどれほど難しいのかについて疑問に思っています。 私が探しているライブラリの目的: エンジニアや高卒者だけでなく、ほとんどの開発者がアクセスできます(これは、開発者がそれを恐れずに使用したいことを意味します)。 C ++開発者が利用可能 ポータブル(Windows、Mac OS X、Linuxから始めて、モバイルデバイスに拡張) 軽量 使いやすい(アクセシビリティに関連) 私が探している最も重要な機能: タスクの並列処理 タスクのキャンセル(ソフトで突然の方法) タスクの依存関係 既存の関連ライブラリ: スレッドビルディングブロック:使用が非常に複雑で、制限のあるライセンス(GPL /商用)、これは私が見つけた唯一のライブラリで、探しているすべての機能が含まれています Grand Central Dispatch:現在移植性がなく、複雑すぎず、タスクのキャンセルなし(開始後)、タスクの依存関係なし、自動依存関係サポートなし(手動のみ) PFunc:Unixのみ、まだ少し複雑、タスクの依存関係なし、タスクのキャンセルなし Microsoft Task Parallel Library:MSプラットフォームと.NETのみ、ハードキャンセルなし、制限された手動のタスク依存関係(1つのタスクが他の複数のタスクを起動することはできません) OpenCL:現在、すべてのプラットフォームで使用できるわけではありません。GPU並列タスクライブラリほどではありません(希望するほど高レベルではありません)。 OpenMP:Visual Studioの無料バージョンを除いて広くサポートされており、タスクのキャンセルや自動タスクの依存関係はありません これらすべてについてどう思いますか?これらのニーズに対応するライブラリが少ないのはなぜだと思いますか?それとも私はいくつかの素晴らしい図書館を見逃しましたか?そして、それはそれを達成するにはあまりにも多くの仕事を意味すると思いますか?それとも十分に面白くないですか?私が書いた不足は、いくつかの検索で判明したものであり、私はこれらのライブラリの専門家ではありません。 このライブラリの最終的な目的は、たとえそれが夢であったとしても、シーケンシャルプログラミングで通常行うのと同じくらい簡単に並列化された方法でプログラミングすることです。 セイロ

4
元フルタイムの雇用主のために契約作業を行うのは良い考えですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 仮定: 従業員と会社は仲良く別れている 新しい会社は、新しい仕事の邪魔にならない限り、少しの契約作業で問題ありません。 前の会社は助けを求めており、従業員は週に数時間働くことをいとわない 元フルタイムの雇用主のために契約作業を行うのは良い考えですか? 誰かこれをしたことがありますか?どのようにうまくいきましたか?私はいくつかの落とし穴を見つけることができるので、それが本当に素晴らしいアイデアだと思います。オフィスの外で、他のプログラミングスタッフとは異なるスケジュールで開発作業を行う場合、どのような困難に遭遇し、どのようにしてそれらを克服することができますか? 先に進む場合、現在の給与と比較して、どのくらいの金額を要求することができますか?

5
MySQLをデータベースとして使用してASP.NET MVCアプリケーションを開発できますか?
データベースとしてMSSQLを使用しているASP.NET Webサイトを見てきました。少し前に開発しました。MySQLの場合、MSSQLだけが無料の代替手段として利用できるのはなぜですか。それで、問題は、MSSQLをASP.NETアプリケーションと同じくらい簡単にMySQLデータベースに統合することは可能ですか、そうするためにいくつかのAPIを使用する必要がありますか?

5
C#を使用してOOPに代わるメインストリームプログラミング手法はありますか?
プログラミング言語に関する限り、私はC#が大好きです。それは、.NETフレームワーク(LINQなど)からもたらされるすべての利点です。 私の主な懸念は、私はコードを大量に作り出しているようであり、OOPを使用することで、私のコードが必ずしも管理しにくいと心配しています。 C#と.Netを引き続き使用したいのですが、言語を適用してコード全体を減らし、テキストブックのOOPに比べて管理が容易になる他のアプローチはありますか? 前もって感謝します!
8 c#  paradigms 

3
Web APIはスペルミス/余分なパラメーターをどのように処理する必要がありますか?
質問:一般向けのWeb API(HTTP Get / Postリクエストを送信し、JSON / XMLデータを取得する)の場合、スペルが間違っているか余分なパラメーターをどのように処理する必要がありますか? 正しくないパラメーターが無視された場合、呼び出し元のコードのエラーは、有効な結果を返すため、気付かれないように思えます。これは、返された結果を見ても明らかではない状況で特に当てはまる可能性があります。 オプションのパラメーターのみを参照しています。明らかに、必須パラメーターのスペルが間違っている場合、パラメーターは欠落していると見なされ、エラーが返されます。 例として、Place Search API呼び出しには4つの必須パラメーター(位置、半径、センサー、キー)といくつかのオプションパラメーター(タイプはそのうちの1つ)があります。 これらのコマンドを(APIキーを使用して)実行し、有効な結果を取得できます。 curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&type=bakery" curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&types=bakery" 最初のコマンドには、「types」パラメーターが単数形であり、これは無効なキー名です。APIはそのパラメーターを無視し、すべてのタイプのエンティティを返します。この場合、エラーは明白ですが、発生しない場合(および他のAPI呼び出し)がある場合があります。

5
アプリを最初にリリースするとき、将来のリリースに備えて機能の一部を保留しますか?
このサイトが初めてなので、これが間違ったセクションであるとすみません。 アプリの開発を始めて、最初にアプリをリリースするときのベストプラクティスは何なのかと考えています。開発者は、ユーザーをアクティブに保つために将来の更新のためにいくつかの機能を保持する傾向がありますか、それとも可能な限り最も完全なアプリをリリースしようとしますか? 基本的に、アプリをできるだけ早くリリースし、定期的にアプリ全体にアップデートすることをお勧めしますか、それとも完全に開発されてアップデートの見込みが少なくなるまでリリースするまで待ちますか? 編集:答えてくれてありがとう。私は現在、アプリを設計し、考えられるすべての機能を書き留めており、最初のリリースに含めるものに優先順位を付けようとしています。与えられた回答に基づいて、準備が整い次第MVP(用語のおかげで)を入手し、ビルドされたらすぐに新しい機能で更新すると思います。ビルドされた機能を後回しにするのではなく、起動前にすべてをビルドする必要があるか、必要なものだけをリリースしてから他のビルドを行うかで、引き裂かれていました。 私の知る限り、これはクローンではありません。それは私の最初のアプリですが、私はそれを学習体験として使用します

7
「PHP Way」とは何ですか?
特定のフレームワークまたはアプリケーションの説明を「Pythonic」、特定の人物を「Perlハッカー」、または「真のRubyコード」など、「Way」への参照が常にありますが、「PHPハッカー」はどこにあるのでしょうか。 「PHP-ic」アプリケーション、「真のPHPスタイル」? これは私に考えさせました-PHPは明確なスタイルさえ持っていますか?PHPが他のスタイルに簡単に「変更可能」であると言っても、妥当な言語であれば同じことが言えるので、カウントされません。 どんな入力でも大歓迎です。

2
どうすれば「知る」ことができますか?
私の会社は私を助けてもらうために求人情報を投稿しました。今日採用担当者から電話があり、彼が言い続けたのは「MVC this Entity Framework that ...」だけでした-プロジェクトがWinFormsとASP.NET WebFormsでDataSetsとLinq2Sqlを使用すると言ったとき、彼はショックを受けました。 それから私は自動化されたウェブサイトのテストのためのオプションを探していて、ここでこれに出くわしました:そして私は興奮し始めました。 「知っている」ほとんどの人は、プレゼンテーションレイヤーを使用してASP.NETを非常に薄くしているため、NUnitAspのようなツールは役に立ちません。 この人は知っている、そして彼の友人は明らかに知っている。知らないうちにいると不安になり、少し悲しくなります。 この1年で時代に対応するための取り組みの中で、Linq2SqlとUnityコンテナーの大きなメリットを実感しました。どちらも私にとっては良いものでした-何年にもわたって私には明らかだったギャップを埋めることです。 その後、WinForms GUIのModel-View-Preseneterに移動しましたが、同じ理由で再びとても満足していました-長い間、私はシッククライアントとWebを分離できるように物事を分離する方法を求めていましたクライアントは共通のコードベースで共通のロジックを共有します。 しかし、私は次のことに苦労しています。そして、私は無数の人々が間違っていることはないことを知っています、そして私は大衆より賢くありませんが、私は見るために助けが必要です: WebFormsの進化としてのMVC WinFormsの進化としてのWPF Linq2Sqlの進化としてのエンティティフレームワーク(そして、さらに言えば 、データセットの非推奨) (これはすべて、これまでのところ、テストファーヴェルニュゲンを入手できなかったことに起因していると思います) したがって、私は自分自身に尋ねてきました。 WebアプリケーションでMVCを使用すると何が得られますか?追加のソースコードアーティファクトと新しいDSLを習得することを知っています。ほかに何か? MVVMパターンなしでWPFオブジェクトを使用するとどうなりますか?どこか他の場所に就職するチャンスを傷つけませんか? それに関して、WinFormsは本当に壊れているのですか?それは私ですか、それとも、8ギガのRAMを搭載したデュアルコア2.8 GHZマシンでVisual Studioに顕著な視覚的遅れがありますか?私はきびきびと好きです。エンドユーザーにはいつでもスッキリと体験して欲しい。 データセットが「古い方法」である理由 それらは、私が解決しなければならない多くの中小規模の問題に対して、迅速かつ効率的で簡潔に見えます(ただし、Silverlightにさえありません)。 プレートには複雑な山がたくさんあり、それを広げても消えないように感じます。本質的な量の複雑さは正面から向き合う必要があり、おそらくソフトウェアエンジニアリングは電気工学や機械工学、または脳外科手術のようになるはずです。

5
仕事の同僚が、維持しようとしている設計を理解していない場合の対処方法[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私が取り組んでいるソフトウェアプロジェクトには、私と別のプログラマが関わっています。プロジェクトには、MVCフロントエンドを備えたエンジンバックエンドが含まれていました。最初はプロジェクトで多くの作業を行っていたので、主に抽象化とテンプレート戦略を取り巻くいくつかの簡単な設計方法論をセットアップしました。 かなり長い間、私はエンジンのバックエンドを離れて、ウェブサイトで働いていました。しかし、いつかエンジンに戻る可能性があるとの情報を得たので、私はまだエンジンに興味を持っています。 プロジェクトは非常に厳しい締め切りにあるので、私たちは皆、フロントエンドとバックエンドの両方で完成させるために作られたように急いでいます。 私は自分が優れたプログラマであるとは思っていません。そのため、特定のデザインや方法論を人々に強制したり、実行したりすることはありません。より良いソリューションを考え出す。しかし、私はこのエンジンコードに変更が加えられていることに気づきました。私が開発者に別の方法で作業を提案するよう提案したとき、厳しい締め切りを考慮してもメリットはほとんどないため、彼はポイントを理解していないと述べました。 彼が入れたハックはリリース後にさらなる開発を意味する可能性があることを試して説明する必要があり、今すぐ修正できるときに他の人にスラックを拾わせるのは公平ではないと思いました。私は自分がやったことを30分ほどかけて過ごしましたが、その最後に、彼はコードをほとんど書いて、コピーできるようにしてほしいと頼みました。 私が最初に設定したものの基礎は: 抽象クラスx xの具象インスタンスを作成するための抽象ファクトリクラス 何が起こったのかというと、抽象クラスにvirtual / abstraceメソッドとして簡単に配置でき、それに応じて新しい変更が抽象クラスの他のメソッドと同じ原則に従っているので、それに応じて実装できるifステートメントをいくつか置いていました。 これは私には取るに足らないことのように思えますが、関連するクラスを見せても、彼はこれを理解することさえできませんでした。 今私の質問は: 彼がこの概念を理解していたはずであると想定するのは、これは不公平ですか?私たちは厳しい締め切りにあることを理解していますが、それは取るに足らないことだと思いました。プログラマーは、少なくとも中間レベルであることが想定されています。 これは多くの場所で起こっており、私は常に彼に変化を起こさせようとしましたが、彼はそうではありません。無視してもいいですか? この問題を別の場所で提起するのか、それとも吸うだけでいいのか、プロジェクトを再開するときは、これらすべての変更を行ってみてください。 プロジェクトの彼の部分は完成しないので、私は戻って彼を助けなければなりません。私はあまり望んでいません。なぜなら、彼は素晴らしいとは言えないが、まあまあのアーキテクチャでプロジェクトを実行していて、達成しようとしていることを頻繁にフォローしていなかった多くの厄介なコードを実際に配置したからです。 質問が曖昧または不満である場合は、お知らせください。それに応じて編集します。 編集済み:計画されているフォローアップ作業と、私たちが当てはまらなかった作業が後で実施されることに同意されているため、プロジェクトは最初の締め切り後に続行される予定です。

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