簡體   English   中英

如何設計一個簡單的Web應用程序?

[英]How do I design a simple web application?

我具有PHP的基本知識,並且之前做過一些小型個人項目。 由於我的程序很小,通常包含少於五個類,因此我馬上就開始編寫代碼-在進行過程中考慮我的數據庫表和用戶界面設計。 問題是,我經常在項目中期發現自己迷失在自己的想法中。 因此,我認為某種形式的正式規划從一開始就很實用。

我最近一直在閱讀幾本軟件工程書籍。 一本書說,在Web工程中,應使用敏捷過程,例如極限編程和Scrum。 向我介紹了用例,CRC卡和UML之類的工具-對於我所想到的簡單項目,我認為所有這些工具都過於復雜且不切實際。

另一方面,我閱讀的一篇網絡文章只是簡單地建議了UI的草圖,站點地圖和簡單的工作流程圖。 他們似乎很實用,但過於基礎和非正式。

什么是構建簡單的Web應用程序的實用但正式的方法?

不要那么快地丟棄用例或類似的概念,例如“用戶故事”。 這些工具帶來的好處是使您考慮該站點需要做什么。 這可以指導所有進一步的技術工作,並幫助您專注於重要的事情,而不是迷失在有趣但低價值的工作中。

想一想網站需要做的前n件事,並列出其中的每一項:

  • 在這種特殊情況下,用戶的最終目標
  • 涉及的人員和其他系統的種類( 參與者 ,用例用語)
  • 開始此活動之前需要具備哪些條件前提條件
  • 成功實現目標主要參與者需要執行的基本步驟
  • 如果其中一個步驟無法完成怎么辦
  • 成功完成案件的系統外觀( 后置條件
  • 如果在執行過程中出現錯誤,系統應該是什么樣子

通過使用這些用例中的少數幾個,您可以全面了解實現目標需要構建的內容。 如果看起來工作量太大,您可以查看哪些目標的重要性更高或更低,並削減或推遲那些價值較小的目標。 如果您想到該站點應該做的新事情,則可以使用以下現有用例:

  • 提供該功能的主頁,因此請修改適當的用例以合並該功能,
  • 不要提供房屋,以表明您錯過了用例或發現了一個新用例,因此您應按照上述說明進行詳細說明,或者
  • 不要提供房屋,因此請注明沒有必要,因此您不應該花時間在房屋上。

訣竅是選擇適當的抽象和形式級別。 高水平地工作,非正式地寫作,您可以快速淘汰它們。 當它們不再有用時(您已勾勒出大部分應用程序,現在正認真處理細節),請將它們放在一旁。 當您想到新事物時,看看它們是否合適。 泡沫,沖洗,重復。

您必須首先問自己幾個簡單的問題:

1)我是否想在以后重用並擴展此代碼? 如果是這樣,最好使用一些基本模式,例如MVC(模型-視圖-控制器)或使用許多可用的PHP框架之一。 已經建立的框架在設計和使用方式上更具格式。 您始終可以將它們用作設計自己的基礎。

2)您正在制作的網站是否會經常增長或更改? 如果網站的變化不大,您可能會做一些非常簡單的事情,而不必擔心良好的設計原則。

3)您是否想學習和應用您提到的某些技術? 如果是這樣,那就去城鎮嘗試不同的技術,看看哪種技術對您有吸引力。

這些類型的問題將幫助您決定如何決定自己的網站。

從小處開始,模擬一些簡單的屏幕,它們的數據庫結構等。使用任何適合您的方法-如果那是UML圖,那就好了。 完成一些事情,評估並從那里進行迭代。

這可能不完全是您想要的,但也會幫您一個忙,並選擇諸如CodeIgniter之類的框架來簡化編寫服務器端代碼的工作。 同樣,請考慮使用諸如jQuery之類的客戶端框架。 當您准備好坐下來編寫代碼時,這將使您更輕松。

裸機必備

我發現有一個(大致)四個步驟的過程可以使應用程序開發更加容易,並幫助我避免一路迷路。 我不假裝使用敏捷開發方法。 這就是我的工作方式。

  1. 確定應用程序需要做什么。 我的意思是“需要”, 絕對必須做,沒有別的 如果這是“很不錯”的功能,請寫下來,稍后再使用。
  2. 找出需要跟蹤哪些數據才能使所有工作正常進行。 子彈,標題,日期時間等。設計數據庫。 (我為此使用MySQL Workbench 。)
  3. 根據功能清單,使用Balsamiq建立用戶界面原型 請記住,僅添加您現在需要的功能。
    • 您可以在此步驟中考慮使用HTML / CSS模板。
  4. 現在您已經有了數據模型和UI,將它們連接起來。 業務邏輯應集中在兩件事上:
    1. 遠離數據模型,因此您可以輕松地從步驟2中檢索和存儲信息。
    2. 使UI完全按照您在步驟3中的設計工作。不要花哨。

專注於小目標

該過程有兩個關鍵。 首先是將各個組件的設計分開。 在設計UI等時,您不需要考慮實現細節。第二個關鍵是進行迭代。 專注於您現在需要添加的內容,而忽略其他所有內容。

完成后,您可以迭代和調整,重復步驟1-4等。但是不要在任何步驟中停留太長時間。 如果事情並非完全如您所願,您以后可以隨時再次進行迭代。 (我認為敏捷將迭代稱為“沖刺”,但我對理論並不了解。)

實際考慮

如果您有一個輕量級的框架(至少)可以幫助4.1(ORM,例如Propel)和4.2(JQuery等),它會有所幫助。 您希望使UI和數據訪問盡可能保持模塊化和分區化,以便以后更改。

如果將所有內容混合到一個代碼塊中,則僅需更改程序的每個部分即可(例如)向數據庫添加新列或向應用程序添加新按鈕。 您已經有一些經驗,所以您應該有一個避免陷阱的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM