ソフトウェア工学

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

6
私の貿易を改善する方法
私は現在、ソフトウェア開発者として働いており、ソフトウェア工学の学位を取得しています(前者は後者を行いません)。 私は自分の能力を十分に発揮できると確信していますが、もっと上手にできると感じています。私の最大の落とし穴は私のビジネススキルにあることを知っています。たとえば、なぜそのような方法で何かを実装するように求められるのか、最初はよくわかりません。その背後にあるビジネス要件を理解していないためです。 私のビジネススキルを向上させる上で何か良いアドバイスはありますか?それとも経験に伴うものですか?

2
並行処理の抽象化はUNIXプロセスをエミュレートしていますか?
さて、私は今日これについて考えていました、そして私はそれについて完全に主観的でバイアスのある意見を求めるようになりました。逆説的に、これにもかかわらず、私はそれが炎戦の飼料でもないと思います。完全に文明化された会話の余地はあると思います-Vim対Emacsはほとんどありません。 私は多くの並行処理の抽象化、特にスレッドの上に構築されたものを使用しました。メッセージパッシング、デフォルトでは不変、デフォルトではスレッドローカル、その他のいずれでも、それらの間には大きな傾向があります。 トレンドは、データ共有を暗黙的ではなく明示的にすることで、スレッドの考え方を逆転させているというものです。つまり、特に指定しない限り、すべてのデータは共有されません。これは、Javaなどの言語で見られる従来のスレッド化とは逆です。(ただし、Javaは独自の高レベルの同時実行抽象化をサポートしていることを知っています。)たとえば、メッセージを明示的に渡します。どの変数がスレッドローカルであるかを明示的に指定します。変更可能な変数を明示的に指定します。これらは、いくつかの言語で見られるほんの一例です。 この並行性の簡単なスタイルは現代のコンセプトだと思いました。間違えた。最近fork()やpipe()のようなUNIXのおもちゃをいじり始めましたが、UNIXの開始以来、簡単で明示的な並行処理メカニズムが存在していることを知ってショックを受けました。 70年代のC + UNIXが同時実行性を多くの最新のトレンディなスレッド化メカニズムよりもはるかに簡単にすることを実現することには、少し奇妙な点があります。 だから、ここで私が疑問に思っているのは...これらの現代のスレッド抽象化は、すべての明示性とデフォルトで共有されない特性を備えたスレッド上でUNIXスタイルのプロセスを単にエミュレートしようとしているのでしょうか?STMのようないくつかのメカニズムがDBスタイルのトランザクションのようなものを提供することは確かですが、それは本当に並行性のための現代的で革新的なソリューションですが、ほとんどの場合、UNIXプログラマーが昔行っていたことを行う新しい方法のように見えます。 言うまでもなく、私はUNIXのファンではなく、想像力を伸ばしているわけでもありません。プロセスは多くのプラットフォームで初期化するためにスレッドよりもはるかに遅いことを認識していますが、これは概念的に述べています。

3
システムプログラミングを始めますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 5年前にプログラミングを発見して以来、さまざまなことを行ってきました。私は数多くのプログラミング言語とテクノロジーを学び、多くの興味深いことを試しました。コンソールとグラフィックスの両方でゲームを作成しました。デスクトップで実行されるコンソールアプリケーションとウィンドウアプリケーション、CRUD Webアプリケーション、独自の(くだらない)PHP XMLベースのフラットファイルデータベースです。Webとデスクトップに加えて、Androidでモバイル開発を試しましたが、それを楽しむことができなかったので、それをやめました。私は最近私のWebプロジェクトを終了し、現在関数型プログラミングを学んでいます(Haskell)。 しかし、私はこれまでシステムプログラミングに手を出したことがありません。オペレーティングシステムと対話する低レベルでソフトウェアを構築するという考え(それがそのために使用する正しい用語かどうかさえもわかりません)は興味深いようです。問題は、どのように始めればいいのかよくわからないので、これを使って何をするかの例がもっと必要なことです。 Win32 APIを学ぶことから始めるべきですか?かなりの数のコンソールアプリやゲームを作成するためにC ++を使用したので、C ++を知っていますが、数年は使用していません。それは行く方法ですか?また、Cはどうですか?夏が終わり大学が始まる前に、Cについてもっと詳しく(K&Rの本を使って)勉強する予定です。プログラミングの確かなバックグラウンドを持った新入生として、良いスタートを切りたいです。

2
スレッドの安全性、不変性などに注釈を付ける準標準の属性セットはありますか?
誰かが作成したカスタム属性を説明しているブログ投稿を除いて、それは何の牽引力も得ていないようです- 不変性を強制する方法を説明するもの、スレッドセーフティのドキュメント化、JCIPアノテーション後の属性のモデル化など-があります出現している標準はありますか?MSが将来のために計画している可能性のあるものはありますか? ライブラリ間の同時実行性の相互運用性の可能性がある場合、これは標準的なものです。文書化の目的と、静的/動的なテストツールにフィードするための両方。 MSがその方向で何も実行していない場合、CodePlexで実行できますが、そこでも何も見つかりませんでした。 <opinion> C#やJavaのような命令型およびオブジェクト言語では、並行性とスレッドセーフティは本当に難しいので、うまくいけば、より適切な言語に切り替えるまで、それを飼いならしてみる必要があります。</ opinion>
8 c# 

4
パブリックリポジトリとプライベートリポジトリ
販売中のアプリを開発しているとしましょう。このプロジェクトにパブリックリポジトリを使用することには意味がありますか?デフォルトの著作権はコードを使用している他の誰かからコードを保護していませんか?もしそうなら、プライベートリポジトリに支払うことにはどのような利点がありますか?

4
オープンソースソフトウェアのバグの修正を開始するにはどうすればよいですか?
私はCプログラミングの知識が豊富で、Cで開発されたオープンソースプロジェクトに貢献したい学生です。SourceForgeを検索し、7-Zipを選択しました。 私はまずバグを修正することから始めようと考え(ウェブサイトで多くの人から提案されました)、いくつかのバグを経験しましたが、バグへの対応方法と修正方法を理解できませんでした。何もわかりませんでした。 これへの取り組み方を説明していただけますか?ダウンロードしたソースコードのファイルをいくつか調べましたが、何も理解できませんでした。

5
フィーチャー膨らみのようなものはありますか?
表現ソフトウェア/機能の膨張に遭遇しましたが、これは本当のことですか、それともパフォーマンスの問題、メモリとディスクのフットプリント、ユーザーエクスペリエンス、オンデマンドインストールなどについて話すべきでしょうか?ここで何が欠けていますか?

8
「コア」ライブラリが悪い考えになるのはいつですか?
ソフトウェアを開発するとき、私は多くの場合、さまざまなプロジェクトで共有および参照できる便利なコードを含む集中型の「コア」ライブラリーを持っています。 例: 文字列を操作する関数のセット 一般的に使用される正規表現 一般的な展開コード しかし、私の同僚の一部はこのアプローチを避けているようです。バグが修正されると、多くのプロジェクトで使用されるコードを再テストすることによるメンテナンスのオーバーヘッドなどの懸念があります。今私はこれをいつすべきかを再考しています。 「コア」ライブラリを使用することが悪い考えとなる問題は何ですか?

7
このためのオープンソースライセンスはありますか?
私は自宅で、自分の時間に、自分の知識と機器を使用して、契約またはNDAなしでコードを記述しました。このコードをオープンソースにして、自宅や他の場所で後で使用する権利を否定することなく、雇用主向けに作成したソフトウェアで使用できるようにしたいと考えています。 それが「パブリックドメイン」にあると言うことがこの目的に合うかどうか、またはオープンソースライセンスを見つける必要があるかどうかはわかりません。ソースまたはバイナリのライセンスを含めるための要件が​​まったくない、クローズドソースの専用ソフトウェアでコードを誰でも使用できるようにしたい。そして私はそれを使用するために訴えられる人のリスクを最小限にしたいと思います。(私は人が訴訟から100%安全になることは決してできないことを知っています。) この目的に合ったオープンソースライセンスはありますか?私がやりたいことは、どの程度可能ですか? ライセンスをコードファイル自体のコメントに含めてもかまいませんが、それは明らかにバイナリには当てはまりません。

1
OpenIDを使用して複数のドメインにログインする:この計画は実行可能ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前に閉鎖。 例えば: 2つのドメインで2つのコミュニティサイトを実行しています(それらをexample.comおよびと呼びますexample.net)。 それを後でより多くのドメインに拡張できるようにしたいと考えています。 複数のタイプのログインを許可したい(OpenID、Facebook、Twitter、標準のユーザー名/パスワード)。 あるサイトにログインしている人が自動的に別のサイトにログインすることを望んでいます。 つまり、StackExchangeネットワークに少し似ています。 この場合、この計画は機能しますか? OpenID依存パーティとしてexample.com、およびexample.net(およびそれ以降の追加)をセットアップし、OpenIDログインid.example.orgのみを受け入れる。 セットアップexample.comとexample.netあなたがログインしている場合ように、あなたがそれらを訪問し、初めてOpenIDの返信即時要求を行うためにid.example.org、あなたのすぐと自動的にあなたが訪問しているサイトにログインします。ログインしていない場合は、Cookieを設定して、ページリクエストごとに保存する必要があります。 id.example.orgOpenIDプロバイダーおよびコンシューマーとしてセットアップします。また、Facebookやその他のIDプロバイダーを利用し、標準のユーザー名/パスワードアクセスを許可する必要があります。(1つのアカウントに複数のログインメソッドをアタッチできます。) ログアウト時に、データベースの認証トークンを変更するだけです。ユーザーは引き続きCookieを保持しますが、それらは無意味になります。したがって、ユーザーはすべてのサイトから同時にサインアウトできます。1人のユーザーに対して一度に複数の認証トークンを格納できます(サイトごとに異なる必要があります)。そのため、ユーザーは1つのブラウザーでサインアウトしても、別のブラウザーではサインインできます。サインアウトすると、常にすべてのサイトからサインアウトします。 上記で私が見ることができる唯一の問題はこれです: 誰かが訪れるexample.com。「ログインしていない」Cookieが設定されます。 Zieは次に進みますexample.net。同上。 その後、Zieはサインインし、引き続きブラウジングしexample.netます。 Zieは次に戻りexample.com、「ログインしていない」Cookieが原因でチェックid.example.orgされないため、ログインされません。 ただし、zieが「ログイン」ボタンをクリックするとすぐに、zieはログインします。 これは大きな問題ではないと思います。 全体として、かなり良いシステムだと思います。審査をお願いします。予想していなかった問題はありますか?バギーなのか遅いのか?StackExchangeは非常に異なる方法を使用します。私は彼らがそのための正当な理由があると思いますか?
8 openid  login 

8
C ++の美しいコードとは何ですか?なぜほとんどのプログラマーはそんなに気にかけているのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 ほとんどのプロジェクトはC ++ APIを使用しているため、APIの制約とプロジェクト自体の制約を扱います。 私はプログラミングの初心者ですが、OOPを使用するのは好きではありません。他のプログラマーが何らかの種類のデータ編成の一貫性を壊すのを防ぐためにプライベートスコープで制限することが非常に重要である理由を明確に誰も説明できなかったためです。 QtやOgre3Dのような素晴らしいものを作ることができるので、私はまだOOPで大丈夫ですが、それらはAPIであり、アプリケーションではなく、それらのコードは完璧である必要があり、誰も作業を批判できません。 ほとんどのプログラマーがAPIではなくアプリを作成しているため、なぜ天才的なコードを設計するような完璧なコードを作成し、これに時間を費やしたいのか、よくわかりません。

3
デフォルトのアクセス修飾子を使用する必要があるか—コーディング慣行?
通常、新しいグローバル変数を作成するときは、そのアクセス修飾子を定義しません。したがって、Javaのように、プロパティのデフォルトアクセス修飾子を採用します。デフォルトのスコープ外でその変数にアクセスする必要がある場合は、アクセス修飾子を変更します。それ以外の場合はそのままにしておきます。だから私の質問は「私はそれを正しくやっていますか?デフォルトのアクセス変数を持っているのは普通ですか?またはそれらにプライベート/パブリックを使用するべきですか?アクセス修飾子を使用しないのは良いコーディング慣行ですか?」


6
JavaでCaseInsensitiveString型を持つことの長所と短所は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 を作成したくなりますfinal class CaseInsensitiveString implements CharSequence。 これにより、通常のを使用する代わりに、このタイプの変数とフィールドを定義できますString。たとえば、a Map<CaseInsensitiveString, ?>、a Set<CaseInsensitiveString>なども使用できます。 このアプローチの長所と短所は何ですか?

5
クロスプラットフォームのC ++ GUIライブラリを選択する場合、何を探す必要がありますか?
学習C ++プログラマーとして、自分のプロジェクト用のGUIフレームワークまたはライブラリーを選択しようとしています。 私はQtについてある程度の経験があります。それは非常に単純で、非常に優れたドキュメントがあり、多くのツールを提供しますが、標準ライブラリの多くを複製しているようです。 すべてのC ++ GUIライブラリはこのようなものですか?GUIライブラリでは何を探す必要がありますか?特定の問題が与えられた場合にどの方法が最適かをどのように判断しますか 特定の1つのライブラリに焦点を当てるべきですか、それともそれらが異なる目的に役立つ可能性があるので、それらのいくつかを知っておく価値はありますか?

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