この記事では、ソフトウェア開発を検討します。プロセスとステップを強調し、特定の手法の長所と短所を指摘し、エラーについて警告します。 
      
        
        
        
      
    
      
        
        
        
      
    
      
        
        
        
      
    
      
        
        
        
      
      問題の声明 
      
        
        
        
      
     
      
        
        
        
      
     ソフトウェア開発の最も重要な段階は、問題の記述です。最終結果は、問題の記述の正確さに依存します。 
      
        
        
        
      
    
      
        
        
        
      
      技術仕様を作成します。 
      
        
        
        
      
     
      
        
        
        
      
     参照条件は、ソフトウェアのすべての機能を説明するドキュメントであり、誇張された例です。 
      
        
        
        
      
    
      
        
        
        
      
     オンラインストアを作成する 
      
        
        
        
      
    
      
        
        
        
      
     カテゴリーを追加したり、写真と説明付きのカテゴリー別に製品を追加したりできる機能を備えたオンラインストアを作成します。 
      
        
        
        
      
    
      
        
        
        
      
     システム参加者: 
      
        
        
        
      
      1)管理者 
      
        
        
        
      
      2)バイヤー 
      
        
        
        
      
    
      
        
        
        
      
     ユーザー機能 
      
        
        
        
      
    
      
        
        
        
      
     管理機能: 
      
        
        
        
      
      1)カテゴリの削除と編集の追加 
      
        
        
        
      
      2)製品の削除と編集の追加 
      
        
        
        
      
      3)商品購入の削除および編集リクエストを追加します 
      
        
        
        
      
    
      
        
        
        
      
     ユーザー/バイヤー機能 
      
        
        
        
      
      1)製品をカートに追加する 
      
        
        
        
      
      2)チェックアウト 
      
        
        
        
      
    
      
        
        
        
      
     これは、タスクが顧客側でどのように見えるかであり、ここに義務を追加し、これは契約への追加になることができます。 
      
        
        
        
      
    
      
        
        
        
      
     よく見て、段階に分けましょう。 
      
        
        
        
      
      1)図面およびレイアウト設計。 
      
        
        
        
      
      2)データベース設計。 
      
        
        
        
      
      3)アーキテクチャの設計。 
      
        
        
        
      
      4)プログラムコードの記述。 
      
        
        
        
      
      5)データベースの作成A 
      
        
        
        
      
      6)ホスティングとドメインの購入。 
      
        
        
        
      
      7)Webサイトのプロモーション。 
      
        
        
        
      
    
      
        
        
        
      
     必要に応じて、さらに2つの機能を追加します。 
      
        
        
        
      
      1)ユーザー登録 
      
        
        
        
      
      2)ユーザーは製品を追加できます 
      
        
        
        
      
    
      
        
        
        
      
      2行の違いのように見えますが、これはもはやオンラインストアではなく、タスクはavito、alibabaのようなサービスに変わる可能性があり、時間と複雑さが大幅に増加します(テーブルは5-10ではなく100になります)。 
      
        
        
        
      
    
      
        
        
        
      
      設計エラーの例 : 
      
        
        
        
      
     多くの場合、アーキテクチャのエラーと問題の定式化により、開発の時間の複雑さとコストが増加する可能性があります。例: 
      
        
        
        
      
    
      
        
        
        
      
      1)Yandex APIまたはGoogleマップを使用して地図上に製品またはサービスのジオロケーションを表示するサービスがあり、その結果、サードパーティのサービスが結果として提供しない特定の計算が必要でした:マップエンジンをインストールし、データベースを変更し、データを変換し、必要な式を書き、適応する必要がありますカードモジュール機能の古いコード。 これには時間と費用がかかります。 
      
        
        
        
      
    
      
        
        
        
      
      2)データベースが誤ってモデル化されたため、いくつかのフィールドを追加し、プログラムコードを変更する必要があります。 
      
        
        
        
      
    
      
        
        
        
      
      3)参照条件が正しく作成されていない:完全な書き換えが必要です。 
      
        
        
        
      
    
      
        
        
        
      
      4)開発用のテクノロジーが正しく選択されていません。提供されていない言語でマルチタスクマルチスレッドアプリケーションを作成します。選択したフレームワークには必要な機能はありません。 
      
        
        
        
      
    
      
        
        
        
      
     リストは状況に応じて無期限に継続することができます。有能な技術タスクを持ち、全体像を提示する方が良いです。 
      
        
        
        
      
    
      
        
        
        
      
      開発ツールの正しい選択 
      
        
        
        
      
      1)IDE-多くの最新の開発環境では、オートコピー(自動コード補完)、バージョン管理システムとの統合、バージョンビルドシスター、エラーのヒント、テストシステムとの統合、デバッグシステムとの統合を提供します。 
      
        
        
        
      
      2)バージョン管理システム:プログラムコードを失うリスクを軽減し、チーム開発を可能にし、コードをブランチに分割できるようにします。これは、古いバージョンのコードを復元する機能です。 
      
        
        
        
      
      3)プロジェクト管理システム:チームのタスクの設定、タスクの分離、開発プロセスの制御を可能にします。 
      
        
        
        
      
      4)フレームワーク:開発をスピードアップし、ロジックを分割し、タスクに特定の機能セットを持たせることができます。 
      
        
        
        
      
      5)言語とデータベースの選択はここでは考慮されません-個人的に、私の意見はタスクから選択されるべきです。 
      
        
        
        
      
    
      
        
        
        
      
      反復およびチーム開発とエラー 
      
        
        
        
      
     チームには3人の開発者がいます。彼らの責任はコードの一部に分けられ、月曜日に集まって、次の2週間で実行するタスクを決定しました。 
      
        
        
        
      
      1)最初のモデルは、作成日を表示および追跡できるように、モデルを変更することを決定しました。 
      
        
        
        
      
      2)2人目は、登録を修正することを決定しました。 
      
        
        
        
      
      3)3番目は設計を変更しました。 
      
        
        
        
      
      1週間以内に、3人全員がコードを記述し、リポジトリを変更しました。その結果、最初の開発者がコードを変更し、2番目のプログラマーが担当した部分が落ちました。 変更が加えられた部分はうまく機能し、エラーに気付かなかった他の場所では注がれ始めました。 
      
        
        
        
      
    
      
        
        
        
      
      テスト実装 
      
        
        
        
      
     一連の機能を定義してから、オンラインゲームを開発するためのフレームワークを書き始め、標準言語関数(java)を使用してテストを開始しました。 さらに、フレームワークの機能をテストするために、ユーザーをエミュレートするグローバルテストをさらにいくつか作成する必要がありました。 もちろん、一連のテストを実行するのは不便でかなり費用がかかるので、自動化する必要があります。 
      
        
        
        
      
    
      
        
        
        
      
      リファクタリングの利点 
      
        
        
        
      
     エラーに気づいたらすぐに、アーキテクチャとプログラムコードの欠陥を修正することをお勧めします。 絶え間ないリフォーリングは開発中により多くの時間を要しますが、多くのエラーでいくつかのグローバルな変更(深刻なリライト)を開始した場合よりも、一般に時間コストの明白な増加をもたらします。 
      
        
        
        
      
    
      
        
        
        
      
      正しい締め切り 
      
        
        
        
      
    
      
        
        
        
      
     典型的なオンラインストアをどれくらい作成しますか? すべてがあなたのためにセットアップされ、あなたは長い間働いてきました。あなたは言語とコンテンツ管理システムに堪能であり、チームとして働いています。  5日間は1週間になる可能性があります(この期間、高品質の復元力のあるアプリケーションを受け取ることはできません)。 不可抗力を考慮し、競合を回避するために、2を掛けてください。 
      
        
        
        
      
    
      
        
        
        
      
     節約を想像するのは難しくないと思います:努力、時間、お金、神経。 上記のすべてのニュアンス、トリック、エラーを考慮します。