❶ 怎麼寫一份php需求分析
讓用戶盡可能的述說他所想要的所有東西,不要打斷他,一旦打斷用戶的思路,有可能他會遺忘一些東西,也許這些東西就是項目的重點,會對整個項目的進程帶來影響。先不要考慮用戶的需求是否合理,用戶提出的所有需求都是他希望得到的,也不要在此時去整理需求的條例性,此階段的重點就是完整、詳細的記錄下用戶的所有需求。同時,當用戶提需求時,要進行換位思考,當你去提這種需求的時候,你需要的是什麼東西,用戶描述不清時,可以進行詢問,不要怕這種詢問會勾起用戶的潛在需求,而這種潛在的需求,也是用戶想要得到的,如果項目在結束時沒有的到包括潛在需求在內的所有東西,那麼,這個項目就是失敗的,用戶會要求對所設計出的產品進行無休止的更改。
一個數據檢索的問題,當用戶提出要系統某部分數據的時候,他可能只提出了,我需要得到某數據,而項目最後也實現了此功能,可以顯示數據的數值,但是,用戶也許想要的數據是可以倒出到某種格式的?兼容其他一個系統的?
用戶並不是專業人士,他不會給出有條理、完整、系統的需求,這就需要對所收集到的原始需求進行分析,以分析出用戶的潛在需求,往往是用戶談的不多,又是技術難點的地方,更需要詳細的進行分析。
用戶提出的原始需求沒有條理性,就需要你進行整理、歸納,幫助用戶理清需求中的概念,將無序的變為有序的。同時要盡可能預測需求的變更。
如用戶在提出需要許可權管理時,提出的只是需要某個用戶可實現某個功能,那麼,他的潛在需求可能就是,有此許可權的用戶是否可以任意增加?許可權是否可以修改?
需求分析是要開發人員明白用戶需要的是什麼,而讓用戶明白你所理解的他的需要是什麼。當需求分析使用專業術語時,開發人員能明白用戶要的是什麼,而用戶看後則不知道他見到的需求分析描述的是什麼。所以,使用自然語言描述需求,是編寫需求分析的基本要求。
「網站分為不同許可權,用戶根據自身許可權的不同可以訪問不同模塊」
「網站用戶有不同的分類,用戶選擇自身所扮演的身份後即可進入網站的不同欄目」
很明顯,第二種敘述方式更容易讓人理解
文字的描述無論如何詳細,畢竟都是抽象的,有可能會造成歧義,合理的利用圖示進行輔助說明,有助於用戶和開發人員對需求分析達成一直的認可。
無論是使用visio、word甚至是畫板來製作圖示都是許可的,圖示的作用是輔助文字進行說明,並不是進行系統的設計,只要能正確的描述了用戶的意圖,就是成功的
項目經理、系統分析員、頁面設計、測試人員、文檔人員包括客戶代表都應該看需求分析,並進行共同的討論,達成一致的意見。
所有與項目相關的人員,都應該詳細閱讀所編寫的需求分析,以期達到對項目最終目的的共識,這樣設計出的系統,才能在技術允許的情況下,盡可能的滿足用戶提出的需求。同時也可以從自己所負責的內容出發,對用戶的需求提出建議和意見,確定最終實現的目標。
故意遺留一些明顯的又比較好做的冬冬給用戶去發現,好處有二
1.用戶測試時如果找不到問題,他會覺得很沒有面子,一般都希望自己能找到幾個問題給領導看看他的工作能力有多強,所以不管你怎麼做他都會找到他認為是問題的問題,與其讓他找出來你不好改的,還不如留點好改的給他找,呵呵。
2.如果用戶確實找到一個你不好改的問題,可以拿這些東西去和他交涉,讓用戶讓步,畢竟,用戶也會有時間上的考慮的。
本文給大家介紹的是如何使用php生成pdf文件,並且把該文件加密或設置訪問密碼的方法,有需要的小夥伴可以參考下。
項目需求:php生成pdf文件,並且把該文件加密或設置訪問密碼
開源的TCPDF是基於PHP的一套類庫,它能夠很好的生成PDF格式的文檔。並且支持文件加密,在目前的開源PHP框架、系統、應用中也使用得很廣。這里是設置PDF文檔的相關屬性的方法原型,其中就可以設置密碼
?
1
2
3
4
5
6
7
8
TCPDF::SetProtection
(
$permissions
=
array('print',
'modify',
'',
'annot-forms',
'fill-forms',
'extract',
'assemble',
'print-high'),
$user_pass
=
'',
$owner_pass
=
null,
$mode
=
0,
$pubkeys
=
null
)
通過SetProtection()方法設置後,生成的PDF文檔就是加密過的,在用戶打開PDF文檔的時候就會要求輸入訪問密碼
❸ 新浪雲php項目代碼中.sea文件有什麼用
sae文檔
運行環境
基本環境
新浪雲 PHP 運行環境目前的 Web 伺服器使用的是:
CentOS-6.x
Apache-2.2.x
PHP-5.3.x / PHP-5.6.x
Web 伺服器運行在 64 位 linux 環境下。
Apache 運行在 Prefork 模式下,即每個請求都會對應一個 Apache 進程,請求結束後該進程才能服務於下一個請求。平台通過模塊方式擴展了 Apache 和 PHP 的相關功能。
禁用函數和類
出於平台安全性考慮,我們禁用了以下函數和類,禁用的標准主要有四點:
出於對安全性的考慮
出於對資源管理的考慮
不常用的 API
我們提供更好替代方案的 API
禁用的函數:
symlink
link
exec
system
escapeshellcmd
escapeshellarg
passthru
shell_exec
proc_open
proc_close
proc_terminate
proc_get_status
proc_nice
dl
pclose
popen
stream_socket_server
stream_socket_accept
stream_socket_pair
stream_wrapper_restore
mail
mb_send_mail
posix_kill
apache_child_terminate
apache_lookup_uri
apache_reset_timeout
apache_setenv
virtual
socket_create
socket_create_pair
realpath_cache_get
禁用的類:
SQLiteDatabase
SQLiteResult
SQLiteUnbuffered
SQLiteException
沙箱
代碼和數據的隔離:每個應用在運行期間,只能「看」到自己的代碼和數據,即 A 應用無法訪問 B 應用的代碼和數據。注意,這里提到的在 Web 伺服器上的數據,往往指一些中間處理過程的臨時數據,並非最終落地的數據,比如用戶上傳照片會臨時存儲到 TmpFS。
連接數的隔離:我們知道,程序寫的不好,很容易導致阻塞,並進一步導致連接數的飆升。單個應用過多佔用 Apache 連接數,原因往往是多方面的,應用請求外部資源被阻塞是一個最為常見的因素,另外應用頁面過大瀏覽器下載慢也是常見因素之一。公有雲平台同一時刻往往運行著大量的應用,如果某一應用出現連接數異常,最直接的後果是整個平台上的所有應用都將陷入癱瘓。新浪雲平台目前有設置「應用最大 HTTP 並發連接數」,目前這個值是 500,如果應用平均單個請求處理時長是 100ms,那麼該應用每秒的 HTTP 並發連接將可以到達 5000,每天的請求超過 1 億沒有問題。但如果您的應用平均每個請求處理時長 2 秒,那麼該應用每秒的 HTTP 並發連接只能到達 250,每天支撐的請求數將在千萬。總體而言,盡量迅速處理完請求對應用是有利的,而且也是平台所鼓勵的。
內存隔離:目前新浪雲平台上對單個 PHP 腳本的處理,設置了 128MB 的上限 (max_memory,ini_set 不可修改),我們認為這個設置是一個相對很高的值,可以說能夠滿足絕大部分應用的需求。設想一台伺服器 8G 內存,如果每個 PHP 處理都消耗 64M 內存,那麼該伺服器最多隻能同時運行 128 個 PHP 腳本。新浪雲引入了」應用最大並發內存數「的概念,目前的設置是 4GB。如果應用程序單個請求的內存消耗平均在 16MB,那麼可同時運行 256 個請求,這和上面的並發連接數的設定是基本一致的。
CPU 隔離:這主要是通過新浪雲的配額系統來達到 CPU 時間的隔離。每個應用都有 CPU 時間消耗的分鍾速度限制,避免了某一應用過多非法獲取 CPU 資源導致其它應用響應慢的問題。
目前新浪雲平台上允許的「單請求最大存活時長」是 300 秒 。
註解
當應用並發超過限制,系統會返回 508 錯誤,並顯示 Connections out of quota。當應用內存佔用超過限制,系統會返回 509 錯誤,並顯示 Memory usage out of quota。
環境變數
您可以通過列印 PHP 的全局變數 $_SERVER 來獲取跟新浪雲相關的環境變數信息,每個環境變數的信息如下:
變數名
說明
HTTP_APPNAME 標志該請求屬於哪個應用
HTTP_APPVERSION 標志該請求對應該應用的哪個版本
HTTP_ACCESSKEY 該應用訪問各種服務資源的帳號
HTTP_SECRETKEY 該應用訪問各種服務資源的密碼
HTTP_APPCOOKIE 一些和 app 管理相關信息
警告
不要直接列印出 $_SERVER 變數,這樣可能會造成應用的 AccessKey 和 SecretKey 的泄露。為了應用的安全考慮,請保護好自己的 AccessKey 和 SecretKey。
常用字體文件路徑:
constant SAE_Font_Sun
宋體字體文件路徑
constant SAE_Font_Kai
楷體字體文件路徑
constant SAE_Font_Hei
文泉驛正黑字體文件路徑
constant SAE_Font_MicroHei
文泉驛微米黑字體文件路徑
全局函數
is_https()
判斷客戶端是以 http 還是以 https 的方式連接。
返回:
如果是 https 連接返回 true,否則返回 false。
❹ 問一下PHP培訓課都講的是什麼
可以參考一下下面的課程
計(MySQL)
1、認識資料庫環境
2、了解資料庫的操作步驟
3、掌握一些資料庫連接的方法
4、創建和設置資料庫
5、掌握表的創建、列類型的使用、建表的各種屬性以及表 類型和字元集
6、執行DDL命令操作數據對象
7、使用DML命令操作數據表中的數據記錄
8、通過DQL命令查詢數據表中的數據
案例實戰
資料庫管理;MySQL資料庫中數據表的設計SQL語言設計
03
伺服器業務處理(PHP)程序開發
1、Web 伺服器端環境搭建
2、PHP的基本語法
3、PHP的語言結構
4、PHP中的函數
5、PHP中的數組與數據結構
6、PHP字元串處理
7、PHP正則表達式
8、PHP常用功能模塊
9、PHP文件系統處理
10、PHP面向對象編程
案例實戰
本節各技術點均有小案例實戰,另外課程最後將綜合三節所學知識,學員獨立完成項目開發:商城或BBS論壇
高級階段
獨立完成建站工作成熟產品二次開發
大型項目的設計與開發以及產品的測試與維護
01
LNMP/LAMP產品級環境搭建
1、Linux常用命令
2、Linux系統管理
3、LAMP環境編譯及Apache配置
4、Nginx服務
5、iptables防火牆
案例實戰
產品級環境搭建與配置
02
關系型資料庫查詢統計與分析實戰
1、多表聯查
2、子查詢
3、分組
4、聚合函數
5、存儲過程
6、觸發器
7、視圖
8、預處理
9、事務操作
10、各種表引擎對比
11、索引操作
12、許可權管理
13、備份與恢復操作
14、日誌記錄
15、各種性能優化
16、資料庫的主從集群搭建
17、資料庫與表設計原則
案例實戰
ERP財務軟體
03
非關系型資料庫應用實戰
1、Memcache簡介、
安裝和操作
2、PHP開啟Memcache模塊
3、PHP與Memcache分布式
4、非關系型資料庫
5、NoSQL基本概念
6、Redis數據類型
7、Redis常用命令
8、高級應用
9、數據應用設計
10、Redis在現實項目中應用
11、PHP操作Redis資料庫
案例實戰
在線電影院訂票系統
04
JavaScript單頁應用技術開發實戰
1、JavaScript基礎語法
2、JS中常用技術閉包
和自執行
3、JS事件處理
4、BOM操作
5、HTML DOM
6、XML DOM
7、Ajax運行原理與操作
8、jQuery
9、Bootstrap前端開發框架
10、Vue.js漸進式JavaScript框架
案例實戰
在線電影院訂票系統
05
長連接與網頁推送技術實戰
1、長連接技術匯總
2、輪詢及技術實現
3、comet技術及實現
4、Node.js
5、Socket與websocket
6、SSE網頁推送
7、手機app推送策略及實現
案例實戰
多用戶在線聊天室
06
WebApp開發實戰
1、Cordova常用插件的使用
2、Cordova 環境的安裝
3、Cordova 開發環境
4、ADT的搭建和基礎操作
5、cordova打包處理
案例實戰
模擬網易新聞客戶端單頁APP實戰
07
微信應用開發實戰
1、微平台簡介
2、微信服務號的申請與
使用
3、接入方式簡介
4、微信公眾號數據格式
簡介
5、公眾號介面數據解析和
常用的令牌數據獲取
6、信息教研原理
7、接收和發送文本數據包
8、接收和發送圖片數據包
9、接收和發送新聞數據包
10、自定義菜單
11、微信支付介面接入與開發
案例實戰
APP單頁(微商城)
08
產品標准化
1、PSR編碼規范
2、MarkDown文檔編寫
3、Git分布式版本控制器
4、PHP命名空間
5、MVC
6、Composer組件開發
7、Laravel框架的安裝與搭建
8、框架目錄結構
9、路由和引導文件
10、中間件、請求和響應
11、框架配置文件講解
12、框架中的控制器和資料庫的各種操作
13、框架中的模板引擎和使用
14、Laravel系統架構講解
15、Laravel中的各種系統服務
16、PHP的郵件發送實現密碼找回
17、PHP中CURL
18、PHP中webService
20、PHP常用js插件的使用
21、PHP在WEB中常用介面介紹和使用
22、目前比較流行的開放平台介紹和使用
23、國內流行的ThinkPHP框架
案例實戰
使用Laravel框架開發自己的個人博客系統
商業項目實戰
企業開發工程師直接帶隊
真實項目開發,掌握項目全程技能
01
項目開始前期准備工作
1. 項目小組劃分
2. 團隊合作與注意事項
3. 開發環境搭建
4. Git版本控制器的使用
5. 開發文檔編寫要求
6. 編碼規范要求
7. 項目開發流程介紹
案例實戰
掌握常用開發軟體和項目文檔編寫。能夠讓學員更好的適應以後工作。
02
項目需求分析
1. 項目需求分析流程介紹
2. 項目功能塊的劃分
3. 繪制功能模塊圖和系統流程圖
4. 具體業務描述
5. 系統運行環境要求
6. 項目需求文檔編寫
案例實戰
掌握常用開發軟體和項目文檔編寫。能夠讓學員更好的適應以後工作。
03
項目資料庫設計
1. 資料庫設計流程介紹
2. 概念結構及原型設計
3. 確定表、屬性和關系
4. 繪制E-R模型圖
5. 編寫資料庫設計文檔
案例實戰
掌握常用開發軟體和項目文檔編寫。能夠讓學員更好的適應以後工作。
04
項目程序設計
1. 程序設計流程介紹
2. 項目的目錄結構
3. 模塊結構
4. 程序結構
5. 程序設計文檔編寫
案例實戰
案例實戰掌握了項目結構、模塊層次的劃分,以及具體到類和方法的定義。
05
Laravel框架及組件
1. Laravel項目框架搭建
2. 自製二維碼組件
3. 驗證碼組件
4. Laravel封裝完整微信
5. MarkDown編輯器組件
6. 七牛雲存儲SDK組件
7. 阿里雲OSS雲存儲
8. 阿里大魚簡訊介面
9. Laravel其他組件介紹
案例實戰
熟練掌握Laravel框架的搭建,Laravel框架的各種組件安裝和使用,以及在真實項目的應用。
06
WebApp開發實戰
1. Cordova 常用插件的使用
2. Cordova 環境的安裝
3. Cordova 開發環境
4. ADT的搭建和基礎操作
案例實戰
掌握項目開發中的常用技巧和實現方法,以及項目中的常用功能開發
07
項目驗收與生產部署
1. 項目驗證標准介紹
2. 項目審核流程
3. 項目的生產環境部署
4. 高並發、大存儲的生產環境部署
案例實戰
掌握項目的後期上線部署,以及高並發、大存儲的生產環境部署。
08
項目後期維護與優化
1. 項目日常維護介紹
2. 項目各種緩存配置
3. 常用項目故障排查
4. 資料庫的後期優化
案例實戰
掌握項目的後期各種優化,以及常用項目故障排查。
09
其他內容擴展
1. PHP的郵件發送實現密碼找回
2. PHP的SPL
3. PHP在WEB中常用介面介紹和使用
4. PHP常用js插件的使用
5. ThinkPHP框架介紹和使用
案例實戰
擴展性地給學生講解一下目前項目比較流行的PHP技術。
❺ PHP什麼意思
PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。
PHP 獨特的語法混合了C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。
PHP最初是由勒多夫在1995年開始開發的;現在PHP的標准由the PHP Group維護。PHP以PHP License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放源代碼許可協議GPL不兼容。
❻ 初學者用PHP做個客戶與項目關系管理系統,但需求分析這一塊弄的不好,望有經驗師傅指導下~~
程序員是一種技術工作,在IT的發展中有相當重要的地位,從底層硬體通訊協議的建立, 到數據傳輸層的處理,到操作系統的建設,到資料庫平台的建設,一直到應用層上各種數 據營銷平台的搭建,程序員在裡面都扮演著舉足輕重的角色並為IT事業的發展做出了巨大 的貢獻。
中國有很多精於編碼的人,但是中國軟體行業,尤其是網路應用開發方面誤區很大,很難形成有規模的軟體開發力量和產品能力,不但比美國差距甚遠,和印度相比也是頗有不如。這些問題不是在於中國程序員的智商和工作努力狀況,也不是在於國家和民間對開發的投入程度,而是很大程度上,有一些對技術,對程序開發,對項目設計方面的思想誤區,這些誤區,導致了軟體行業的產品化能力不足,缺乏規模化和大型復用系統研發能力,可以說,改變認識誤區,是解決軟體行業小作坊模式和個體英雄模式所帶來的局限性 的重要工作。
中國有很多小朋友,他們18,9歲或21,2歲,通過自學也寫了不少代碼,他們有的代碼寫的很漂亮,一些技術細節相當出眾,也很有鑽研精神,但是他們被一些錯誤的認識和觀點左右,缺乏對系統,對程序的整體理解能力,這些人,一個網上的朋友說得很好,他們實際 上只是一些Coding fans,壓根沒有資格稱為程序員,但是據我所知,不少小網路公司的 CTO就是這樣的coding fans,拿著嚇人的工資,做著嚇人的項目,項目的結局通常也很嚇 人。
程序員基本素質:
作一個真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應該具 有的素質。
1:團隊精神和協作能力
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說成獨行俠的都是在囈語,任何個人的力量都是有限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協作精神是不可想像的。獨行俠可以作一些賺錢的小軟體發點小財,但是一旦進入一些大系統的研發團隊,進入商業化和產品化的開發任務,缺 乏這種素質的人就完全不合格了。
2:文檔習慣
說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中 非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級 程序員和系統分析員,這個比例還要高很多。
缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇 到極大的麻煩。
3:規范化,標准化的代碼編寫習慣
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮 進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和 糾錯,也有助於不同技術人員之間的協作。
有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自 己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。
再看看整個linux的搭建,沒有規范化和標准化的代碼習慣,全球的研發協作是絕對不可 想像的。
4:需求理解能力
程序員需要理解一個模塊的需求,很多小朋友寫程序往往只關注一個功能需求,他們把性能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考慮,有人曾經放言說寫一個廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數量級的訪問情況下的性能指標是如何實現的,對於這樣的程序員,你給他深藍那套系統,他也做不出太極鏈的並訪能力。性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經 驗才有可能有心得。
5:復用性,模塊化思維能力
經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫 一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成 了熟練程序員的主要工作,而這些,其實是完全可以避免的。
復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投 入到創新的代碼工作中去。
一些好的程序模塊代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模塊 都能適合的很好,而現在我看到的是,很多小公司軟體一升級或改進就動輒全部代碼重 寫,大部分重復性工作無謂的浪費了時間和精力。
程序員應具備的素質中
6:測試習慣
作為一些商業化正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效 率和可靠性就有了最大的保證。
測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程序是否能在正常調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務,實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定性測試,用戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模塊受影響狀況的測試,頻發的異常請求阻塞資源時的模塊穩定測試等等。當然並不是程序員要對自己的每段代碼都需要進行這種完整測試,但是程序員必須清醒認識自己的代碼任務在整體項目中的地位和各種性能需求,有針對性的進行相關測試並盡早發現和解決問題,當然這需要上面提到的 需求理解能力。
7:學習和總結的能力
程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有 領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高 了。
但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提 高。
善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有 目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高, 一個程序員才可能成長起來。
一個不具備成長性的程序員,即便眼前看是個高手,建議也不要選用,因為他落伍的時候 馬上就到了。
具備以上全部素質的人,應當說是夠格的程序員了,請注意以上的各種素質都不是由IQ決 定的,也不是大學某些課本里可以學習到的,需要的僅僅是程序員對自己工作的認識,是 一種意識上的問題。
那麼作為高級程序員,以至於系統分析員,也就是對於一個程序項目的設計者而言,除了 應該具備上述全部素質之外,還需要具備以下素質:
第一,需求分析能力
對於程序員而言,理解需求就可以完成合格的代碼,但是對於研發項目的組織和管理者, 他們不但要理解客戶需求,更多時候還要自行制定一些需求,為什麼這么說呢?
一般而言,進行研發任務,也許是客戶提出需求,也許是市場和營銷部門提出的需求,這時候對於研發部門,他們看到的不是一個完整的需求,通常而言,該需求僅僅是一些功能上的要求,或者更正規些,可能獲得一個完整的用戶視圖;但是這都不夠,因為客戶由於非技術因素多一些,他們可能很難提出完整和清晰,或者說專業性的性能需求,但是對於項目組織者和規劃者,他必須能夠清醒認識到這些需求的存在並在完成需求分析報告的時候適當的提出,同時要完整和清晰的體現在設計說明書裡面,以便於程序員編碼時不會失 去這些准則。
程序設計者必須正確理解用戶需求所處的環境,並針對性做出需求的分析,舉例而言,同樣一個軟體通過ASP租用方式發布和通過License方式發布,性能需求可能就是有區別的,前者強調的是更好的支撐能力和穩定性,而後者則可能更強調在各種平台下的普適性和安 裝使用的簡捷性。
第二,項目設計方法和流程處理能力
程序設計者必須能夠掌握不少於兩到三種的項目設計方法(比如自頂至下的設計方法,比 如快速原型法等等),並能夠根據項目需求和資源搭配來選擇合適的設計方法進行項目的 整體設計。
設計方法上選擇不當,就會耽誤研發周期,浪費研發資源,甚至影響研發效果。
一個程序設計者還需要把很多功夫用在流程圖的設計和處理上,他需要做數據流圖以確立 數據詞典;他需要加工邏輯流圖以形成整體的系統處理流程。
一個流程有問題的系統,就算代碼多漂亮,每個模塊多精緻,也不會成為一個好的系統。 當然,做好流程分析並選擇好項目設計方法,都需要在需求分析能力上具有足夠的把 握。
第三,復用設計和模塊化分解能力
這個似乎又是老調重談,前面基本素質上不是已經說明了這個問題嗎?
作為一個從事模塊任務的程序員,他需要對他所面對的特定功能模塊的復用性進行考慮,而作為一個系統分析人員,他要面對的問題復雜的多,需要對整體系統按照一種模塊化的分析能力分解為很多可復用的功能模塊和函數,並針對每一模塊形成一個獨立的設計需求。舉個例子,好比是汽車生產,最早每輛汽車都是獨立安裝的,每個部件都是量身定做的,但是後來不一樣了,機器化大生產了,一個汽車廠開始通過流水線來生產汽車,獨立部件開始具有一定的復用性,在後來標准化成為大趨勢,不同型號,品牌甚至不同廠商的汽車部件也可以進行方便的換裝和升級,這時候,汽車生產的效率達到最大化。軟體工程也是同樣的道理,一個成熟的軟體行業,在一些相關項目和系統中,不同的部件是可以隨意換裝的,比如微軟的許多桌面軟體,在很多操作模塊(如打開文件,保存文件等等)都是復用的同一套功能模塊,而這些介面又通過一些類庫提供給了桌面應用程序開發者方便 掛接,這就是復用化的模塊設計明顯的一個佐證。
將一個大型的,錯綜復雜的應用系統分解成一些相對獨立的,具有高度復用性的,並能僅 僅依靠幾個參數完成數據聯系的模塊組合,是作為高級程序員和系統分析員一項最重要的 工作,合適的項目設計方法,清晰的流程圖,是實現這一目標的重要保證。
第四,整體項目評估能力
作為系統設計人員,必須能夠從全局出發,對項目又整體的清醒認識,比如公司的資源配置是否合理和到位,比如工程進度安排是否能最大化體現效率又不至於無法按期完成。評估項目整體和各個模塊的工作量,評估項目所需的資源,評估項目可能遇到的困難,都需要大量的經驗積累,換言之,這是一種不斷總結的累計才能達到的境界。在西方一些軟體系統設計的帶頭人都是很年長的,比如4,50歲,甚至更老,他們在編碼方面已經遠遠不如年輕人那樣活絡,但是就項目評估而言,他們幾十年的經驗積累就是最重要和寶貴的財富。中國缺這么一代程序員,主要還不是缺那種年紀的程序員,而是那種年紀的程序員基本上都是研究單位作出來的,都不是從專業的產品化軟體研發作出來的,他們沒有能積累 那種產品化研發的經驗,這也是沒有辦法的事情。
程序員應具備的素質下
第五,團隊組織管理能力
完成一個項目工程,需要團隊的齊心協力,作為項目設計者或研發的主管人,就應當有能 力最大化發揮團隊的整體力量,技術管理由於其專業性質,不大同於一般的人事管理,因 為這裡面設計了一些技術性的指標和因素。
首先是工作的量化,沒有量化就很難做到合適的績效考核,而程序量化又不是簡單的代碼 行數可以計算的,因此要求技術管理人員需要能真正評估一個模塊的復雜性和工作量。
其次是對團隊協作模式的調整,一般而言,程序開發的協作通常分為小組進行,小組有主 程序員方式的,也有民主方式的,根據程序員之間的能力水平差距,以及根據項目研發的 需求,選擇合適的組隊方式,並能將責權和成員的工作任務緊密結合,這樣才能最大發揮 組隊的效率。
一個代碼水平高的人,未必能成為一個合格的項目研發主管,這方面的能力欠缺往往是容 易被忽視的。
綜上可以看到,作為一個主管研發的負責人,一個項目設計者,所需要具備的素質和能力並不是程序代碼編寫的能力,當然一般情況下,一個程序員通過不斷的總結提高達到了這種素質的時候,他所具有的代碼編寫能力也已經相當不簡單了,但是請注意這裡面的因果關系,一個高水平的項目設計者通常已經是代碼編寫相當優秀的人了,但是並不是一個代碼相當優秀的程序員就可以勝任項目設計的工作,這裡面存在的也不是智商和課本的問題,還是在於一個程序員在積累經驗,逐步提升的時候沒有意識到應當思考哪方面的東西,沒有有意識的就項目的組織和復用設計進行揣摩,沒有經常性的文檔習慣和總結習 慣,不改變這些,我們的合格的項目設計者還是非常欠缺。
另外,為防止有無聊的人和我較真,補充一點,本文針對目標是作商業化的軟體項目和工程,那些科研機構的編程高手,比如演算法高手,比如圖象處理高手,他們的工作是研究課題而非直接完成商業軟體(當然最終間接成為商業產品,比如微軟研究院在作的研究課題),因此他們強調的素質可能是另外的東西,這些人(專家),並不能說是程序員,不 能用程序員的標准去衡量。
最後補充一點東西,一個軟體項目研發的設計流程是怎樣的呢?以通常標準的設計方法為 例,(不過筆者喜歡快速原型法)。
第一個步驟是市場調研,技術和市場要結合才能體現最大價值。
第二個步驟是需求分析,這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手 冊。
用戶視圖是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裡麵包含了 很多操作方面的流程和條件。
數據詞典是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成 了一半多。
用戶操作手冊是指明了操作流程的說明書。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成 這些,就為程序研發提供了約束和准繩,很遺憾太多公司都不是這樣做的,因果顛倒,順 序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。
需求分析,除了以上工作,筆者以為作為項目設計者應當完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或 公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設計,將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是並不是說詳細設計說明書不重要,事實上快速原型法在完成原型代碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。
第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把具體的模塊以最』干凈』的方式(黑箱結構)提供給編碼者,使得系統整體模塊化達到最大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細設計說明書應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分析到概要設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行代碼工作。
那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。
第五個步驟是編碼,在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執行方,可以分為內部測試和外部測試
按照測試范圍,可以分為模塊測試和整體聯調
按照測試條件,可以分為正常操作情況測試和異常情況測試
按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。
總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外 部測試都是正常的,因為永遠都會又不可預料的問題存在。
完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目才算告一段落,當然日後少 不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,知道這個軟體被徹底淘汰為止。
寫這些步驟算不上賣弄什麼,因為實話講我手邊是一本《軟體工程》,在大學里這是計算機專業的必修課程,但是我知道很多程序員似乎從來都只是熱衷於什麼《30天精通VC》之類的,他們有些和我一樣游擊隊出身,沒有正規學過這個專業,還有一些則早就在混夠學 分後就把這些真正有用的東西還給了老師。
網上現在也很浮躁,一些coding fans亂嚷嚷,混淆視聽,實際上真正的技術專家很少在網上亂發帖子的,如筆者這樣不知天高地厚的,其實實在是算不上什麼高手,只不過看不慣這種對技術,對程序員的誤解和胡說,只好挺身而出,做撥亂反正之言,也希望那些還 沉迷於一些錯誤人士的coding fans們能認真想想,走到正途上,畢竟那些聰明的頭腦還 遠遠沒有發揮應有的價值。
❼ php小項目
可以自己設計個,比如設計個簡單的文章發布系統之類的,設計過程中也能增長經驗
❽ php培訓是什麼意思
PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。
PHP最初是由勒多夫在1995年開始開發的;現在PHP的標准由the PHP Group維護。PHP以PHP License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放源代碼許可協議GPL不兼容。
❾ php如何寫商城
php可以做網上商城的,而且效率很高。
具體可以去網路參考現成的例子:
❿ PHP中的項目文件的結構是怎麼設計的
可以有很多種,看你怎麼寫了,比如三層結構,主目錄(項目名目錄),裡面有iamges,html,js,conn(連接資料庫文件如config),data,templates模板文件,admin(後台管理),等等等。