ソフトウェア工学

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

4
匿名関数とjqueryでの初期化のための個別の名前付き関数
ページが読み込まれたときに物事を初期化するために使用されるいくつかのコードがあるとしましょう、それは次のようになります: function initStuff() { ...} ... $(document).ready(initStuff); initStuff関数は、スニペットの3行目からのみ呼び出されます。二度と。したがって、通常、これは次のような匿名のコールバックに入れられます。 $(document).ready(function() { //Body of initStuff }); 関数をコード内の専用の場所に置くことは、ready()の呼び出しでこれが初期化コードであることを明確にするため、実際には読みやすさには役立ちません。 どちらか一方を優先する他の理由はありますか?

2
JavaBean仕様のアクセサメソッドがJava開発の標準になったのはなぜですか。
JavaBeansの仕様は、 JavaBeanのように記述する Java Beanは、ビルダーツールで視覚的に操作できる再利用可能なソフトウェアコンポーネントです。 記述されたコード行の大部分はビルダーツールで視覚的に操作されることとは何の関係もないように見えるので、なぜJavaBean仕様がオブジェクト指向コードを記述する「方法」であるのでしょうか。 これは伝統的にJavaでオブジェクト指向のコードを記述する方法ではないため、ビルダーだけでなく、コード全体でFluent Interfacesを優先して、従来のゲッター/セッターを放棄したいと思います。
9 java  history 

13
キューの良い、簡単な例は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 4年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私はCS2(Java and data structures)を教えていますが、キューを教えるときに使用する良い例を思い付くのが困難です。私がそれらを使用する2つの主要なアプリケーションは、multithreadedメッセージパッシング(ただし、MTプログラミングはコースの範囲外です)ですBFS-style algorithms(そして、この期間の後半まではグラフを取り上げません)。 不自然な例も避けたいです。私が考えているほとんどのことは、実際にシングルスレッド方式で解決する場合は、キューではなくリストを使用するだけです。処理とディスカバリーがインターリーブされる場合(検索など)、または長さ制限のあるバッファー(最後のNアイテムを維持するなど)のような特別な場合にのみ、キューを使用する傾向があります。実用的な範囲で、私は生徒に実際のプログラムで実際に物事を行うための良い方法を教えるだけでなく、機能を披露するおもちゃだけではありません。 例として使用できるが、他の最小限の事前知識を必要とする、キューの優れたシンプルなアルゴリズムまたはアプリケーションの提案はありますか?

3
dvcs-「ブランチからクローン」は一般的なワークフローですか?
私は最近、dvcsについて同僚と話し合っていました。これは、私たちのオフィスがTFSからの切り替えを検討し始めているためです(私たちはMSショップです)。その過程で、彼はMercurialを使用しているものの、「ブランチ」または「チェックアウト」コマンドを聞いたことがなく、これらの用語が彼にとってなじみのないものであると彼が言ったので、私は非常に混乱しました。彼がそれらについて知らなかった可能性があるのではないかと考え、dvcsブランチがローカルファイルで「適切に」機能する方法を説明した後、彼はかなり混乱しました。 彼は、TFSのしくみと同様に、「ブランチ」を作成したい場合はクローン作成によって行うので、リポジトリの完全なコピーを持っていると説明しました。これは本当に奇妙に思えましたが、私が認めなければならない利点は、ファイルが別々であるため、2つのブランチを同時に見たり作業したりできることです。 このサイトを検索して、多くのオンラインリソースがこの「クローンからブランチへ」の方法論を宣伝するコメントを見る前にこれが尋ねられたかどうかを確認する際に、ポスターを落胆させました。これは実際にdvcsコミュニティで一般的ですか?そして、この道を行くことの長所と短所は何ですか?一度に複数のブランチを表示する必要がなく、切り替えが高速で、すべてのクローンがディスクをいっぱいにする必要がないため、それを行うことは決してありません。

4
スクラムチームに複数の役割を持つ人々がいても大丈夫ですか?
私のチームへの導入の可能性について、アジャイルスタイルの方法論を評価しています。スクラムでは、同じ人に複数の役割を任せることはできますか?4人の開発者とWebデザイナーの小さなチームがいます。私たちは実際にはリードを持っていません(私はこの役割を果たします)、QAテスターまたはビジネスアナリストであり、すべての開発タスクはCIOから行われます。自動テストは時間の無駄とみなされ、すべてが品質ではなく速度に焦点を合わせています。 何が起こるかは、CIOが開発タスク(機能かバグかに関係なく)を考え出し、それを開発者(チーム全体ではなく、個人、多くの場合は非公開または突然)に渡します。完成する予定です。CIOは当初のアイデアを超えて要件を収集しません(そして、これについて以前に私たちを悩ませてきました。なぜなら、エンドユーザーが相談または通知されていないため、機能を使用できないことを確認するためだけに実装するからです。開発する前に、そしてパニックの場合は変更を元に戻すように指示されます)が、私たちが行うすべてのことについて、/承認する必要があります。 まず最初に、いくつかの基準と実践を導入するためにスクラムスタイルを検討する必要がありますか?読書から、スクラムは少し信頼とコミュニケーションに依存しているようで、開発よりもプロジェクト管理に重点を置いています。これは、現在プロジェクト管理の類似点がないため、完全に欠けているものです。 第二に、それが機能する場合、誰かがスクラムマスターと開発者の両方として行動するのは無理でしょうか?または、開発者がプロ​​ダクトオーナーになることもできます(ただし、これは開発者ではないCIOになる可能性があります)。スクラムマスターとプロダクトオーナーは異なる人物であるべきだと思いますが、同時にプロダクトオーナーの資質を持っている人はいないと思います(たぶん、「これらすべてのストーリーが必要です。どうでもいいが、それを成し遂げる」というタイプの取引やフリーズは、気まぐれでフリーズ解除されます)。 メンタリティを変更できる可能性は非常に低いため、現在行われている方法を補正するために、スクラム/ XP /リーンの一部を選択する必要があるように思えます。たとえば、ペアプログラミングが飛ぶことは決してなく(無駄と見なされ、2人ですべてを行う必要がある場合、半分のタスクが完了します)、TDDは困難ですが、短いサイクルは歓迎されます。
9 agile  scrum 

8
C#foreachの改善?
foreach内にループカウントインデックスを設定し、整数を作成し、それを使用し、インクリメントする必要がある場合、プログラミング中にこれに頻繁に出くわします。 foreach内のループ数?他のループでも使用できます。 これは、コンパイラーがこのキーワードをループ構造内以外のどこで使用することをどのように許可しないかというキーワードの使用に反しますか?
9 c#  loops 

3
コードの外で複雑なビジネスルールをどのように追跡しますか?
他の人がこれをどのように行っているのか見てみたいです。特に、複数の異なるクライアントが、わずかに異なるビジネスルールで同じソフトウェアベースを使用している状況では。すべてがどのように機能するか、またはビジネスルールを文書化するために、どのような方法を使用していますか。 基本的には、新しい開発者がチームにやって来たときに、バグのないものと適切に機能させることには明らかに違いがあるため、チームがどのように機能するのかを簡単に確認できます。 何かを処理する方法について質問が出るたびにアーキテクトやBSAを会話に参加させる必要はなく、リソースを活用するほうがいいでしょう。

3
ソースコードとソフトウェア製品の価格の定量化
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 今からプロジェクトに着手します。これは私がコードを書くことを必要とします、そしてそれのトン。クライアントの要件は、プロジェクトの最後にすべてのソースコードを提出することです。 私の質問は、ソースコードとソフトウェア製品の価格をどのように数量化するのですか?価格を決定するために使用する指標はありますか?ソフトウェア製品をどのように定量化しますか? 追加情報:アプリケーションは、タブレット(iPad、Galaxyタブなど)、スマートフォン(iPhone、Androidフォンなど)を含むすべてのOSのどこでも、またWeb上で実行する必要があります。 (今、これがどのくらいのコードになるか想像してみてください)。

3
Ariane 5のFlight 501の歴史的な影響は何でしたか?
Ariane 5ロケットの処女航海(Flight 501)での打ち上げから37秒後の分解は、歴史上、最も高価なソフトウェアバグの 1つと呼ばれています1: 欧州宇宙機関が10年間と70億ドルを費やして、3トンの衛星のペアを打ち上げるたびに軌道に打ち込むことができる巨大なロケットであるアリアン5を生産しました。 昨年6月にロケットがその初飛行に1分もかからず爆発し、フランス領ギアナのマングローブの沼地に燃えるような瓦礫を散布したのは、64ビットの数値を16ビットの空間に詰め込もうとする小さなコンピュータプログラムだけでした。 1つのバグ、1つのクラッシュ。コンピュータサイエンスの記録に記録されているすべての不注意なコード行の中で、これは最も壊滅的に効率が良いものであると言えます。ロケット工学の専門家へのインタビューと宇宙機関のために準備された分析から、算術エラーから完全な破壊への明確な道が現れます。 Flightの501の失敗とその後の調査は、安全上重要なシステムとソフトウェアテストの研究に影響を与えた大きな変化は何ですか? 私はバグ自体の説明を探しているのではなく、失敗の調査に触発された、または直接関連した調査という点での、バグの歴史的な影響の説明を探しています。たとえば、このペーパーでは次のように結論しています。 静的分析を使用して、次のことを行いました。 変数の初期化を確認し、 シェア変数の潜在的なデータアクセス競合の完全なリストを提供します。 Adaセマンティクスから潜在的な実行時エラーを徹底的にリストします。 私たちの知る限り、これはブールベースおよび非ブールベースの静的解析手法を使用して産業用プログラムを検証するのは初めてです。 同様に、この論文(pdf)は次のように述べています Ariane 5ランチャーとARDの組み込みADAソフトウェアの静的分析には、抽象解釈ベースの静的プログラム分析が使用されています。静的プログラムアナライザーは、スカラーや浮動小数点のオーバーフロー、配列のインデックスエラー、ゼロによる除算や関連する算術例外、初期化されていない変数、データ競合などのランタイムエラーの確定性、可能性、不可能性またはアクセス不能性の自動検出を目的としていますアナライザーは、Ariane 501フライトエラーを自動的に検出できました。組み込みの安全性クリティカルソフトウェア(航空電子工学ソフトウェアなど)の静的分析は非常に有望です。 この単一のイベントがソフトウェアテストのアプローチとツールに与えた影響を徹底的に説明したいと思います。 1 70億ドルという数字は、おそらくAriane 5プロジェクトの総コストを参照していると、ウィキペディアは、失敗により3億7000万ドル以上の損失が発生したと報告しています。それでもかなり高価な失敗ですが、70億ドルという数字にはほど遠いものです。
9 testing  history  bug 

8
なぜほとんどの求人が一般的な開発者ではなく、<language here>開発者向けであるのですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 理想的な世界では: Patrick McKenzieは、優れた記事「プログラマーをプログラマーと呼ばないこと、およびその他のキャリアアドバイス」で、とりわけ、その言語は重要ではないと説明しています。 開発者は、一般的に問題を解決する人です。開発者は、特定の言語でコードを書く人ではありません。 企業はあなたが知っている言語を気にしません。特定の言語で書かれたプロジェクトの開発者を雇う必要があり、経験豊富であるがこの言語でコード行を書いたことがない候補者がいる場合でも、彼は採用されます。 開発者として、および他の開発者を雇わなければならなかった人としての私の経験によれば、観察は非常に似ています: JavaでのN年の経験またはC#でのN年の経験は重要ではありません。重要なのは、候補者が問題を解決する方法を知っている、スパゲッティコードとよく考えられたアーキテクチャを備えたクリーンなコードの違いを知っているなどです。 以前使っていた言語は気にしません。C#プロジェクトの場合は、C#だけを知っていて、それをよく知らない初心者ではなく、Java、Python、Ruby on Railsのコードを書くことに人生を費やしたプロの開発者を雇います。 1つの言語を使用して得た知識と経験は、ほとんどの場合、他の言語で再利用できます。 Ruby on RailsをWeb開発に使用し、残りのキャリアをOracleを使用したJavaデスクトップアプリケーションの作成に費やした経験豊富な開発者は、Microsoft SQL Serverを使用するASP.NET MVCプロジェクトに完全に適合します。この人は、この仕事に必要なすべてのことをすでに知っているので、いくつかの特定のものと構文の違いは別です。 一方、ASP.NET MVCの小さなWebサイトをいくつか実行しただけの人は、MVCアーキテクチャを完全に理解していない可能性があり、SQLプロファイリングとは何かを知っている可能性があり、その他の必須事項が不足している可能性があるため、まったく適合しません。知識。 私が以前にCodeIgniterを使用したことがないという理由だけで、CodeIgniterを使用するPHP Webサイトの小さな問題を修正できないと言わないでください。 実際には: 実際には、フリーランスの仕事を検索したり、一般的な求人を見つけたりすると、それらは言語固有のものです。 Magentoで2年の経験を持つPHP開発者を探す人もいます。他のユーザーは、VB.NETの経験が3年以上ある人を検索します。6年間C#の開発を行ったことを述べた履歴書を送っても、VB.NETに言及していなければ、彼らは気にしません。答える。Firebirdの経験を持つ人を求めた場合、彼らはOracleでの10年の経験について聞いてくれません。 理論と、パトリックマッケンジーと私が常識であると説明していること、そして求人の実際の世界の間に、なぜそのような違いがあるのでしょうか。

1
ストーリーポイントはどの単位で推定されますか?
私は、タスクまたは「ストーリーポイント」を完了するために必要な労力に基づいてそれらを呼び出すときにチームがタスクまたは「ストーリーポイント」を推定するケーススタディについて読んでいます。 これらの「ストーリーポイント」はどの単位で推定されますか?この「ストーリーポイント」の概念は、「アジャイル開発」と呼ばれるプロセスに由来すると思います。
9 agile 

2
ARCのプロパティ:常時またはパブリックのみ?
Robert McNallyによる「The Code Commandments:Best Practices for Objective-C Coding」という謙虚に名付けられた記事を2年ほど前に読んだ後、Objective-Cクラスのほとんどすべてのデータメンバーにプロパティを使用するという慣習を採用しました( 2012年5月の第3の戒め)。マクナリーはそうするためのこれらの理由をリストします(私の強調): プロパティはアクセス制限を強制します(読み取り専用など) プロパティはメモリ管理ポリシーを適用します(強い、弱い) プロパティは、カスタムセッターとゲッターを透過的に実装する機会を提供します。 カスタムセッターまたはゲッターを持つプロパティを使用して、スレッドセーフティ戦略を実施できます。 インスタンス変数にアクセスする単一の方法があると、コードが読みやすくなります。 私はほとんどの物件をプライベートカテゴリに分類しているので、1と4は通常、私が遭遇する問題ではありません。引数3と5はより「やわらかい」ものであり、適切なツールと他の一貫性があれば問題にならない可能性があります。最後に、私にとってこれらの議論の中で最も影響力があったのは、2番目のメモリ管理でした。それ以来、私はこれを続けています。 @property (nonatomic, strong) id object; // Properties became my friends. 最後のいくつかのプロジェクトでは、ARCを使用するように切り替えました。そのため、ほとんどすべてのプロパティを作成することは、それでも良いアイデアなのか、それとも少し不必要なのか疑問に思いました。ARCは、Objective-Cオブジェクトのメモリ管理を担当してくれます。ほとんどのstrongメンバーにとって、ivarを宣言するだけで問題なく機能します。とにかく、ARCの前後に手動で管理する必要があったCタイプであり、weakプロパティはほとんどパブリックプロパティです。 もちろん、クラスの外部からのアクセスが必要なものには、まだプロパティを使用していますが、ほとんどのプロパティはほんの一握りのプロパティであり、ほとんどのデータメンバーは、実装ヘッダーの下にivarとしてリストされています。 @implementation GTWeekViewController { UILongPressGestureRecognizer *_pressRecognizer; GTPagingGestureRecognizer *_pagingRecognizer; UITapGestureRecognizer *_tapRecognizer; } 実験として、私はこれをもう少し厳密に行っており、すべてのプロパティから離れると、いくつかの良い肯定的な副作用があります。 データメンバーコードの要件(@property/ @synthesize)は、ivar宣言だけに縮小されます。 私のself.something参照のほとんどは、ちょうどにクリーンアップされました_something。 プライベート(ivars)とパブリック(プロパティ)のデータメンバーは簡単に区別できます。 最後に、これはAppleがプロパティを意図した目的であるように「感じている」が、それは主観的な推測である。 質問に移ります。私は徐々にダークサイドに向かってスライドしており、implementation-ivarsを優先して、使用するプロパティを減らしています。すべてのプロパティを使用することに固執する必要がある理由について少し説明してください。または、必要な場合にのみivarを増やし、プロパティを減らす理由について、現在の一連の考えを確認してください。どちらか一方の最も説得力のある答えが私のマークを受け取ります。 編集:マクナリーはTwitterで、「プロパティにこだわる主な理由は、すべてを実行する1つの方法、すべてを実行する1つの方法(KVC / KVOを含む)だと思います」と言います。

5
パンチカードでのプログラミングの学習[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 パンチカードを使ったプログラミングを人生で一度試したいです。これどうやってするの? 私は30代で、完全にPCの時代に育ち、画面とキーボードを備えたコンピューターでプログラミングしました。父と祖父の仕事のやり方を体験したい。ハードウェア(およびおそらくカード自体)が製造されなくなったと思います。パンチカードリーダーが機能している大学や美術館はありますか?私はボストンにいますが、これをするために旅行したいと思っています。 私はMetaFilterに尋ねたところ、いくつかの複雑な答えが返ってきました(多くの「いいえ、これを実行しないでください」といって言いました)。ロードアイランドのレトロコンピューティング協会へのポインタはありましたが、メールの返信がまだありません。
9 learning 

5
開発中、企業はどのようにしてWebサイトを非表示にしますか?
私はこれに不慣れで、19歳の新しいPHP開発者を雇ったばかりなので、これがどのように機能するのかわかりません。多くの企業は、Webサイトを開発するときに、サイトがインデックスに登録されないようにしています。html5 / cssとphp / mysqlの作業を検索エンジンから非表示にする方法は何ですか?私が間違っていなければ、これらはテクニックです: オフライン開発:ローカルストレージを使用してhtml / cssをレンダリングします。PHP / mysqlがどのように機能するかはわかりません。 .htaccessを使用してアクセスを防止する VPNを使用してアクセスを防止します。

3
文芸的プログラミングとセマンティックWebとの関係は何ですか?
この宝石に偶然出会ったとき、私は(通常)技術文書へのセマンティック/オントロジーベースのアプローチを研究していました。 識字プログラミングとセマンティックWebは異なる時代のアイデアであり、関連性があります。 リンクされた論文、Norman WalshによるLiterate Programming in XMLは、セマンティックWebの中心であるXMLテクノロジーについて説明していますが、文芸的プログラミングとセマンティックWeb またはオントロジーベースのドキュメントとの間の概念的なつながりを見ることはできません。助けて?

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