タグ付けされた質問 「development-process」

ソフトウェア開発のプロセスに関する質問。

7
アジャイルプロセス:文書化する方法と内容
少し前、私が働いている会社は開発プロジェクトを第三者に外部委託していた。彼らはソリューションの開発にアジャイル手法を採用しました。しかし、ドキュメントを求められたとき、彼らはそれがwikiに組み込まれたり、彼らのスプリントの一部として組み込まれたりして、それが必要であるとだけ言ったでしょう。 彼らは、プロジェクトチームの1人を除いて全員がプロジェクトの完了時に出発しました。プロジェクトのwikiサイトは、年間サブスクリプションが満期になると閉鎖されました。 彼らが去ったとき、彼らは彼らと一緒に開発されたものについての知識と理解のほとんどを取りました。 だから私は2つの主な質問があります。 これはアジャイルにとっては正常ですか、それとも書きたくないという言い訳ですか? 開発要件、設計、主要な決定、およびコンテキストを記録するためのアジャイルプロジェクトの文書化に関する業界の基準は何ですか?

11
システムテスト用のソフトウェアをリリースするときに、新しい機能を追加せずにバグを修正することは正しいですか?
この質問は、経験豊富なテスターまたはテストリードに対するものです。これはソフトウェアプロジェクトのシナリオです。 開発チームが10の機能の最初の反復を完了し、システムテストにリリースしたとします。テストチームは、これらの10の機能のテストケースを作成し、テストのために5日間を見積もりました。もちろん、開発チームは5日間アイドル状態にすることはできず、次の反復のために10の新しい機能の作成を開始します。この間、テストチームは欠陥を発見し、いくつかのバグを提起しました。バグは優先順位が付けられており、それらのいくつかは次の反復の前に修正する必要があります。問題は、すべてのバグが修正されるまで、新機能や既存の機能への変更を伴う新しいリリースを受け入れないことです。テストチームは、バグ修正に加えて新機能も導入する場合、テスト用の安定したリリースを保証できると述べています。また、反復ごとにすべてのテストケースの回帰テストを実行することもできません。 つまり、開発チームはバグ修正のためだけにコードのブランチを作成し、開発を続ける別のブランチを作成する必要があります。特にリファクタリングとアーキテクチャの変更により、より多くのオーバーヘッドがマージされます。 これが一般的なテスト原則であるかどうかに同意していただけますか。テストチームの懸念は有効ですか。プロジェクトで実際にこれに遭遇しましたか?

4
プロジェクトを引き渡す準備をするときに知っておくべきことは何ですか?
私は現在、かなり大きなWebアプリケーション(ASP.NET MVCスタック、約15万行以上のコード)の唯一の開発者/アーキテクトであり、開発の終わりが近づいています。そのため、プロジェクトを引き継ぐために何をする必要があるかについて考え始めており、将来プロジェクトを維持する必要がある人のために正しいことを確実にしたいと考えています。 プロジェクトを別の開発者またはメンテナンスの開発者チームに引き渡す準備をするときに知っておくべきことは何ですか?

6
それはいつやり過ぎになるのですか?
まず、コミュニティスレッドの作成方法がわからないことをお詫びします。誰かが私を助けてください。 開発者として、多くのプラットフォーム、テクノロジー、さらにはインフラストラクチャレベルで。私はいつも自分が質問しているのを見つけます。 私が始めて以来、それは終わりのない学習プロセスでした。私が学んだことの1つは、要件が長期間有効であることがほとんどないということです。そのため、少しの見通しは長い道のりになるかもしれません。 しかし、バランスはどこにありますか、そしてそれを得るのではなく、あなたが時間を失っているときをどうやって知るのですか?

5
製造vsソフトウェア開発[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 ソフトウェア業界は製造業に比べると未熟だとよく言われます。具体的には、プロセス主導であること。 質問:開発者は製造業のプロセスから学ぶことができますか?彼らのプロセスを採用することで、ソフトウェア開発の成功率を上げることができますか? 私の見解:製造において、製品の作成はプロセス主導型です。各人が特定の一連のタスクを実行する工場があるとします。作業者(またはロボット)は、一日中ねじを締めることがあります。次に、プロセスの次のタスクが次のスペシャリストによって実行されます。ワーカー(およびロボット)は、プロセスを妨害したり、「その場で」何かを作成したりしません。部品はプロセスを経てチャーンし、出力は完成品です。それはうまく機能し、企業は99.99966%の欠陥のない製品を実現します。企業は時間の経過とともに非効率を解消します。これは印象的であり、成熟した産業の兆候である可能性が非常に高いです。 定義されたプロセスの製造では、文字通り完成品を作成できます。これはソフトウェアには当てはまらないと思います。ソース管理、コードレビュー、チェックインシート、要件収集、SDLCなどのプロセスがある場合があります。ただし、これらのプロセスを実行しても、それ自体では完成品は作成されません。これらのプロセスは有益かもしれませんが、実際の作成とは直交しています。 あなたの会社が、何百万もの画像を検索して犯罪者の顔を見つけるソフトウェアを作成するように契約しているとします。重いプロセス主導の環境にもかかわらず、開発者は「オンザフライ」で物事を作成することに従事しなければなりません。その場で物事を行うことは、製造の精神に反しています。ロボットに意識されることなく、良い製造工程を実行できます。 人間の頭の中ではまだ十分に理解されていない複雑なアルゴリズムを作成するためには、その場で物事を作成する必要があります。ソフトウェア開発とは、プロセスの後に続くものではなく、コンピュータによって実行されるプロセスの作成です。それは根本的な違いです。開発に関係する直交プロセスがいくつあっても、作成に関しては常に「オンザフライ」で実行します。 私が話をする誰もが製造の考え方に同意しているようです。私は私の考えの中で一人ですか?

5
PreProdとProdの環境はどの程度似ている必要がありますか?
私は最近プロジェクトに参加したばかりで、リリース中に、それがプロダクションでは機能しないことに気づきました。他のすべての環境で動作しますが、別個のリリースチームがあり、サーバーと環境を自分でセットアップできないため、それらの構成を表示できません。 ProdのアカウントまたはIIS設定には異なるいくつかのユーザー権限があると思われるため、現在は作業しています。 だから私はこのすべてが私にとって学習経験であったと思います、そして同じことを再び繰り返されることを望みません。これらの環境はどのように異なるべきですか?PreProdは、同じユーザーアカウントのコピーを使用して同じデータベースのコピーを使用し、同じサーバーにインストールする必要があるなど、同じデータベースのコピーを使用してProd環境と同一のコピーである必要があると常に思っていました。 しかし、どれだけの距離を取るべきでしょうか?Webサイトが外向きの場合、PreProdは外向きにする必要がありますか?Webサイトに、ユーザーアカウントやパスワードを必要としないコンポーネントがある場合はどうなりますか?それを外の世界に公開しても大丈夫ですか?

6
大学生と開発プロセスを実装する方法
ソフトウェア開発者としての最初の仕事で、私のチームはアジャイル/スクラムを使用してプロジェクトのワークフローを管理しましたが、それはかなりうまくいきました。経験豊富なメンターが私を正しい方向に導いてくれました-私は彼らに大きな感謝の気持ちを抱いています。私はそこで数年間働いた後、数か月前に新しい機会に移りました。 現在の仕事に早送りします。私は大学の教授のもとで働いています。私は大学にいるので、ほとんどすべてのプログラマーは学生です(彼らは安価で豊富です!)私の上司には管理経験がありますが、ソフトウェア開発の経験はなく、ソフトウェアチームは常に上司の頭にいるわけではありません。 。これらの条件は、いくつかの非常に質の悪いソフトウェアを作成するための完璧な環境を作り出しました。ソフトウェアプロジェクトは少し悪党であるように見え、設計することを考えておらず、いくつかの本当に恐ろしい慣行を採用しています。物事が良くなることを知っています。 開発プロセスを実装して、全員を軌道に乗せ、コードの品質を向上させ、より安定したソフトウェアを展開したいと考えています。どこから始めればいいのかわからない。 私は、言うまでもなく、「スクラムを使用する」、「かんばんボードを設定する」、「アジャイルを見てください」などの回答を探していません。(アイデアは高く評価されますが)。具体的には、この作業環境の開発プロセスを実装する方法について洞察を得たいと思っています。従業員は通常、次に進む前の1〜2年の間に働き、一般的に経験が浅く、全員を含む毎日のスタンドアップミーティングをスケジュールすることはほとんど不可能です。 そのような職場では、品質、効率、コミュニケーションをどのようにして育てるのでしょうか。 更新:いくつかの回答とコメントを読んだ後、私はいくつかの追加の背景を提供すると思いました。 私は自分自身のソフトウェア開発の芸術のマスターを検討していないだろうが、私は思います、私はそれを見たときに悪いプログラミングを認識するのに十分な経験を積みました。開発者が1〜2分で作業した後、開発者が才能があるかどうかを判断できます。私は問題をスマートに解決する方法を見つける自分の能力に満足していますが、本当に経験が足りない領域は、他の開発者が関与するプロジェクト管理です(そのため、私はここですべての素晴らしい人々に助言)。 私は、このオフィスに来るすべての学生が完全な弱者であるように聞こえました。ここには悪い卵がいくつかありましたが、私が会った学生の大多数は知的で、学びたいと思っており、仕事に熱心です。一部はまだ始まったばかりで、何を知らないのか分からない。そして、それは大丈夫です。私がプログラミングを始めたとき、私は元気がありませんでした!

7
スクラムデイリースタンドアップミーティングでチェックインに関連しないディスカッションを行うことは許容されますか?
人々が私に潜在的に明白な質問を甘やかしてくれることを願っています。私は、毎日スクラムミーティングを行う多くの組織で働いています。一部の組織はチェックインにスクラムのみを使用することに非常に厳格です(「3つの質問」-昨日何をしましたか、今日何をしているのですか、ブロッカーはいますか)。他の一般的な傾向がある他の組織発表または詳細な技術的ディスカッション。 この記事のように、チェックインに関連しないこのようなディスカッションを許可することは誤りであるという意見を聞いたことがあります。スクラムミーティングは、スクラムマスターからの一般的な発表、技術的なディスカッションなどには使用しないでください。 これから私が目にした主な害は、会議が必要以上に長く続く可能性があることです(そして、私に関係のない詳細の議論に座ることを余儀なくされるのは面倒です)。 グループ全体に関連しておらず、「3つの質問」の一部でもないディスカッションは、スタンドアップの一部であってはならないことは明らかです。しかし、グループ全体に関連する他のアナウンスがあり、とにかく議論する必要がある場合、その時点で(個別の会議や電子メールではなく)アナウンスを行うことは有害ですか?

3
調査するとき、どのソフトウェア方法論に従うべきですか?
私は通常、実験のデータを分析し、実行する必要のある手順の一般的なスキーマがありますが、実験の詳細や背後にある質問に合わせて微調整する必要があるかもしれません。私は通常、唯一のコーディングです。 私はウィキペディアを見ましたが、どの方法論を使用できるのかわかりません。これまでフォローしたことがないため、データを調査してデータを調べたり、答えを求めたりするためです。(そして、私は自分のコードでテストしたり、特定の品質を期待したりすることがあまりないので) r関数tableがベクトルの順序に依存しており、それらを比較する要素の名前に依存していないことを発見した1〜2時間後に、この質問をするように促されました。それから私はいくつかのモックデータで使用した動作と機能をテストする必要がありましたが。しかし、他の分析の結果、情報が不足したためにテーブルを使用したため、テスト駆動型の開発方法論を理解できませんでした(正しく理解していれば)。ただし、プロジェクトに直面する方法が少し改善されたので、エラーをより早く検出することを除いて、より効率的になる可能性があると感じていますが、結果が疑わしい場合にどのようにして何を探すべきかを考えています。この例の間違い。 研究に最も適したソフトウェア方法論はどれですか。 私は基本的に、研究の特異性を維持するだけでなく、品質と時宜を得た進歩を確実にする方法を尋ねています。 私の仕事の例: 生物学者は質問を念頭に置き、実験を行うことで目的のデータ(つまり、2つの条件での遺伝子発現レベル)が得られることを知ってから、実験を設定し、10人/マウス/ラットからサンプルを収集します。 。次に、既存のライブラリとテストを使用して(または新しいテストを実装して)、これらの10サンプルのデータを分析する必要がありますが、生物学者が考えていた質問(つまり、ある遺伝子が他の条件よりも多く発現する)を考慮に入れます。構造は以前の実験(6つの条件と別の動物を含む)と同じですが、統計的検定、正規化、データ構造が変更される場合があります。そのため、私は通常、以前のバージョンをコピーして、現在のニーズに適合させます。

1
ウェブサイトのバージョン管理:dev / productionフロントエンドファイル
私は私たちのウェブサイトプロジェクトをバージョン管理するためのより良い方法を考えています。私はフロントエンドの開発者にすぎないので、VCSに関する深い知識はありません。 ワークフローは変化しており、過去のバージョン管理の習慣は時代遅れになっています。主な問題は、各Webサイトにフロントエンドファイルの2つの配列があることです。 開発環境(少ないファイル、非圧縮のjs、イメージなど)。「不正な」ビルド環境(すべて圧縮され、人間が読み取れないもの)。 ただし、ソースファイルを含むWebサイトを販売することはできません。まあ、それは完全に正しくないと感じています。 2つのリポジトリを持つソリューションがあります。1つはビルド、1つは開発で、gulpがビルドファイルをビルドディレクトリに送信します。しかし、それを維持するのは面倒であり、小さな会社では、それはそれほど素晴らしいとは思いません。それは多くのレポを作成し、人々はいくつかのレポで、時には1つのsvnレポでさえも管理しなければならず、問題が発生します。 したがって、同じsvn内のソースファイルとprodファイルの1つのリポジトリを持つソリューションもあります。ただし、Webサイトがローカルの開発サーバーから本番サーバーに移動するときに、ソースファイルを削除する必要があります(そのため、単一のリポジトリには、その場所、開発または本番に基づいて異なるファイルがあります)。私が聞いたことから、それは良くありません バージョン管理システムに関して、不適切なフロントエンドワークフローを管理する正しい方法は何ですか?

3
アプリケーションをゼロから設計する際に、ジュニア開発者をどのように関与させるのが最善ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私たちは3人の開発者(2人の経験豊富な開発者と1人のジュニア)のチームです。 私たちは真新しいプロジェクトを始めました。アプリケーションを設計し、適切なアーキテクチャを選択することに集中して取り組み、コードの最初の行を配置します。その中核、つまりアプリケーション全体の基礎となるものを書いています。 これも簡単なアプリケーションではありません。厳しいパフォーマンス要件、大規模に分散された複雑なエンティティモデルなど。 私たちは皆、特にジュニアの快適ゾーンの外にいます。彼は優れたデザインを事前に作成する経験がありません。私と他の開発者が助けを求めており、私たちは両方ともメンタリングとチームの構築を信じているため、それは問題ではありません。楽しい経験とスキルの最大量を学びます。 新しいプロジェクトには後輩がいないことに気づき、既存のプロジェクトでは後輩が学習し、刺激するための完全なコードベースを持っていたので、後輩にとっては簡単でした。しかし、このアプリにはほとんどコードがありません。始めたばかりです。 私たちはいくつかのアプローチを考えていました: 彼に数日間自分で試してもらい、コードに介入して一緒にリファクタリングし、正しい方向に彼を導き、次に繰り返す=>すべてのリファクタリングで彼の間違いを指摘するので、彼にとって楽しい経験ではないかもしれない; 彼に私たちの1人とプログラミングをペアリングさせる=>彼は単なる「傍観者」になり、実際に多くの情報を学習したり、多くの情報を要約したりせずに、私たちのすべてに同意するかもしれません。 各モジュールのスケルトンを構築し、しっかりとした設計で、不足している部分を追加するようにモジュールを彼に与えます=>私たちの後にピックアップするのは面白くないかもしれません。デザイン全体ではありません。 彼をどうにかして設計に関与させて、彼がどういうわけかそれの外に残されたと感じないようにし、彼が経験から多くを学び、自分で試してみるのに十分な自信を得ることはできますか?

6
ハイパーリンクされ、外部化されたソースコードのドキュメント[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 別のドキュメントとしてではなく、なぜソースコードの自然言語記述(つまり、コード行が記述された理由)をソースコード内に埋め込むのですか? 現代の開発環境(高解像度モニター、デュアルモニターなど)に提供される広大な不動産を考えると、IDEは、ソースコードが視覚的に分離されているが本質的にリンクされているセミロックステップパネルを提供できます。対応するコメント。たとえば、開発者はハイパーリンクマークアップ言語(追加のソフトウェア要件へのリンク)でソースコードコメントを書くことができます。これにより、ドキュメントがソースコードを乱雑にするのを同時に防止できます。 このようなソフトウェア開発メカニズムを阻害する欠点は何ですか? 質問を明確にするためのモックアップ: カーソルがソースコードの特定の行(上記の青色の背景で表示)にある場合、カーソルのある行に対応するドキュメントが強調表示されます(他の詳細と区別されます)。質問で述べたように、カーソルがソースコード内を移動するとき、ドキュメントはソースコードとロックステップのままです。ホットキーで「ドキュメントモード」と「開発モード」を切り替えることができます。 潜在的な利点は次のとおりです。 画面上のソースコードとドキュメントの同時表示 (言語に関係なく)ソースコードとは関係なくドキュメントを編集する機能 マージの競合なしに、ドキュメントとソースコードを並行して作成する 優れたテキスト形式のリアルタイムハイパーリンクドキュメント さまざまな自然言語への準リアルタイム機械翻訳 コードのすべての行は、タスク、ビジネス要件などに明確にリンクできます。 ドキュメントは、コードの各行が記述されたときに自動的にタイムスタンプを付けることができました(メトリック) アーキテクチャ図、関係を説明する画像などを動的に含める 単一ソースのドキュメント(ユーザーが手動で含めるためのタグコードスニペットなど)。 注意: ドキュメントウィンドウは折りたたむことができます ソースファイルを表示または比較するワークフローは影響を受けません 実装がどのように行われるかは詳細です。ドキュメントは次のようになります。 ソースファイルの末尾に保持されます。 規則(filename.c、filename.c.doc)で2つのファイルに分割します。または 完全にデータベース駆動 ハイパーリンクされたドキュメントとは、外部ソース(StackOverflowやWikipediaなど)および内部ドキュメント(つまり、ビジネス要件ドキュメントを相互参照できるサブドメイン上のWiki)およびその他のソースファイル(JavaDocsに類似)へのリンクを意味します。 関連スレッド:業界のドキュメントに対する嫌悪感とは何ですか?

1
深いアーキテクチャのリファクタリングを機能ベースの開発と組み合わせるより良い方法を探しています
問題文: 与えられた: ソース管理としてのTFS アーキテクチャ設計が悪いかほとんどないレガシーコードが大量にある重いデスクトップクライアントアプリケーション。 音質、高速 配信、常にユーザーに不親切なUIに不満を示す新機能を常に必要とするクライアント。 問題: アプリケーションは間違いなく、深いリファクタリングを必要とします。このプロセスは必然的にアプリケーションを不安定にし、専用の安定化フェーズが必要です。 私たちは試しました: マスター(MB)から機能ブランチ(FB)への定期的なマージによるマスターのリファクタリング。(私の間違い) 結果:多くの不安定なブランチ。 私たちがアドバイスされていること: 記事(pdf)へのリンク リファクタリング(RB)のための追加のブランチを作成し、MBからRBへのマージによって定期的にMBと同期します。RBが安定した後、マスターをRBに置き換え、さらにリファクタリングするための新しいブランチを作成します。これが計画です。しかし、ここでは、FBをMBにマージした後、MBをRBにマージすることの本当の地獄を期待しています。 主な利点: ほとんどの場合、安定したマスター。 収益のより良い代替案はありますか?

4
迅速なプロトタイピングとリファクタリング
小さなプロジェクト(Androidアプリなど)を開始するとき、最後にどのアプローチがうまくいくかわからないことがあるので、1つのアプローチを試してみます。しかし、このアプローチをこれまでに使用したことがない場合(ある種のアプリケーションの場合、これまでプログラムしたことがない)、それは未知の地形に足を踏み入れるようなものです。使用するライブラリがわからない(たぶん、いくつかのライブラリを試す必要があるかもしれません)非常に多くの認識されていない(例:Androidで生のオーディオデータを取得する方法) したがって、私の開発プロセスは次のようになります。 コードを記述して、アプローチにチャンスがあるかどうかを確認します。(アプローチが不確実であるほど、コードはより醜くなります) 機能する場合は、綺麗になるまでたくさんリファクタリングしてください この時点でソフトウェア設計を詳細に計画した場合、それは時間の無駄になると思います。それは、地図のない旅行を計画するようなものです。 これはアグリー開発の一部ですか?ソフトウェア開発で未知の地形にどのように対処しますか?

5
リーダーシップは、マシン構成と新しい開発者志向の標準プロセスに価値を見出さない
約3か月前に、私たちの主要なWeb開発者およびデザイナー(同じ人物)が会社を辞めました。緑の牧草地が退職の理由でした。彼らに良いと私は言う。私の問題は、彼の部門が完全に文書化されていなかったことです。リードを離れてからの状況は厳しく、私たちが新しいプロジェクトを引用するために使用する理論的な知識と、彼が去ったために失った既存の製品の技術/実装に関する知識の両方がたくさんあります。私の通常の役割は、製品マネージャー(私たちの製品自体)およびプロジェクトベースのコンサルティング業務のビジネスアナリストです。私は過去1年間、自分でコーディングすることを学び、前進し続けるために努力しました。私のラップトップを開発マシンとしてセットアップするタスクを引き受けて、より簡単な機能リクエストのいくつかを実装し、私たちのチケットシステムに送信されるいくつかの簡単なバグを修正することを期待しています。しかし、新しいWindowsマシンを使用して、本番用アプリとシームレスに動作するように構成する方法は誰にもわかりません。 私は上司に、去った開発者とまだ連絡を取り、新しい開発者、ソフトウェアのインストール、必要なパッケージ、プロダクションアプリケーションサーバーにデプロイするプロセスなどを文書化して作成するプロセスを依頼するよう依頼しました。これは存在し、コンピュータを機能開発マシンとして機能させるために、私はホイールを回転させています。しかし、彼女はそのようなプロセスが存在する必要性を理解していないようです。どうやら、去ったものを交換した新しい開発者は、私たちの環境用に事前構成されたマシンを使用していたため、新しい開発者でさえ、別の開発者を追加すると新しいマシンをセットアップできませんでした。 私の質問は2つの部分です: 私たちの開発エコシステムの一部である新しいコンピューターを搭載して構成するプロセスが存在するはずであると想定するのは間違っていますか? 私はひどい赤ちゃんですが、プロセスを理解して自分でドキュメントを作成する必要がありますか?

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