ソフトウェア工学

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

2
Haskellで書かれたエンドユーザーのための感動的なソフトウェア?[閉まっている]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 素晴らしい技術は目に見えません。 通常の容疑者(GHC、Xmonad、独自の取引ソフトウェア)に加えて、Haskellで記述されたエンドユーザーソフトウェアの優れた例は何ですか? FreeArc、Hledger、「Nikki And The Robots」が良い例だと思います。他に例がありますか(本格的なGUIアプリ、小さなCLIツールなど)? 編集:たとえば、私はWings3Dに魅了されています。なぜなら、Erlangで書かれているのに、ユーザーはそれを理解できないからです。うまくいきます。Haskellの弱点には、クロスプラットフォームのGUIがあります。Haskellで書かれたGUIアプリは一般的には多くなく、それらのほとんどは使いやすく、インストールもコンパイルも簡単ではありません。難しいことを簡単に見せる方法から学ぶ良い例は何ですか?
9 haskell 

8
OOPテクノロジーの死[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 アスペクト指向プログラミングについて何度も聞いたことがありますが、そのほとんどはプログラミングにおける「次世代」のテクノロジーであり、OOPを「殺す」予定です。 正しいですか?OOPは死ぬのでしょうか、それともその理由は何でしょうか?

4
プロジェクトで使用するオープンソースフレームワークの変化にどのように対処しますか?
それは私の個人的な癖かもしれませんが、私は生きているプロジェクトのコードを最新の状態に保つことが好きです-彼らが使用するライブラリー/フレームワークを含みます。その一部は、完全にパッチが適用され、最新の状態になっている場合、Webアプリの方がより安全であると考えていることです。その一部は、私の部分的な強迫性のほんの一部です。 過去7か月間で、ソフトウェアの大幅な書き換えを行いました。遅くて本質的に製品として死んでいたXarayaフレームワークを削除し、Cake PHPに変換しました。(私たちがCakeを選んだ理由は、ソフトウェアを非常に迅速に書き直す機会があり、Xarayaを十分にパフォーマンスを向上させてしばらくの間価値があるためです。) SimpleTestを使用して単体テストを実装し、すべてのファイルおよびデータベースの命名規則などに従いました。 Cakeは2.0に更新されています。そして、アップグレードのための実行可能な移行パスがないようです。ファイルの命名規則は根本的に変更され、PHPUnitに代わってSimpleTestが廃止されました。 なんらかの変換ツールがない限り、Cakeを更新してレガシーコードを徐々に改善して新しいCakeフレームワークのメリットを享受することは不可能であるため、これはほぼ1.3ブランチに留まることを強制します。 。そのため、いつものように、Subversionリポジトリに古いフレームワークが作成され、必要に応じてパッチを適用します。 そして、これが毎回私を魅了するものです。そのため、多くのオープンソース製品は、それらに基づくプロジェクトを最新の状態に保つのに十分なほど簡単ではありません。開発者が新しい光沢のあるおもちゃで遊び始めると、いくつかの重要なパッチが古いブランチに適用されますが、彼らの焦点のほとんどは新しいコードベースに置かれます。 使用しているオープンソースプロジェクトの急激な変化にどのように対処しますか?また、オープンソース製品を開発している場合、新しいバージョンを開発する際にアップグレードパスを念頭に置いていますか?

8
プログラマー/開発者個人組織[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 開発者としての作業を整理するために、どのツール/方法論/戦略を使用していますか?詳細を教えてください。


5
新しい機能やバグ修正のために、単体テストの作成に通常どれくらいの時間を費やす必要がありますか?
新しい機能を実装したり、バグを修正したりする必要があるときは、通常、テストで状況を再現しようとします。フィクスチャを考え出し、テストを書くのに3時間ほどかかることがあります。実際の機能の実装やバグの修正には1時間もかかりません。 実際に機能を実装したり、バグを修正したりするのに比べて、テストを書くために他の誰かが少なくとも3倍長い時間を費やしていますか?コードの作成に対するテストの作成に費やした時間の許容比率はどのくらいですか?

1
.NETアプリケーションの権限/適切なモデル/パターン
柔軟かつ簡単に(そのようなものが存在する場合)実装すると同時に、可能であれば組み込みの手段を利用する必要がある これまでのところ、MembershipProviderとRoleProvidersを実装しています。これはかっこいいですが、次にどこに行きますか? 「特権」という用語を追加し、アプリケーション内にハードコードする必要があるように感じます。ユーザーは、特権を役割に追加し、役割をユーザーに割り当てるように役割を構成します。 それは良いモデルのように聞こえますか?ロールに追加することに加えて、ユーザーレベルで特権を追加することを検討する必要がありますか?セットアップ(混乱)と次のサポートに問題があると思います。 そうしないと、一部の特定のユーザーにはより少ない特権が必要になります-管理者は別のロールを作成する必要があります。 このようなシステムの特効薬はありますか?そして、なぜMicrosoftはメンバーシップとロールプロバイダーよりも先に進まなかったのですか? 別のアイデア:ロールを「特権」ホルダーのままにして、ハードコーディングします。次に、使用可能なすべてのマークアップ/属性などを使用して、アプリ内のこれらのロールをコード化できます-すべてMicrosoft。 新しいエンティティ「グループ」を追加し、このような関係を作成します ユーザー ユーザーグループ 団体 RoleGroups 役割 この方法で、ロールをグループにまとめ、それらのグループをユーザーに割り当てることができます。素晴らしいサウンドで、他のソフトウェアパターンと一致します。しかし、実際にはRoleProvider内に次のようなものを実装することはできません。 AddUsersToRoles RemoveUsersFromRoles そして、ハードコーディングされるため、いくつかのものが実際にはもう意味をなさない DeleteRole CreateRole

3
ファイルを本番環境に転送する方法は?
私たちは、既存のコードベースでかなり大きなWebサイトに取り組み始めたグループです。テストサーバーと本番サーバーがあります。 私たちのアイデアは、プッシュアクセス権を持つ多くの開発者がいるテストリポジトリを用意することです。そして、ほんの少ししかプッシュできない祝福されたリポジトリ。祝福されたレポは常に安定していて、最新の本番バージョンを表しているはずです。 ファイルを本番環境に転送するプロセスを自動化するにはどうすればよいですか?本番ファイルをバージョン管理するのは悪いことですか?このように、祝福されたリポジトリにプッシュすることはデプロイを意味します。しかし、マージの競合があるとどうなりますか?本番サーバーは解決されるまで壊れますか?
9 git  workflows 

2
Web開発の準備とプロジェクト全体のワークフロー
私はWeb開発プロジェクト(フロントエンドとバックエンド)で一人のプログラマーとして働いています-私はいくつかのプロジェクトを完了しているので、これはかなり新しく、いくつかのアプローチを読んで試してみて、ある方法に到達しましたそれらについて。質問と私の説明はかなり長いので、しばらくお待ちください。 私が探しているものは、次のとおり です。1.何を構築する必要があるかを正確に理解した後、開発を開始する前に通常行われる準備/計画。 2.経験から、私が現在フォローしているプロセスについてのフィードバック/提案を教えてください。 私が扱うクライアントは、一般にスタートアップであり、予算が限られているため、時間単位で課金することはできません(これは、大企業が通常、クライアントに[人/時間]で開発プロジェクトに請求する方法です)。固定予算で作業します。 これが私が現在従うプロセスです 。1.プロジェクトの範囲を測定し、2、3回の会議で彼らが何を達成しようとしているのかを理解しようとします。 2.彼らがプロジェクトから何を得ることが期待できるかを一般的に説明する見積もりで大まかな球場図を与えます、私は機能について具体的にしようとしますが、私は知っているのでこれにあまり多くの時間を入れませんクライアントは単に見積もりを求めているだけで、実際には変換しません。 3.支払いと作業に関するJeff Atwoodの提案に従います。 15%の支払い-作業を開始する前の事前準備 このフェーズでは、最終的なWebサイトのHTMLモックアップが作成され、Webサイトを可能な限り詳しく説明するフローチャート(yEd付き)と、フローチャートにはない他の機能を説明するドキュメント。これは、プロジェクトのすべての詳細を調べ、適合する価格と、合意された価格で実装するにはあまりにも多くの作業が必要なものを完成させることによって行われます。詳細については前に説明していませんので、これらの一部は多かれ少なかれ実際に何が得られるかについての交渉です。これは固定予算プロジェクトであるため、固定要件が必要です。それ以外の場合、機能が追加されても価格は下がり続けます。 配色、デザインワイヤーフレーム、デザインPSDも完成します。 35%の支払い -開発 の開始プロジェクトは修正され、開発を開始します。サーバーでサイトをホストしています。クライアントはフロントエンドにアクセスできますが、コードにはアクセスできません。 30%の支払い -コードをクライアントのサーバーにシフトする/クライアントにサーバーアクセスの詳細 を与えるサイトをライブにする 20%の支払い -すべてのバグが修正された後、サイトが稼働してから数週間。 質問: 1.何を構築するのかが正確にわかったら、コーディングを開始する前にどのような計画を立てますか? 2.経験から、プロセス全体のどの部分を異なる方法で実行しますか?

5
基本言語の基本機能は?DSLの提案?
ようやくインタプリタとコンパイラを作成することの背後にある複雑さを理解し始めました。この時点に到達する前に、TinyBasic、1964(Dartmouth)Basicのいくつかのバージョンと、これらの言語での独自の拡張を構築しました。最新のプロジェクトは、私がオープンソースベーシックと呼んでいるプロジェクトです...人が興味を持つ言語の他の機能は考えられなかったからです。言語のソースを開き、複雑な処理がどのように行われるか(スキャン、解析、解釈、およびコンパイルがどのように行われるか)を理解できるようにするため Open Source Basicは、最初にスタックベースの言語に解釈されます。次に、そのスタックベースの言語が解釈されてすぐに実行されるか、CLR実行可能ファイルに変換されます。 私の質問はすべてこれに要約されます: Basicベースの言語の基本的な機能/構成は何ですか?私はこれらの基本的な構成をすでに持っています:割り当て、式、変数、いくつかの関数(ランダム、ToUpper、ToLower)、ループ(forおよびdo-while / until)、If(ブロックおよび単一行)Else決定、コンソールベースの入力(入力)、出力(Print)、およびサブルーチン(まだパラメーターなし)。 基本的な構成を自分の言語に追加する「完了」したら、どのように分岐する必要がありますか?どのドメインに?言い換えると、すべてのジェネリック構造を機能させたら、オープンソースの基本言語はどの方向に進むべきでしょうか? お時間をいただきありがとうございます ドミニク

2
プロジェクトのGUI、BLL、DAL組織
私はアプリケーションレイヤーについて読んでおり、次のプロジェクト(c#、. Net)でこのデザインを使用したいと考えています。いくつかの質問: レイヤーの分離は名前空間を通じて行われますか?Project.BLL.Whatever、Project.DAL.Whatever レイヤー、コンポーネント(Project.BLL.Component1)、またはコンポーネント、レイヤー(Project.Component1.BLL)で分離する方が適切ですか? 私のDALの場合、このレイヤーはさまざまなクラスを使用してさらに編成されますか?すべてのデータベース呼び出しが単一のクラスに入れられる場合、組織はありません。これらを異なるクラスまたは名前空間に分割する方が良いでしょうか? DALクラスは通常静的ですか?毎回そのメソッドの1つを呼び出す前にDALオブジェクトをインスタンス化するのは面倒です。 これらのレイヤーで正しい方法で物事を行うためのその他のヒントをいただければ幸いです。


2
iOS、Android、ウェブ向けに専門的に開発-洞察
これは3つすべてを開発する方法についての質問ではなく、さまざまなクロスプラットフォームの方法などを知っています。しかし、開発者の観点から、基本的にiOS、Android、およびWebアプリの開発がどれほど難しいか知りたいですか? 私は現在、モバイル/ウェブ開発者としての最初の仕事をしています。私はすでに最初のiPhone / iPadアプリを開発しましたが、今やAndroid用のアプリを開発する必要があります。試したWebバージョンが十分に機能せず、Webデータベースがうまくいかなかったためです。しかし、私はすべてのAPIを覚えておくなどの点で3つすべてを開発するのが得意であるかどうかはわかりません。さまざまなプラットフォームでAPIを使用する方法だけでプログラミング言語に問題があるとは言えません。また、私が見る他のすべての言語は、暇なときに、自分が薄くなっていくように感じます。 一人の人がiOS、Android、Webアプリを開発することは現実的ですか?iOSとWebベースのアプリに削減することを検討すべきですか? 私はすべてを自分で開発しているので、すべてに最適な解決策は何かを議論する人が誰もいません。 そこにクロスプラットフォーム開発者はいますか?企業はプラットフォームごとに異なるチームを持っていますか? どんな洞察も、私が私の頭をまとめるのに役立ちます。うまくいけば、この質問は理にかなっています。
9 android  web  mobile  ios 

2
RESTful参照表現-セマンティックリンクとURI
お客様のアカウント情報を公開するためのRESTful APIを設計しています。現在のリソースに関連する他のリソースへの参照を含む表現があります。これは、公開APIや公開資料で見つけたいくつかのベストプラクティスからのものです。表現は、XMLまたはJSONのいずれかです。 たとえば、アカウントリソースの場合、アカウントのアドレスへの参照があり、ページ番号付きリストリソースの場合、最初、次、および前のページへの参照があります。 APIは<link title="" rel="" href="" />、O'Reillyの本に記載されているセマンティックリンクを使用して最初に設計され、NetflixとGoogleによってAPIで使用されました。QAエンジニアがオートメーションスイートを作成するときがきたとき、リンクの逆シリアル化に問題がありました。FacebookとTwitterのAPIで使用されている、より単純なuri文字列要素を提案しました。 私たちのQA技術者たちは、それ以来、逆シリアル化の問題を解決しましたが、セマンティックリンクでの現在のAPI仕様の使いやすさにはまだ不安があります。以前のXML-RPC APIはユーザーにとって難しすぎたため、私たちのAPIは主にお客様と一部のサードパーティパートナーシップによって使用されます。RESTに移行しました。 tl; dr; 質問: セマンティックリンク表現を実装した人が、困難を伴う消費者の問題を経験しましたか? アップデート(6/21):セマンティックリンクを使用することにし、混乱がエッジケースであることを期待します。APIが一部のコンシューマーでライブになったら、私たちの経験で質問に答えることを忘れないでください。 編集:例を追加 セマンティックアカウントJSON: { "username": "paul", "links": [ { "title": "addresses", "rel": "related", "href": "http://example.com/account/paul/addresses" }, { "title": "history", "rel": "related", "href": "http://example.com/account/paul/history" } ] } セマンティックアカウントXML: <account> <username>paul</username> <link title="addresses" rel="related" href="http://example.com/account/paul/addresses" /> <link title="history" …
9 rest  semantics 

3
jQueryプラグインにjQueryを含めても大丈夫ですか?
jQueryライブラリを含む質問jQueryプラグインファイルがstackoverflowで今日出てきました。私はプラグインにjQueryを含めることを強くお勧めしません。 これについては、他の人からのサポートは得られませんでした。実際、jQueryを含めるサポートは、そうでない場合よりも多くありました。これは大丈夫ですか、これを行わない理由はありますか?jQueryのどのバージョンが使用されているかについては、プラグインを使用する開発者次第であると思うので、それは本当に悪い考えだと思います。
9 jquery  plugins 

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