Maison développement back-end tutoriel php 透视软件开发过程中的难点_PHP

透视软件开发过程中的难点_PHP

Jun 01, 2016 pm 12:37 PM
开发 软件 软件开发 processus 难点 项目

软件开发

作者:田占海

1 引言
如果你是一个程序员,可能常常为不能按时完成任务而苦恼。如果你是一个项目经理,可能会觉得开发符合预算和进度要求的软件简直难于上青天。实际上,软件项目常常严重超期或超出预算仍是困扰着绝大多数软件机构的难题。据美国一份评估报告显示,17个主要的国防部软件合同中,平均28个月的进度计划推迟了20个月才完成。一个4年应该完成的任务,7年还未提交,其中没有一个项目按时完成。由于存在软件问题,B1轰炸机的部署被推迟了,同样的原因,580亿美元的A12飞机计划也被部分取消了。持续了二三十年的软件危机为什么愈演愈烈?软件开发为什么如此之难?本文试结合作者的体会对软件开发的困难之处做一剖析,并提出一些建议。

2 困难所在
2.1 极大的复杂性
大多数大型软件软件产品由几十甚至几百万行源代码构成,例如:Windows95操作系统由大约1100万行代码组成。每一行代码都可能影响到程序的其它部分,并且各个部分之间都可能互相影响。这样一个错综复杂的巨大系统当中,每一个小小的错误都可能导致整个系统崩溃。有些大型软件,例如Windows,可能是人类曾经建造过的最复杂的事物之一,从古至今最复杂的建筑都无法与之相比。
2.2 高度的不确定性
一个软件项目从一开始就存在许多不确定性因素。其一:用户需求很难确定。这是因为软件开发者很难详细了解用户的需求,甚至用户在看到产品之前也不清楚自己到底需要什么,所以从项目开发的自始至终都可能会有新的需求提出,致使系统结构不断修改,最终面目全非。其二:设计不完全可以预测。有时,一个设计时认为可行的方案,在实现时可能行不通,或者最初的设计方案存在很大的缺陷而没有及时发现,或者突然一个设计时没有料到的技术难点阻挡了项目的进度。从设计到实现实际上有着很大的不可预测性。其三:用户需求不断变化,如果最初的用户需求没有了解的很清楚,可能整个项目很快就会陷在不断变化的需求之中不能自拔。其四:客观条件的不确定性。在项目的进展过程中,可能会有人员的流动,可能会有资源的调整,可能会有这样或那样的客观条件的限制而阻挡了项目的正常进行。在这样高度的不确定之中,在较早阶段精确估计一个项目不只是很难地,甚至是不可能的。

3 造成工期延误的原因
3.1 开发人员的过分乐观
许多开发人员倾向于一切都会进展顺利,这种盲目的自信对于项目开发来说是不对的。如果按照最乐观的估计,可能绝大多数任务都不能按时完成,因为在软件开发中不确定因素实在太多了。对于任务的复杂性和难度,对于自己能支配的时间,对于可能的突发事件的干扰等没有清楚的认识和估计,即使对自己的时间表作出保证,也可能常常无法按时交货。
3.2 来自外部的压力
作为项目的管理者或者客户都希望项目早日结束,因而为项目设置了一个个时间节点。
这些时间节点可能设置的根本就不可能实现或者实现起来会有很大难度,但是开发人员为了按时完工只好加班加点,以最快的速度完成要求的功能,而对于系统结构的考虑就会放到次要的位置上去,这样就为今后程序的维护埋下了隐患。更可怕的是一个个bug会随着压力的增大而产生,最后造成更大量的返工。程序就象程序员的孩子一样,每个人都希望自己的孩子茁壮成长,但是没有办法,多生快生就不能优生。
3.3 项目以外事情的干扰
如果一个项目的开发人员经常被项目以外的事情所干扰、牵制,不能全身心地投入到项目开发之中,常常会因此而影响了进度。这种现象在规模较小的软件企业中比较多见,一个开发人员经常身兼多职,甚至同时参与多个项目的开发。如果其它项目急于完工,则该项目只好被拖延。
3.4 项目管理的混乱
软件企业内部项目管理的混乱似乎是一个世界性的通病。卡耐基梅隆大学软件工程研究所(SEI)建立了一套标准,用来衡量软件企业从混乱到持续发展的这种状态,这就是就是CMM五级标准。第一级最为混乱,每升高一级情况都有所好转,第五级状况最好。 到2001年1月底,全世界只有1654家软件公司和机构通过了不同级别的认证。从下图可以看出,这是一个金字塔型的分布状态,图上只显示了二级和二级以上的企业,而处在



金字塔最低层的那些一级企业的数目不知有多少个1654家!所以从世界范围来看,软件管理的总体水平还是很低的。
3.5 开发人员的不足
全世界对于人才的竞争可能在IT界表现的最为激烈。一方面人才的绝对数量不足导致了许多企业不能招到自己急需的人才;另一方面人才的流动也导致了企业很容易失去自己的员工。一个项目如果缺少人手或人才频繁流动,将不能保证项目的正常进展。

4 如何避免工期延误
4.1 对不确定性做好充分准备
中国人都对《三国演示》中的赤壁之战非常熟悉,诸葛亮在赤壁埋伏了数路伏兵对曹操进行围追堵截,一招不行,还有下一招,对整个过程做了非常周密的准备和部署,所以大获全胜。软件开发亦是如此,在项目展开的初期就应该对过程中可能会出现各种的情况有所准备,才不至于车到山前无路可走。
4.2 立足于产品的灵活性
设计的灵活性是一个软件产品的灵魂。好的设计总是容易维护和升级,而不好的设计却会为今后的维护带来很大的麻烦,甚至整个产品都可能被废弃重来。因此在软件开发的的初期应花很大力气致力于整体设计,而不是急于编码,磨刀不误砍柴工,前期的投入会获得高额回报的。
4.1 提高软件管理水平
ISO9000质量管理系统的标准系列是建立在这样一个前提上:如果生产和管理系统没有问题,那么其产品和提供的服务也就没有问题,这说明管理水平如何于产品的质量有至关重要的影响。 我认为一个软件企业提高管理水平的最好途径就是为自己制定一个目标,比如实现CMM的级别认证或者ISO9000质量体系认证,在对这些目标努力的过程中会逐渐提高自己的管理水平。

1 结束语
本文对软件开发过程中的困难之处和常常造成工期拖延的因素做了一些粗浅的分析,并不是很系统、全面。对于如何避免工期延误也提出了几点建议,恳请读者批评指正。

2 参考文献
1.卡耐基梅隆大学软件工程研究所. 软件能力成熟度模型(CMM):软件过程改进指南. 电子工业出版社,2001.07。
2.[德] 霍克,勒丁,帕克特,林德纳,米勒. 软件业的成功奥秘. 上海远东出版社,2000
3.龚键雅. 当代GIS的若干理论与技术. 武汉测绘科技大学出版社,1999.03
4.廖斌. CMM介绍1. 2001.09


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel logiciel est CrystalDiskmark ? -Comment utiliser crystaldiskmark ? Quel logiciel est CrystalDiskmark ? -Comment utiliser crystaldiskmark ? Mar 18, 2024 pm 02:58 PM

CrystalDiskMark est un petit outil de référence pour disques durs qui mesure rapidement les vitesses de lecture/écriture séquentielles et aléatoires. Ensuite, laissez l'éditeur vous présenter CrystalDiskMark et comment utiliser crystaldiskmark~ 1. Introduction à CrystalDiskMark CrystalDiskMark est un outil de test de performances de disque largement utilisé pour évaluer la vitesse et les performances de lecture et d'écriture des disques durs mécaniques et des disques SSD (SSD). ). Performances d’E/S aléatoires. Il s'agit d'une application Windows gratuite qui fournit une interface conviviale et divers modes de test pour évaluer différents aspects des performances du disque dur. Elle est largement utilisée dans les revues de matériel.

Tutoriel d'utilisation de CrystalDiskinfo – Quel logiciel est CrystalDiskinfo ? Tutoriel d'utilisation de CrystalDiskinfo – Quel logiciel est CrystalDiskinfo ? Mar 18, 2024 pm 04:50 PM

CrystalDiskInfo est un logiciel utilisé pour vérifier les périphériques matériels informatiques. Dans ce logiciel, nous pouvons vérifier notre propre matériel informatique, tel que la vitesse de lecture, le mode de transmission, l'interface, etc. ! Alors en plus de ces fonctions, comment utiliser CrystalDiskInfo et qu'est-ce que CrystalDiskInfo exactement ? Laissez-moi faire le tri pour vous ! 1. L'origine de CrystalDiskInfo En tant que l'un des trois composants principaux d'un ordinateur hôte, un disque SSD est le support de stockage d'un ordinateur et est responsable du stockage des données informatiques. Un bon disque SSD peut accélérer la lecture et la lecture des fichiers. affecter l’expérience du consommateur. Lorsque les consommateurs reçoivent de nouveaux appareils, ils peuvent utiliser des logiciels tiers ou d'autres disques SSD pour

L'IA peut-elle vaincre le dernier théorème de Fermat ? Un mathématicien a abandonné 5 ans de sa carrière pour transformer 100 pages de preuve en code L'IA peut-elle vaincre le dernier théorème de Fermat ? Un mathématicien a abandonné 5 ans de sa carrière pour transformer 100 pages de preuve en code Apr 09, 2024 pm 03:20 PM

Le dernier théorème de Fermat, sur le point d'être conquis par l'IA ? Et la partie la plus significative de tout cela est que le dernier théorème de Fermat, que l’IA est sur le point de résoudre, vise précisément à prouver que l’IA est inutile. Autrefois, les mathématiques appartenaient au domaine de l’intelligence humaine pure ; aujourd’hui, ce territoire est déchiffré et piétiné par des algorithmes avancés. Image Le dernier théorème de Fermat est une énigme « notoire » qui intrigue les mathématiciens depuis des siècles. Cela a été prouvé en 1993, et les mathématiciens ont désormais un grand projet : recréer la preuve à l’aide d’ordinateurs. Ils espèrent que toute erreur logique dans cette version de la preuve pourra être vérifiée par un ordinateur. Adresse du projet : https://github.com/riccardobrasca/flt

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Comment résoudre une tentative de chargement d'un logiciel incompatible avec Edge ? Comment résoudre une tentative de chargement d'un logiciel incompatible avec Edge ? Mar 15, 2024 pm 01:34 PM

Lorsque nous utilisons le navigateur Edge, il arrive parfois que des logiciels incompatibles tentent d'être chargés ensemble, alors que se passe-t-il ? Laissez ce site présenter soigneusement aux utilisateurs comment résoudre le problème lié à la tentative de chargement de logiciels incompatibles avec Edge. Comment résoudre le problème de la tentative de chargement d'un logiciel incompatible avec Edge Solution 1 : Recherchez IE dans le menu Démarrer et accédez-y directement avec IE. Solution 2 : Remarque : La modification du registre peut entraîner une panne du système, alors soyez prudent. Modifiez les paramètres du registre. 1. Entrez regedit pendant le fonctionnement. 2. Recherchez le chemin\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Micros

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Quel logiciel est Photoshop5 ? -tutoriel d'utilisation de Photoshopcs5 Quel logiciel est Photoshop5 ? -tutoriel d'utilisation de Photoshopcs5 Mar 19, 2024 am 09:04 AM

PhotoshopCS est l'abréviation de Photoshop Creative Suite. C'est un logiciel produit par Adobe et est largement utilisé dans la conception graphique et le traitement d'images. En tant que novice apprenant PS, laissez-moi vous expliquer aujourd'hui ce qu'est le logiciel photoshopcs5 et comment l'utiliser. 1. Qu'est-ce que Photoshop CS5 ? Adobe Photoshop CS5 Extended est idéal pour les professionnels des domaines du cinéma, de la vidéo et du multimédia, les graphistes et web designers qui utilisent la 3D et l'animation, ainsi que les professionnels des domaines de l'ingénierie et des sciences. Rendu une image 3D et fusionnez-la dans une image composite 2D. Modifiez facilement des vidéos

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

See all articles