ソフトウェア工学

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

2
プロジェクトマネージャーがクライアントと同じプロジェクトをどのように処理しますか?
私は、すでに知っている会社で新しいプロジェクトに取り組むフリーランスワーカーです。私の上司(会社の所有者)は、以前に作業するウェブサイトプロジェクトをくれましたが、彼はプロジェクトマネージャーを任命して進捗状況を確認しました。しかし、私の最新のプロジェクトでは、ここでのセットアップは少し異なります。 上司も私にこのプロジェクトを割り当てました。彼は一週間のうち二日だけオフィスにいる。クライアントとの最初のミーティングの後、私は彼/彼女に紹介されなかったので、誰が首相であったのかと思いました。上司にほとんどの場合、PMに報告する方が簡単でアクセスしやすいので報告するほうがいいと言ったとき、そのときにPMはクライアントと同じ人物であると彼は私に通知しました。ちょっとショックでした。私は彼にその取り決めに何か間違っていると思ったことをすぐには伝えたくなかったが、今のところこのプロジェクトにはこだわっている。 そのため、私は週に1回クライアントと直接連絡を取ることになりました。これはいくつかのケースでは良いことですが、上司が数分間だけ座っている間、長期間彼に会う責任があります。特に数か月続くプロジェクトの場合、私はプロジェクトマネージャーとプログラマーの両方の仕事をしているように感じます。 私は彼をプロジェクトに引用していませんでした-首相/クライアントが上司に見積もりを送信し、上司はそれに基づいて支払いを処理しています。**彼はプロジェクトのスケジュールも管理しています。だから私は目標を達成するために慎重に足を踏み入れようとしています。 私の最大の懸念は、しかし、良いコミュニケーションの欠如です。PM /クライアントは、技術的な傾向があまりなく、時々私が認識しているものと微妙に異なる目標を述べ、作業しているツールの手段を超えていることを求めます。私の上司は、広い意味で状況を説明するのが得意ですが、私が言ったように、彼は常に対応できるわけではなく、オンラインでの応答がかなり遅いです。 基本的に、専用のPMが欠けており、私、上司、およびPM /クライアントの間のコミュニケーションはまばらです。自分の進捗状況を追跡してパフォーマンスを向上させ、プロジェクトのタスクを誤って解釈しないようにするにはどうすればよいですか?行き詰まったり、圧倒されたりせずに、受け取ったコミュニケーションと歩調を合わせたいです。 私は対面での接触を好みます。オフィスの他の全員が日常的にオフィスで働いているPMと話し合うことで進捗状況を更新し、プロジェクトがよりスムーズに進みます。私の上司は、彼らの1人がこのプロジェクトに取り組むことには興味がありません。なぜなら、彼の現在の仕事からはかなり時間がかかると彼は言っているからです。私はこのプロジェクトでより多くのコミュニケーションを強制したいのですが、上司は助けるために多くをしていません。 [編集]さて、ここに更新があります。結局のところ、私たちのクライアントは、範囲外であることが判明した他の機能を要求していて、私たちが使用しなければならないCMSは、これらの機能をそれほど簡単に追加することを許可していませんでした。私の上司と私は時間と予算の本質で彼の要求のいくつかを取り消しました、そして先週クライアント/ PMは不満に終わって、プロジェクトを無期限にキャンセルしました。 将来的には、クライアントとPMを兼務するこのような取り決めは避けます。それは誰かがプロジェクトの方向性をはるかに制御しすぎると思います。

3
Djangoリファレンスはありますか?
Djangoは初めてです。公式トピックガイドhttps://docs.djangoproject.com/en/1.3/は、学ぶのに最適な場所です。しかし今は、オブジェクトが持つメソッド、オブジェクトがとる引数、オブジェクトが返すものなどを確認するためのクイックリファレンスが必要な場所にいます。PythonドキュメントやJavaドキュメントのようなものです。チュートリアルよりも参照の方が多い。公式ドキュメントはチュートリアルスタイルであり、必ずしもすべてのメソッドへの参照があるとは限りません。 ここで何か不足していますか?誰にとってもDjangoの公式ドキュメントで十分ですか?

1
ヘルプが必要-PHPスケジューラクラスのブレインストーミング
私は、PHPクラスをゼロから作成したことがありません。でも、どこかから始めないといけないと思いますよね?アイデアはありますが、ロジックの助けが必要です。ご感想をお聞かせください。以下は明らかに速記です。計画段階。 Class - -> type (recurring, single, day) -> Recurring days (4,2,3,4,1,2....etc. for odd schedules- need even pairs) -> Shift Type (onshift, vacation, medical, etc...) -> Emp Id -> Start -> End -> Location Id -> Hours per day -> Day start time get schedule ( by account/location/company/unit/crew/individual ) select …
8 php  mysql 

1
3層システムの定義
人々は「3層(またはn層)アーキテクチャ」に従っているとしばしば主張し、時にはドメインモデルに切り替えると主張することもあります。しかし、私はこの神秘的な「3層アーキテクチャ」が何であるかを本当に理解したことがありません。正式な定義がないようです。ドメインモデルパターンを説明およびデモする参照や例は数多くありますが、3層への参照は、コードをUI、ビジネスロジック、およびデータアクセスレイヤーに分離することを示唆しています。そして、それは彼らが言うように見えるすべてです。 私が特に奇妙だと思うのは、ドメインモデルは、この3層のパラダイムを完璧に具現化したものだということです。ORMファイルとマッピングファイルはデータアクセスレイヤー、ドメインはビジネスロジック、UIはUIです。それではなぜ人々はそれが新しい何かであり、彼らが切り替えるべきものであるかのように話すのですか? ドメインモデルを実装している人を見る前は、ほとんどのアプリケーションはUIであり、ロジックはUIとSPに分割されたストアドプロシージャにアクセスしていました。「UI」、「BLL」、「DLL」と呼ばれるいくつかのアセンブリが時々ありましたが、通常これらは単にUIとSP間のメディエーターであり、ロジックがランダムに分散するためのより多くの場所を残しました。 では、この神秘的な「3層」アーキテクチャとは何でしょうか。それは本当に存在していますか?もしそうなら、それがうまく実装されている例はどこにありますか?

4
コーディングと単体テストはDRY原則に違反していますか
ドライ原則は次のように述べています: 「すべての知識は、システム内で単一の明確な権威ある表現を持つ必要があります。」 ただし、コードのテストを作成するときは、システムの予想される動作を2回記述します(コードで1回、テストで1回)。私は両方の説明が異なる視点からのものであることを知っていますが、根本的なアイデアの多くを共有しています。 これについて何か考えはありますか? 一般に、ユニットテストとDRYの原則はどちらも優れたアイデアであり、可能な限りそれらを適用しようとしています。この質問はもっと哲学的なレベルのものですが、誰かもこれについて考えているのではないかと思いました。
8 testing  dry 

6
Cの配列の目的は、ポインターがその仕事を果たした可能性があるときは何ですか?
配列とポインターはCでは同じものではありませんが、それらは関連しており、同様に使用できます。これまでのところ、全員が同意しています。 しかし、ポインタがCに含まれていた理由はわかりません。 配列表記(たとえば、a [5]またはint a [4] = {0,1,2,3};)を削除することは言っていません。これは非常に便利で便利です。しかし、見栄えをよくするために、ポインタと同じように(同じように)同じ表記を使用することもできます。したがって、配列表記は配列を持つ理由ではなく、単に表記です! 私が目にする唯一の違いは、配列は定数ポインタであり、それらが指すメモリのサイズは変更できないことです。しかし、これはポインタを使用して、正確にそれらを一定にすることによっても達成できます(メモリは固定サイズではありませんが、これが問題であるかどうかはわかりません)。 それでは、なぜポインタだけではなく、プログラマにポインタの動作(つまり、定数、定数ではなく、固定サイズ、可変サイズなど)を決定させるのでしょうか。
8 c  pointers 

3
プログラムの改訂履歴情報をユーザーに提供しますか?
私が維持しているプログラムの制限の1つは、エンドユーザーは多くの場合、どのような変更が加えられたかを知らないことです。これを修正するために、プログラムに加えられた変更の簡略化されたリストをユーザーに示したいと思います。更新が簡単なリストを作成し、それをユーザーインターフェイスにフィードできるようにするための適切な方法論/アプローチはありますか? 例:フォームに読み込まれるすべてをXMLファイルに保存する必要がありますか?変更履歴をデータベースに入れるべきですか? 注:プログラムはWinforms(C#4.0)です。 更新 優れたフィードバックに基づいて、SQLiteを情報ストレージとして使用することを決定し、ユーザーにTreeViewコントロールの変更の時系列リストを提供します。

2
デプスマップイメージを使用して3Dアナグリフを作成するアルゴリズムはどこにありますか?
この例のように、元の画像とその黒/白の深度マップから始まる赤/シアンのアナグリフを計算するための一般的なアルゴリズムを探していますか? このアルゴリズムは、たとえばPhotoshopで使用されていますが、それを再現するための読みやすい説明が見つかりません。
8 algorithms  3d 

7
よく知らない言語で次のプロジェクトをコーディングする「販売」
次の作業プロジェクトを(Python)に慣れていない言語でコーディングしたいと思います。私の見解からは、なぜそれが良いアイデアなのかを考えることができます。しかし、私のマネージャーはおそらく私に理由を尋ねるでしょう。私は彼の観点からは利点に少し困惑しています。 編集:私は通常C#でコーディングします EDIT2別の言語でコーディングしたい私の理由。 それは簡単なプロジェクトをはるかに難しくするので、私はもっと学び、それはより興味深いものになります Pythonに関する本を読んだところです。ビジネスアプリケーションに適用する機会が欲しいので、適切に理解します それは私のスキルセットを増やし、私をより雇用しやすくします Pythonは面白そう

3
正確なリリース変更ログを生成する最良の方法は何ですか?
リリースごとに正確な変更ログを提供したいプロジェクトに取り組んでいますが、手間をかけずに機能する変更ログを収集する方法が見つかりませんでした。問題は主に、バージョン間の時間が長く、各バージョンに多くの機能とバグ修正が同梱されている場合、およびソフトウェアに複数のブランチが同時に開発されている場合です。 私が検討したいくつかのオプション: コミットメッセージから変更ログを作成し、開発者が変更ログの行を作成する場合と同じようにメッセージを書き込むように要求します(実際には変更ログを作成します)。 複数のブランチがあり、ブランチ間でマージする場合は機能しない可能性があります(どのコミットが最終的にリリースで終わったかを知るのは難しいかもしれません)。 コードの変更ごとに、バグ追跡システムに対応するチケットが必要であることを要求します。変更ログは、チケットに基づいて書き込むことができます。 開発者は、特にバグの修正よりもチケットの作成に時間がかかる場合は、マイナーな変更のチケットを作成するだけでもイライラするかもしれません。 開発者がコードに変更を加えると同時に、常に変更ログを(プロジェクトルートのテキストファイルとして)更新する必要があります。 自動化できる手作業のように感じます。 プロジェクトマネージャーに、現在のバージョンと以前のバージョンの差分を取り、変更されたことがわかったものに基づいて、その時点で変更ログを書き込むよう依頼します。 リリースの責任者のための余分な作業。コードを見ただけでは、変更の実際的な効果が何であるかは明らかではない場合があります。 リリース予定の機能のみを出荷してください。コーディングを始める前でも、変更ログを書き込むことができます。 ウォーターフォールモデルを使用していない限り、実際のオプションではありません。 私はこれらのそれぞれまたはそれらのバリエーションを過去に使用したことがありますが、それらはあまりにも信頼性が低く、面倒で、堅固でした。問題を解決する方法について魔法の弾丸または良いアイデアを持っている人はいますか?



1
作業ユニットパターンを使用したビジネスレイヤーとリポジトリの接続
私の質問は、Stack Overflowでのこれと同様です。ビジネスレイヤー内で作業ユニット/リポジトリを使用する正しい方法は何ですか? シナリオ: .Netソリューション DBからオブジェクトを取得するために使用されるIRepository IUnitOfWorkを使用して複数のリポジトリ間でトランザクションを許可 これは私には理にかなっていて、私はこれらの線に沿ってうまく機能する何かを実装しました。ここで、ビジネスロジックレイヤーを紹介したいと思いますが、3つの要素(BLL、UnitOfWork、およびリポジトリ)を整理することに頭が悩んでいます。 私の理解: リポジトリ-データの取得、操作 UnitOfWork-永続性 BLL-ビジネスに関連するロジック(「現実世界」)(その用語は嫌いです!) ASP.Net MVCフロントエンドがあるとします。 BLLはどのように見え、それを使用するMVCコントローラーはどのように見えますか? 参考までに:私のIUnitOfWork / IRepository実装が私の混乱の根本的な原因であるのではないかと思います。 public class IRepository<T> { private IObjectSet<T> objSet; public IRepository<T>(IUnitOfWork uow) { objSet = uow.CreateObjectSet<T>(); } public IQueryable<T> Add(T entity) { objSet.Add(entity); } //etc. etc. for delete, attach, getall } したがって、BLLがある場合は、それをIUnitOfWorkに渡して、必要なIRepositoryインスタンスを作成できるようにする必要があるように感じます。しかし、BLL(フロントエンドとは別のDLL)は、ビルドするIRepositoryの実装をどのように「認識する」のでしょうか。

4
ネストされたループのBig-O
Big-Oでこの投稿を読ん でいます。次のコードはO(n ^ 2)であると表示されています。 bool ContainsDuplicates(String[] strings) { for(int i = 0; i < strings.Length; i++) { for(int j = 0; j < strings.Length; j++) { if(i == j) // Don't compare with self { continue; } if(strings[i] == strings[j]) { return true; } } } return false; } しかし、なぜか分かりません。 …

4
追加/編集機能を組み合わせるのが望ましい場合、およびそれらを別々に保つ場合はいつですか?
アイテムを追加または編集する必要がある状況に定期的に遭遇し、追加と編集に別々のメソッドを使用することもあれば、それらを1つのメソッドに結合することもあります。 ある方法が他の方法よりも優先されますか?もしそうなら、なぜですか? public void AddItem() { ShowEditingPopup(new Item(), "Add Item"); } public void EditItem(Item item) { ShowEditingPopup(item, "Edit Item"); } または public void EditItem(Item item) { ShowEditingPopup( (item ?? new Item()), string.format("{0} Item", (item == null ? "Add " : "Edit ")) ); } どこShowEditingPopupのように定義されます public void ShowEditingPopup(object popupDataContext, string …

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