1. 程式人生 > >關於軟體設計與工匠精神

關於軟體設計與工匠精神

      最近與同仁講一個簡單的功能,我們過去的專案或系統可能開發過很多次了,當下需要反思軟體設計怎麼才能做得更好,這樣我們自己才能成長。如果軟體設計都做不好,更做不好軟體架構。 如果你重複一次又一次在做與過去相同的東西,有沒有意義? 沒有成長,等於浪費時間。現在產品經理都需要關注使用者增長的設計了,思考你如何獲得成長。

什麼叫“重複性勞動”?

      你也許會以為,重複性勞動是指那些主要以體力完成的工作,送外賣、發傳單,或者,摻雜少部分腦力的工作。其實不是,即使是某些高強度的腦力工作,依然算是重複性勞動。比如,被大家認為重複性較低的銷售,其實時間長了,也會按固定套路,把銷售流程當做例行公事走完。日復一日的重複性勞動,工作越來越熟練,但成長越來越緩慢。

      反覆不斷地重複寫程式碼去解決同樣的程式設計問題,這就是在做完全相同的事,除非新的約束和變化給你帶來了新的挑戰,你只能從第一次的經驗中有所收穫,而從第二次開始基本就是簡單地重複了。如果你想要做得更優秀,重複實踐是遠遠不夠的。你必須在實踐中增加更多的難度挑戰

通常我們軟體設計時需要考慮的:

    • Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself.
    • Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.
    • Modularity - the resulting software comprises well defined, independent components which leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project.
    • Fault-tolerance - The software is resistant to and able to recover from component failure.
    • Maintainability - A measure of how easily bug fixes or functional modifications can be accomplished. High maintainability can be the product of modularity and extensibility.
    • Reliability (Software durability) - The software is able to perform a required function under stated conditions for a specified period of time.
    • Reusability - The ability to use some or all of the aspects of the preexisting software in other projects with little to no modification.
    • Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with resilience to low memory conditions.
    • Security - The software is able to withstand and resist hostile acts and influences.
    • Usability - The software user interface must be usable for its target user/audience. Default values for the parameters must be chosen so that they are a good choice for the majority of the users.[5]
    • Performance - The software performs its tasks within a time-frame that is acceptable for the user, and does not require too much memory.
    • Portability - The software should be usable across a number of different conditions and environments.
    • Scalability - The software adapts well to increasing data or number of users.

軟體工匠

再回顧軟體工藝宣言,筆者很多年前已在上面簽名:

不僅要讓軟體工作,更要精益求精。

不僅可以響應變化,更要穩步增加價值。

不僅要有個體與互動,更要形成專業人員的社群。

不僅要與客戶合作,更要建立卓有成效的夥伴關係。

也就是說,左項固然值得追求,右項同樣不可或缺。

clipboard

clipboard

clipboard

------------------------------------------------------------------

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。