ソフトウェア工学

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

3
<< >>乗算と除算の速度
を使用&lt;&lt;して&gt;&gt;、Pythonで数値を乗算およ​​び除算するために使用できます。バイナリシフトを使用すると、通常の除算または乗算よりも10倍高速です。 なぜ使用している&lt;&lt;と&gt;&gt;多くのよりも速く*と/? 背後で進行しているプロセス*と/それによって非常に遅いプロセスは何ですか?

4
オーナーが関与したくない小規模なプロジェクトでスクラムを使用する
最近、私はスクラムについてかなりのことを読んで学び、とても気に入っています。ただし、解決策がわからない可能性のあるシナリオが頭の中にいくつかあります。たとえば、4人のWeb開発者(そのうちの1人はUI / UXデザイナー)のアジャイルチームを編成したいとします。このチームはスクラムの原則に基づいて活動します。 最初は、おそらくアパートを借りたり、Cookieを販売したりするなど、普通の人の中小企業のランディングページのようなプロジェクトに取り組んでいるでしょう。このような顧客は、通常、会社を雇うことを期待しているため、製品所有者ロール(IMHO)を設定できません。 、彼らにプロジェクトの全体的な目標と詳細を提供し、可能な限り関与を少なくして(多くの意思決定を含む)仕事が完了することを期待します(彼らの意見では、彼らにはもっと重要なことがあると考えています)。私は開発者/スクラムマスターの役割に従事したいとします(それは議論の余地があることはわかっていますが、チームメンバーとスクラムマスターになることはわかっています)。したがって、単に製品所有者の役割をするべきではありません。上手。 だから私の質問については:私が私の会社の事業主である場合、私も単に製品所有者になる必要があるだけですか(これらの役割にはお互いが含まれますか)?製品所有者の役割を持つ可能性のある営業担当者を雇うことはできますか?営業担当者ではなく、経験豊富な開発者の方が良いでしょうか?これは賢い動きですか?最後に、私の立場により適した別のアジャイルアプローチはありますか? 編集:良いインプットをありがとうございました。私はいくつかのコメントを追加しました、任意の追加情報は非常に高く評価されます。
9 agile  scrum 

4
科学的プログラミング言語はなぜ奇妙なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 科学と工学での使用を意図したプログラミング言語は、汎用言語と比較して一貫して奇妙なように思えます。私の頭の上のいくつかの例: Matlabでは、各関数を個別のファイルに配置する必要があります Rでは、他のほとんどすべての言語で=とは対照的に、&lt;-は代入演算子です。 Matlab、R、Juliaなどはすべて1インデックスです Matlabはコメントに%を使用し、標準の#または//ではありません もちろん、これらの言語にはすべて、いくつかの設計機能があり、より自然な行列表記など、科学的アプリケーションで実際に使用しやすくなっています。それでも、これらすべてが不可解にすべての奇妙な選択を行いますが、これは何も簡単ではなく、言語設計者が他の言語の99%が行うことを選択した場合、簡単に回避できたはずです。ベンダーロックインの理由は何ですか?幅広いソフトウェア開発コミュニティとの連絡がないのですか?他に何か? 私はこのスレッドを読んで、説明が満足できるものであるとは思いませんでした。Rが科学的言語として設計されたからといって、規則を完全に無視し、=の代わりに&lt;-を使用しなければならなかったわけではありません。

5
*専用*のテスターの役割を持たない開発チームの実行可能性[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私は最近、無駄のない開発チームを構築する方法について多くのことを考えています。最終的には、志を同じくする少数の人々と私自身の小さなソフトウェアハウスをオープンしたいと思います。目標は金持ちになることではなく、健康的な職場環境を作ることです。 これまでのところ、無駄のないチームを次のように定義しています。 小さい; 自己組織化; すべてのメンバーはQAを念頭に置く必要があります。 メンバーは複数の役割を実行できる必要があります 最後のポイントは、私が少し心配しているところです。マントラが進むにつれて... 開発者は悪いテスターを作ります。 多くの場合、開発者は自分のコードまたは同僚のコードに「近すぎ」て、品質のより高いレベルの評価を行うことを理解していますが、彼らが事実上悪いテスターであるとは確信していません。それどころか、優れた開発者の資質は優れたテスターの資質と非常に重なっていると私は考えています。 これが正しいと仮定して、私は開発者/テスターの問題を回避するさまざまな方法を考えてきましたが、私は実行可能なモデルを考え出したと思います。 私のモデルには以下が必要です: 2つ以上のプロジェクトがある小さなソフトウェアハウス 開発と配信に対するアジャイル(反復)アプローチ プロジェクトごとに1チーム すべてのチームメンバーはソフトウェア開発者になります 彼らの職務記述書には、開発、品質保証、テスト、および提供が責任として明確に記載されています これらの前提条件がすべて満たされている場合、プロジェクトは次のように編成できます(この例では、2つのプロジェクトAとBを参照します)。 すべてのチームメンバーが開発者の役割とテスターの役割を交互に行います チームメンバーがプロジェクトAの開発者である場合、チームメンバーはプロジェクトBのテスターに​​なります メンバーは、一度に1プロジェクトで作業しますので、として機能することが期待されているいずれかのDev やテスター。 ロールサイクル(二つの異なるプロジェクトで、再び)Devのような3回の反復及びテスターとして2反復で構成されてい プロジェクトチームには、常に3つの開発者と2つのテスターがいます。 メンバーの役割サイクルは、1反復だけフェーズがずれている必要があります。 これにより、チーム変更の突然の発生を最小限に抑えることができます。各反復で、2つのDevsと1つのテスターが前の反復と同じままです。 上記を考えると、次の長所と短所がわかります。 長所 会社全体にプロジェクトの知識を配布します。 チームメンバーが記述に役立つコードをテストしていないことを確認します。 フェーズが異なるロールサイクルとは、100%メンバーの切り替えを行うプロジェクトがないことを意味します。 交互の役割は退屈なプロジェクトの単調さを壊します。 短所 両方のプロジェクトのイテレーションは密接に結合されています。1つのプロジェクトが途中でイテレーションをキャンセルして再開した場合、2つのプロジェクトは同期しなくなります。これは、役割サイクルの管理を困難にします。 開発者を採用する際のヒンジは、テスターとしても活躍しています。 このアプローチについて友人や同僚と話し合ったとき、私はさまざまなレビューを受けました。一部の開発者はこのような役割を代替したいと考えていると信じていますが、他の開発者は個人的に試してみたいと言っています。 だから私の質問です: そのようなモデルは実際に機能するでしょうか?そうでない場合は、作業モデルに調整できますか? 注: 簡潔にするために、私はDevおよびTesterの役割のみに焦点を当てました。必要に応じて、他の役割について詳しく説明します。

5
関数が外部からアクセスされていることを明確にする方法は?
これはC固有の質問です。私は可能な限りすべてを翻訳単位の境界内に保ち、.hファイルを介していくつかの関数のみを公開することを試みています。つまり、staticファイルレベルのオブジェクトへのリンクを提供しています。 ここで、いくつかの関数を他のモジュールから呼び出す必要がありますが、直接呼び出す必要はありません。私のモジュール/ファイル/翻訳ユニットは他のモジュールにサブスクライブし、関数へのポインターを渡します。次に、特定のイベントが発生すると、いくつかの引数を指定してポインターが呼び出されます。 したがって、これらの関数があいまいな場所から呼び出されていることを非常に明確にする方法を知りたいと思います。 彼らは、あるべきstaticかextern(及び、それらを公開しますか.h)? 関数の名前にいくつかのヒントを含める必要がありますか? それとも、「Xから呼び出されました」というコメントで十分ですか?

1
LICENSEファイルに寄稿者を追加する方法は?
私は、MITライセンスに基づいてライセンスされ、Githubでホストされているライブラリの主な開発者です。GithubリポジトリにはLICENSEファイルが含まれています。 誰かがプルリクエストを送信した場合、それらを付随するlicense.txtに著作権所有者としてリストする必要がありますか、それとも特別なセクションにリストする必要がありますか?私はそれをする必要がありますか? 寄稿者がプルリクエストを送信するときに、LICENSEで指定されたライセンスにコードを含めることに同意すると思いますか?

2
Scalaを学ぶ、落胆した[閉じた]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 私はJavaの出身で、Scalaを学ぼうとしています。現在、私はかなり圧倒されていると感じています。Scalaで学ぶことはまだまだたくさんあり、同じことを行うためのさまざまな方法があるようです。 どこから始めればいいのか、そしてその言語で適度に有能だと感じるまでにどれくらいの時間がかかったのか、誰かアドバイスはあるのだろうかと思いました。 forループ内包表記のような小さなことでも本当に強力に見えますが、これは覚えておかなければならない構文のもう1つの断片です!
9 java  scala 

3
ループ本体がスキップされたときに、BASICはどのようにして順序が狂ったNEXTステートメントを見つけるのですか?
WABACマシン、Shermanを設定します。この質問は、BASIC全般、およびMicrosoftのBASIC-80に関するものです。特にです。オールドスクールベーシック。行番号付き。 ループ本体が実行されておらず、NEXTステートメントが順不同である場合、旧式のBASICインタープリターはFOR ... NEXTループをどのように処理しますか(あるいは、そうしましたか)。 以前からの順不同のNEXTステートメント: これは、David H. Ahlの「101 Basic Computer Games」からのゲームAwariのサブルーチンです。 200 K=M:GOSUB 600 205 E=0:IF K&gt;6 THEN K=K-7 210 C=C+1:IF C&lt;9 THEN F(N)=F(N)*6+K 215 FOR I=0 TO 5:IF B(I)&lt;&gt;0 THEN 230 220 NEXT I 225 RETURN 230 FOR I=7 TO 12:IF B(I)&lt;&gt;0 THEN E=1:RETURN 235 GOTO 220 そしてここでは、編集されたフロー制御以外のすべてのものです: 200 …

1
PHPでクラスを実装するためのメソッドシグネチャの変更
PHPのGenericsの欠如に対して、静的コード検査で型の一貫性を検出できる適切な回避策はありますか? サブクラスを作成する抽象クラスがあり、メソッドの1つが1つの型のパラメーターの取得から、そのパラメーターのサブクラスであるパラメーターの取得に変更されるように強制します。 abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } これは、許可されていないメソッドシグネチャを変更するため、PHPでは許可されていません。Javaスタイルのジェネリックスを使用すると、次のようなことができます。 abstract class AbstractProcessor&lt;T&gt; { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor&lt;WoodItem&gt; { function processItem(WoodItem $item); } しかし、PHPはこれらをサポートしていません。 この問題のためのグーグル、人々はinstanceof実行時にエラーをチェックするために使用することをお勧めします例えば class WoodProcessor extends AbstractProcessor { function processItem(Item $item){ if …

4
垂直的なユーザーストーリーの短所
アジャイルアプローチはに仕事を構築することである垂直ユーザーストーリーと焦点を当てたが、完全にからのアプリケーションの一部を機能実現エンドツーエンド。これはソフトウェアを構築するための新しいアプローチなので、なぜこれが横長のストーリーよりも優れているかについて多くの文献を読みましたが、このアプローチの欠点についてはあまり知りません。 私はすでにアジャイルクールエイドを飲みましたが、ケーキを垂直にスライスすることは水平なスライスよりもはるかに優れていることに同意します。ここに私が思いつくかもしれない欠点の短いリストがあります: 開発者はストーリーの開発に必要なすべてのテクノロジー(UI +サービスレイヤー+データアクセス+ネットワーキングなど)を理解する必要があるため、最初は機能の実装に時間がかかる場合があります。 全体的なアーキテクチャ設計(アプリケーションのバックボーンをクレーティングする)はこのマントラに実際には適合しません(ただし、全体的なアーキテクチャを開発/変更することはユーザーストーリーの一部であると主張する人もいます) ユーザーストーリーを垂直にスライスすることのその他の欠点は何ですか? 注:この質問をする理由は、チームに「垂直方向」のストーリーを書き始めるよう説得しようとするためであり、可能なトレードオフを事前に提示して、彼らが勝つことができるようにしたいのです。彼らが欠点に直面しているとき、アプローチを失敗とは考えないでください。

3
プログラミング言語の設計者がモジュロ演算の結果の符号を決定するときに使用される理論的根拠は何ですか?
通って行く剰余演算(の違いを探索しながら、私が入った大通りremとmod)私が出くわしました: 数学では、剰余演算の結果はユークリッド除算の残りの部分です。ただし、他の規則も可能です。コンピュータと計算機には、数値を保存および表現するさまざまな方法があります。したがって、それらのモジュロ演算の定義は、プログラミング言語や基盤となるハードウェアに依存します。 質問: 通って行くユークリッド除算私は、この操作のremainnderは常に正(または0)であることがわかりました。基盤となるコンピューターハードウェアの制限によって、プログラミング言語の設計者は数学とは異なるものになりますか? すべてのプログラミング言語には、モジュロ演算の結果に応じて符号が付けられる、定義済みまたは未定義のルールがあります。これらのルールを作成する際に採用される根拠は何ですか?基盤となるハードウェアが問題である場合、プログラミング言語とは関係なく、それに応じてルールを変更しないでください。

6
スレッドはなぜスレッドと呼ばれるのですか?
私は、プロセスがリソース所有権と実行可能命令の単位であることを理解しています。スレッドを使用すると、プロセスはリソースを複数の実行と共有できます。また、プロセス全体に関連するすべてのオーバーヘッドにより、OSがスレッドをスケジュールするのが簡単になります。 しかし、なぜ名前のスレッドなのか?文字列または実行のインターリーブへの参照はありますか?それでも、これは私の考えでは直感的な用語ではありません。

9
異なるプログラミング言語でOOPを学習することに違いはありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 OOPを学びたいです。私はPythonを知っており、OOPについてはほとんど知りません。 しかし、フォーラムで「learn OOP」を検索すると、「Pythonは非常に新しいため、PythonでOOPを学習できないのです。Javaを学習してから、JavaでのOOPを理解する必要がある」という男を見かけました。 本当ですか?異なるプログラミング言語でOOPを理解するのに違いはありますか?Java、C#、C ++、Perl、Pythonで学習したいですか?

2
開発者が不要な機能を追加する時間を浪費していることをどのように説明しますか?
したがって、私は同僚のエンジニアと共に、少なくともリーンを「考える」ことを開始するように指導しました。私たちは無駄のいくつかの主要な領域にぶつかり、2/3はまったく同じポイントにつながります...「追加機能」。私たちは、販売とプロジェクト管理の2つの面で独自のソフトウェアを開発しています。それはCRMが優れているため、売上高に最適です。プロジェクトの管理にはそれほど適していません。このユースケースで機能させるために、機能を追加する必要があります。 顧客に付加価値を与えない機能を追加し続ける方が理にかなっていますか、それとも自社の製品を使用する営業チームに「十分」であると認め、既製のソリューションを探す必要がありますか?


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