ソフトウェア工学

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

7
スクラムスプリントは、可能な限り速いペースで機能するということですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 私は最近、より正確にアジャイル、スクラムを行ういくつかの企業にインタビューしましたが、私にはアジャイルとは思えないものがいくつかあります。私が特に興味を持っているのは、スクラムスプリントのケースです。 私が話した特定のプロジェクトマネージャー(はい、私はプロジェクトマネージャーと言いました)は、彼女のチームの人々が、勤務時間を過ぎても家に帰らないことを理解していることを誇らしげに述べました、仕事がどれだけかかっても家に帰ります。行間で読んだことは、できる限り多くの機能をスプリントにまとめ、それを実現するために残業することです。 今、私は今までにアジャイルをやっていません(ほとんどの場合、ウォーターフォールを好む金融機関や政府機関と協力しました)が、私の理解は次のとおりです: スクラムのスプリントは、アジャイルの一般的な反復の名前です。 チームは持続可能なペースで作業し、長期的な残業を避けるように努める必要があります。これは、短時間にしか影響を与えず、その影響は長期間に発生する問題によってd小化されるためです。 私の声明は正しいですか?そして、マネージャーのプレゼンテーションを危険信号とみなすべきですか?

2
型チェックと再帰型(Haskell / OcamlでのYコンビネータの記述)
HaskellのコンテキストでYコンビネーターを説明するとき、通常、単純な実装は再帰型のためHaskellで型チェックを行わないことに注意されています。 たとえば、Rosettacodeから: The obvious definition of the Y combinator in Haskell canot be used because it contains an infinite recursive type (a = a -> b). Defining a data type (Mu) allows this recursion to be broken. newtype Mu a = Roll { unroll :: Mu a -> a } …

7
スクラムマスターはデイリースタンドアップにどのように参加しますか?
プロジェクトに最近参加したプロのスクラムマスターコンサルタント[*]がいます。残念ながら、私たちは彼女の名前を知りません(彼女は私たちに自己紹介したことはありません、彼女は1日で来て、「私たちは毎日立ち上がっている」と言いました)、そして彼女は椅子a毎日のスタンドアップミーティング-私は冗談で彼女にミーティングで毎日フィードバックをするように頼んだとき、彼女は非常にf辱され、「参加せずに促進する」ことがスクラムマスターの仕事だと言った。 これはかなり反アジャイルのようです(他のアジャイルプロジェクトに取り組んでおり、チームは自己指示されていました)。これは平等主義であるはずですが、スクラム方法論でどのように機能するかはわかりません。私は彼女が一日中あまり役に立たないと思います、そしてそれがこの問題に対する彼女の防御の理由です。 スクラムマスターは、スタンドアップミーティング中に「昨日、今日、障害」という演説に参加しますか、それとも、会議の議長を務める(「促進する」)役割がありますか? [*]彼女は自分の仕事が何であるかを実際に知らされていませんでした。

7
プログラムで非常に多くのルールとマジックナンバーを管理するにはどうすればよいですか?
私はプログラミングに多少慣れており(私は貿易で機械エンジニアです)、ダウンタイム中に工場周辺のさまざまな人々からの入力に基づいて(solidworks)パーツを生成する小さなプログラムを開発しています。 わずかな入力(正確には6つ)に基づいて、それぞれ最大12個のパラメーターを取ることができる何百ものAPI呼び出しを行う必要があります。すべては、パーツを処理するすべての人にインタビューした後に収集した一連のルールによって生成されます。私のコードのルールとパラメーターのセクションは250行で、成長しています。 だから、コードを読みやすく管理しやすくする最良の方法は何ですか?すべてのマジックナンバー、すべてのルール、アルゴリズム、およびコードの手続き部分をどのように区分するのですか?非常に詳細で詳細なAPIに対処するにはどうすればよいですか? 私の主な目標は、誰かに私の情報源を渡して、私の入力なしで、私がやっていることを彼らに理解させることです。

5
Webサービス呼び出しを必要とするクラスを単体テストするにはどうすればよいですか?
いくつかのHadoop Webサービスを呼び出すクラスをテストしようとしています。コードはほぼ次の形式です。 method() { ...use Jersey client to create WebResource... ...make request... ...do something with response... } たとえば、ディレクトリ作成メソッド、フォルダ作成メソッドなどがあります。 コードが私が制御できない外部Webサービスを処理していることを考えると、これをどのように単体テストできますか?Webサービスのクライアント/レスポンスをモックすることはできましたが、最近見た「所有していないオブジェクトをモックしないでください」というガイドラインに違反しています。ダミーのWebサービス実装をセットアップできます。それでも「単体テスト」を構成できますか、それとも統合テストになりますか?この低いレベルで単体テストを実行することはできませんか?TDD実践者はどのようにこれに取り組むのでしょうか?

2
静的mainメソッドを持つJavaクラスの命名規則?
コンストラクターではなく、なぜJavaおよびC#の静的メインメソッドに対するgnatの答えを読んだ後ですか?彼の答えは、静的なmainメソッドを持つJavaクラスの目的は、define a program entry pointそれ自体がプログラムそのものではないことを意味すると考えています。 これを行うためのより良い方法があるかもしれませんが、私は通常、次のような単純なことを行う静的なmainメソッドを持つクラスを持っています: public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } 上記のコードは、静的メインを持つクラスが、独立した非静的オブジェクト内に含まれるプログラムロジックを起動または起動する以上のことをしないOOPのベストプラクティスでしょうか。結局、mainは静的なので、MenuLauncherクラス自体は非常に制限されませんか?mainは開始点であるため、エントリポイントになること以外のクラスの目的はありません。 mainメソッドを含み、プログラムのエントリポイントになる目的を果たすクラスに一般的に使用されるJava命名規則はありますか?

3
実際には、開発者はDBMSとシステムも管理していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は本当に他にどこに尋ねるべきかわかりません。だからここに行く。 私はERPソフトウェアとウェブサイトを作っている非常に小さな会社で働いています。 + 10年の経験を持つ1人の開発者。 + 3年の経験を持つ2人の開発者。 + 1年の経験を持つ3人の開発者。 それでおしまい。 チーム、DBA、システム管理者はいません。 ウェブ開発の専門知識を持っている人はここにはいないので、たまたまウェブ開発を担当しました。しかし、私はわずか3年の経験しかありません!開発者として! 小さな会社では、いろいろなことをするように頼まれますが、システム管理者、データベースアーキテクチャ、ソフトウェアの設計と開発をしなければならないとしたら、それは多すぎますか?それに、さまざまなプラットフォームですべてを行うように求められます。 現在、JSP、ASP、MSSQL、MySQL、Oracle、Windows Server、およびLinuxを使用しています。 データベースでは、クエリの作成からバックアップとリカバリまでを行っています。 サーバーのセットアップ、システムクラッシュの回復、DBとサーバーの移行も行います。 豪華なHTML、Javascript、CSS :) 私が担当しているプロジェクトの数:5 私はそれらのすべての専門家ではありません! すべてを完了するには、インターネットを検索し、チュートリアルを読んでStackOverflowで質問する必要があります! だから私はあなたに尋ねます、これは正常ですか? これは通常の習慣ですか? どの小さな会社に行っても同じ状況に直面しますか? 私は韓国で働いています。あなたの国ではどうですか? PS ご意見ありがとうございます。私はあなたのすべてが私に異なる方法でそれを見るのを助けたのであなたのすべてに賛成するつもりでしたが、明らかにあなたは賛成するために15の評判が必要です:(

10
iPhoneの64ビットA7の利点は何ですか
64ビットプロセッサへの移行がiPhoneでこれほど重要な理由を理解しようとしています。2倍のレジスタがあるため、プロセッサは2倍のデータを処理できるため、パフォーマンスが向上することを理解しています。 しかし、すぐに多くの電話が4GBを超えるメモリにアクセスすることはありません。それはやり過ぎのように見え、バッテリー寿命に悪影響を及ぼします。 もう1つの問題は、ほとんどの変数が2倍のメモリを必要とすることです。これにより、メモリが少ないモバイル環境で問題が発生します。 私は、Appleの人々は知的であり、おそらくこれを行う大きな理由があると信じています。私は彼らを理解しようとしています。 編集 GPUについてはあまり知りませんが、64ビットのレジスタを使用すると、2つのピクセルを各レジスタにロードでき、操作を個別に実行できると言われました。64ビットに関してグラフィカルな利点はありますか?
21 ios  iphone  64-bit 

3
C ++コンパイラのコンプライアンステストはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 特定のC ++コンパイラのコンプライアンスを測定できる、自由に使用可能/アクセス可能なスクリプト、ソースファイルなど、どこかにありますか? たとえば、ブラウザのAcid3テスト:http ://acid3.acidtests.org/ 私が夢見る結果は、グローバルなパーセンテージのメモ(または複数のメモ、各標準に1つ、たとえばc ++ 98、c ++ 11、c ++ 14など)であり、その後「成功」の詳細なテストになるまたはそれらのそれぞれの「失敗」。 背景:ブーストといくつかの課題のあるコンパイラについて、職場で議論しました。私の対話者は、主要なC ++コンパイラでは機能しないため、ブーストが学術プロジェクトであることについて話しました。精神的に困難なコンパイラは考慮すべきではないと答えました。コンパイラの実際の適合性をコードで測定できると、コンパイラの評価と、それらでコンパイルされたクロスプラットフォームコードで回避する必要がある「コーナーケース」の発見の両方に役立ちます。 編集:2013-06-22 答えではありませんが、明らかに、C ++委員会はこの問題に取り組んでいます: SG10、機能テスト: Clark Nelson(Intel)。特定のC ++製品がまだ機能を実装しているかどうかを確認するための移植可能なコードの方法を標準化するかどうか、およびその方法を調査します。 ソース:http : //isocpp.org/std/the-committee
21 c++ 


1
Goは「暗黙の」インターフェースで生産性をどのように改善しますか。また、C#の拡張メソッドの概念と比較してどうですか。
Go言語のチュートリアルでは、インターフェイスの仕組みについて説明しています。 Goにはクラスがありません。ただし、構造体型のメソッドを定義できます。メソッドのレシーバは、 FUNCキーワードとメソッド名の間に独自の引数リストに表示されます。 type Vertex struct { X, Y float64 } func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } インターフェイスタイプは、一連のメソッドによって定義されます。インターフェイスタイプの値は、これらのメソッドを実装する任意の値を保持できます。 これは、Goでインターフェイスを作成する唯一の方法です。Googleはさらに次のように説明しています。 型は、メソッドを実装することによりインターフェースを実装します。意図の明示的な宣言はありません[ interface宣言]。 暗黙的なインターフェースは、実装パッケージをインターフェースを定義するパッケージから分離します。どちらも他に依存しません。 また、すべての実装を見つけて新しいインターフェイス名でタグ付けする必要がないため、正確なインターフェイスの定義も推奨されます。 これはすべて、Goのメソッドが容赦なく多態的であることを除いて、C#の拡張メソッドに似ています。それらは、それらを実装する任意のタイプで動作します。 Googleは、これが急速な開発を促進すると主張していますが、なぜですか?C#の明示的なインターフェイスから離れることで何かをあきらめますか?C#の拡張メソッドにより、GoインターフェイスがC#に持つ利点のいくつかを引き出すことができますか?
21 c#  language-design  go 

3
asm.jsを使用してブラウザーでC ++コードを実行する方法
asm.jsアプリケーションは非常に高速です(ネイティブC ++の速度に近い): http://kripken.github.io/mloc_emscripten_talk/micro4b.png しかし、どのようにしてC ++で作成し、LLVMコードに変換し、emscripten / asm.jsでいくつかのトリックを行うことができますか?私はそれについてのチュートリアルを見つけていません。 そして、C ++でコードを作成する場合、たとえばXMLHttpRequest、WebSockets、CanvasまたはWebGLなどのjs API-sを使用する方法は?
21 c++  javascript  llvm 

4
関係のなくなったバグを閉じる方法
現在、中規模のWeb開発者チームに所属しています。バグ追跡にjiraを使用しています。 私たちは頻繁にレイアウトを変更する製品に取り組んでいます。多くの場合、一部のブラウザのレイアウトのバグについてバグが報告されます。時々、優先度の低いバグに対処する頃には、レイアウトはすでに変更されており、関連性がなくなっています。 何を閉じますか? 私が言いたいのは、これらの問題をどう扱うべきかということです。Jiraは私たちが使用するバグ追跡ソフトウェアですが、私はこれらの種類の問題全般をどのように処理するかにもっと興味があります。 それも重要ですか?(後でレイアウトに戻る可能性がありますが、ほとんどありません)

4
「オブジェクト指向すぎる」
私は強力なオブジェクト指向のバックグラウンドから来ており、コードはJavaで書かれていますが、以前よりも優れたオブジェクト指向設計にあまり重点を置いていない組織で働き始めました。私は「あまりにも多くの抽象化」を導入し、代わりに常に行われている方法をコーディングする必要があると言われました。これはJavaの手続き型です。 TDDもここではあまり実践されていませんが、テスト可能なコードが必要です。大きな「神クラス」の静的プライベートメソッドにビジネスロジックを埋め込むことは(このチームの標準と思われます)、あまりテストできません。 私は自分の動機を同僚に明確に伝えることに苦労しています。OOとTDDを使用するとコードのメンテナンスが容易になることを同僚に納得させる方法について、誰かアドバイスがありますか? 技術的負債に関するこの質問は私の質問に関連しています。ただし、他の問題がカバーする事実の後に返済するのではなく、そもそも借金の発生を回避しようとしています。

1
オブジェクト変換の設計パターン(Java)
ときどきファクトリーとMVC以外にデザインパターンを使用することはあまりないので、もっと使い始めたいです。 このケースでのデザインパターンの使用について、あなたの意見が欲しいという具体的なケースがあります。 私のアプリケーションでは、さまざまな状況でかなり頻繁にオブジェクトを変換する必要があります。GWTを使用しており、Hibernate POJOはシリアル化できず、回線経由で送信できないため、Hibernate POJOをDTOに変換する必要がある場合があります。 別の状況では、Solrによるインデックス作成のためにJavaオブジェクトをSolrInputDocumentに変換する必要があるかもしれません。 このためにデザインパターンを使用する必要があるかどうかを知りたいです。「オブジェクトの変換」は、パターンによって柔軟/抽象的な方法で処理できる一般的なタスクのようですが、実際にはどうなるかわかりません。 パターンがなければ、CourseToSolrInputDocument(CourseはアプリケーションのHibernateエンティティです)など、変換のタイプごとに個別のクラスを作成するだけです。またはCourseToCourseDTO。これらの各変換クラスにconvert()は、ソースオブジェクトを入力として受け取り、出力オブジェクトを返す単一の静的メソッドが呼び出される場合があります。 しかし、それは実際にはパターンではありませんか?そこで、ジェネリックを使って何かから始めて、Converterインターフェイスを実装するこのクラスを作成しました。しかし、どういうわけか、愚かなtgoがジェネリックインターフェイスを作成していると感じています。 public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> { @Override public void convert(Course source, SolrInputDocument destination) { //To change body of implemented methods use File | Settings | File Templates. } } したがって、ここでの本当の質問は、汎用オブジェクト変換に適用されるパターンがありますか?また、あなたのアプローチは何ですか?また、変換ごとのクラス型アプローチを使用するよりも利点は何ですか?

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