① 请问《软件工程》这本书是不是没有技术细节。随便读一下就好吗
这个讲的是一个开发软件的项目工程的流程思路和做法,能够帮助你更好管理整个软件项目的开发周期好项目计划安排,他是从工程化角度去考虑问题,一般不会有软件编程的技术细节
如经典的瀑布流模型开发、敏捷开发、迭代开发等都是软件工程中会有涉及
而在实际工作中、你如果是一线底层码农不太需要考虑书中的问题,如果你想当管理,项目经理之类的,就要好好学这个了
② <软件工程>的好书
软件工程导论第四版张海潘编着
最适合初学者
软件工程---实践者研究 机械工业出版社
<<软件工程-实践者的研究方法>>
Software Engineering: A Practitioner's Approach
Roger s.Pressman 梅宏
总体方法论和过程
第1名:
解析极限编程——拥抱变化(影印版)
原书名:Extreme Programming Explained:Embrace Change
作者:Kent Beck
出版社:中国电力出版社
原出版社:Addison-Wesley
页书:194
定价:26
出版日期:2003-9-1
专家评语:
曲俊生:
XP(极限编程)由于其高度可操作性,尤其是对于业界众多实践的总结,在敏捷软件开发方法中一马当先,获得了广泛的研究与关注。本书是了解XP的必读宝典,其中对于XP的原则、核心价值、最佳实践都有深入的描述,更加难能可贵的是,作者并没有效法其他鼓动者,将XP推到“万金油”的高度,而是非常清楚地列举了它不适用的地方。同时,作者也指出,不要太深入地追究您在项目中采用的是否是完全的XP实践,而应该根据项目的实际进行剪裁。
本书适合对于敏捷软件开发感兴趣,同时又想找到一个可操作性较强方法的开发人员。
王咏刚:
单凭书名里“拥抱变化”这四个字,Kent Beck这本专门给大伙儿解释极限编程是什么东东的红宝书就没白写。要说也是,那些没事儿就鼓捣世界级的软件工程理论、动辄就要写1000页以上大部头的老先生们做梦也想不到,他们的眼中钉肉中刺,他们想方设法要“管理”、“控制”的对象——软件开发里的“变化”——在Beck看来就像是杨过身边的大雕,虽然长得丑点儿,却能陪你练剑,让你成为真正的大侠。听Beck的没错,赶快放下架子,和“变化”打成一片吧,要不然你永远也甭想练成独孤九剑。
第2名:
敏捷软件开发(影印版)
原书名:Agile Software Development
作者:Alistair Cockburn
出版社:人民邮电出版社
原出版社:Addison-Wesley
页数:324 定价:35
出版日期:2003-8-1
专家评语:
曲俊生:
很早以前就读到英文的电子版,在很大程度上,本书是对于RUP等方法论的颠覆,尤其是在国内“软件蓝领”宣传大行其道的时候,本书构成了一副有效的清醒剂。本书是Cockburn从20多年的IBM工作中总结出来的实践结晶。书中充满了睿智的比喻与描述,例如,将软件开发形容成一场游戏。书中对于水晶方法的介绍固然可贵,但是更加精彩的是对于人、沟通等主题的深入描述,可以说,这是既《人件》之后对“人”在软件开发中重要作用描述的又一本经典着作。
该书也不是了解SE(软件工程)的入门书籍,适合于对传统软件开发过程有深入理解,但是对于敏捷软件开发了解不深的PM(项目经理)详细阅读。
第3名:
测试驱动开发(影印版)
原书名:Test-Driven Development
作者:Kent Beck
出版社:中国电力出版社
原出版社:Addison-Wesley
页数:226 定价:32
出版日期:2003-8-1
专家评语:
徐锋:
分析、设计、编码、测试,已经成为了软件开发领域亘古不变的真理。Kent Beck,这一全力追求敏捷,希望将编程发挥到极限的黑客级大师,提出了颠覆性的理论——测试先行。在本书中,作者结合编程实例,说道理、讲方法,并结合自动化测试框架来提高效能。让笔者看完之外,就有跃跃欲试之感,叛逆的精神融入了每一个细胞。
该帖由: lindows修改,时间 2004-1-6 上午11:44
分析和设计
第1名:
编写有效用例
原书名:Writing Effective Use Cases
作者:Alistair Cockburn
出版社:机械工业出版社
原出版社:Addison-Wesley
页数:304
定价:25
出版日期:2002-7-1
专家评语:
张恂:
用例是10多年来最重要的需求分析技术,更是现代软件过程和项目管理的主驱动轴。随着对用例理解的深入,我不禁倒吸一口气:对于大多数项目,如果不细化到用例这个层次,我们过去写的所谓“需求”其实都算不上真正的需求。此书是继Ivar Jacobson的OOSE之后,用例两大流派的“教主”之一Alistair Cockburn的代表之作,而且我一直认为它是迄今为止最好的用例教材。
10多年前Cockburn曾经听过Jacobson的课,没想到后来他在用例技术的实用化方面做出了贡献,大有青出于蓝而胜于蓝之势。大概与作者喜欢作诗(以及他对道德经的爱好)有关,我很喜欢他的写作风格:依着人们的直觉娓娓道来,在平淡无奇的文字背后却折射出极其丰富的项目经验和扎实的专业技巧,读完之后你会惊讶地发现一切竟然如此简单和美妙,这不就是软件开发的真谛么?
徐锋:
用例分析技术是一个伟大的创举,它将开发团队带到了客户的视角上,这是一个良好的驱动点。掌握用例分析技术,将对你的职业生涯带来很大的益处。《编写有效用例》是你的起点,本书能够帮助你真正有效地利用该技术,更好地掌握这一看似十分简单、却又十分复杂的需求分析方法。薄薄的一本书,却记载着方方面面问题的答案,从这里腾飞吧。
第2名:
重构——改善既有代码的设计(影印版)
原书名:Refactoring: Improving the Design of
Existing Code
作者:Martin Fowler
译者:侯捷 熊节
出版社:中国电力出版社
原出版社:Addison-Wesley
页数:431 定价:68
出版日期:2003-8-1
专家评语:
王咏刚:
没有什么比《重构》这本书更能理解程序员的苦衷并处处为程序员着想了。那些软件工程权威们总板着脸说“你不能这样,你不能那样”,好像所有程序员都是该他们管教的小孩子;而《重构》却告诉我们说,没人能一步到位地把所有问题都想清楚,设计差不多了就开始写代码吧,等写烦了写腻了的时候再抽空儿零敲碎打修修补补——这可不是三天打鱼两天晒网,用形而上学的话讲,这叫重构。
第3名:
分析模式——可复用对象模型(影印版)
原书名:Analysis Patterns:Reusable Object Models
作者:Martin Fowler
出版社:中国电力出版社
原出版社:Addison-Wesley
页数:357 定价:48
出版日期:2003-6-20
专家评语:
宓吉琦:
应该是一本比较难懂的书,晦涩程度可能还超过设计模式,但也是任何一个想做架构师的人所必读的。软件是为其他产业服务的, 只有能把其他产业的需求顺利转化为软件功能, 同时具有软件设计艺术的人才是好的架构师。本书中,作者就把他从事的许多行业的宝贵建模经验无条件地提供给大家,这些建模的经验的积累往往需要花费几年或者十几年的时间。
项目和配置管理
第1名:
人月神话(影印版)
原书名:The Mythical Man-Month
作者:Frederick Phillips Brooks, Jr.
出版社:中国电力出版社
原出版社:Addison-Wesley
页数:322
定价:25
出版日期:2003-3-1
专家评语:
青润:
一种感慨,一种沉默……在该书中看到的神品的推荐,让人唏嘘不已。不过,这本书的确是软件工程领域内的一本极品,国内见过似乎理论道行很深的书,但是却没有见到过有这样理论与实践深度并存的书籍出现过!
没有项目经历,没有工程经验,劝你千万不要阅读此书,否则,是对神品的亵渎!而且,你也绝对不可能看明白的!
“开发人员交付的是用户满意度,而不仅仅是有形的产品”——没有经验的人能看明白么?国内的软件以工程项目居多,国内的教育以理论为主,理论与实践的脱节,学生学到的几乎是空白,这也就是为什么其他专业转过来从事计算机行业的人往往在软件公司里面的表现往往比计算机专业毕业要好的一个很重要因素。
王咏刚:
网上有不少板砖拍在这本书上,因为有人嫌这书太老套,几十年前的破事儿了还敢擦脂抹粉地端出来蒙人骗钱。我偏要说这书挺好看,关键是你不能拿它当项目管理入门的教材看,你得把他当成一本跟你谈心聊天讲故事的散文集来看。你瞧前些年,那么多女孩子捧着本余秋雨如醉如痴似颦似笑风情万种,难道就不许我们程序员揣着《人月神话》假装深沉故作风雅,既陶冶了知识青年的道德情操又学习了项目管理的思想方法吗?
第2名:
快速软件开发(影印版)
原书名:Rapid Development
作者:Steve McConnell
出版社:机械工业出版社
原出版社:Microsoft Press
页数:676
定价:58
出版日期:2003-3-1
专家评语:
张恂:
众人看完此书皆掩卷长叹,相见恨晚啊!在外面参加了那么多国际项目管理课程,对改进“软件”项目管理到底有多大真实效果呢?软件项目经理当然要懂软件项目自身的规律!夸张一点,学了这么多通用的PM知识,可能还不及这样一本实话实说的书管用。软件项目经理可能是软件行业中承担压力最大,也是最有苦难言,最需要关心的一个群体。书里有这么多美国同行的经验教训、陷阱和误区,如果你对此还一无所知,难免会一而再、再而三地掉进去;书里还有这么多优秀的实践方法,你为什么不试着用用看呢?所以我的建议是,如果Steve McConnell这位朴实的优秀程序员、着有多本名着的技术作家兼国际软件工程权威说话了,大家一定要仔细听听。这年头的“必读经典”大有泛滥之势,实在让人招架不住,可是这次我甘冒风险大胆地说:对于改变国内软件项目管理的窘况,此乃必读之选。
第3名:
领导软件开发团队
原书名:Leading a Software Development Team:A
Developer's Guide to Successfully Leading
People and Projects
作者:Richard Whitehead
译者:吴志明
出版社:电子工业出版社
原出版社:Addison-Wesley
页数:304 定价:36
出版日期:2002-5-1
专家评语:
徐锋:
一本亲切的好书,让我爱不释手。如果你第一次担任项目经理,这本书可以让你迅速进入角色;如果你已有丰富的项目管理经验,你也能够从中吸取养份,解决埋藏在你心中很久的疑问。其采用的实例为驱动的写作方法,可以成为案头常备的宝典。
③ 《软件测试工程师培训教程》这本书怎么样
没听说过..
一般都看清华大学的软件评测师教材..或者上海市的软件质量管理测试教材.
④ 如何学习软件工程
个人浅见:软件工程涉及的内容非常多,而且学习时理论抽象的东西居多,没有具体的实践经验在将来处理具体问题时会有难度,也许这也是为什么很多人觉得很空洞的原因,不过事实显然并非如此。如果是在学校学习,个人建议:耐心先学习课本理论、多看杂志开阔视野、最重要的程序设计和系统设计的计算机基础千万不可抛到一边,否则将来实践时,很难理解开发人员面临问题的实质。
1、软工理论(课本知识)
2、CMMI(浅尝的话可以看看这本《CMMI精粹:集成化过程改进实用导论》(第二版),不过有空的话还是建议看看CMMI的原件,虽然比较枯燥,不过还是可以扫一下,不要强迫自己都记住,那是不可能的)开拓视野:
多看书籍、杂志、网页,别无它法。不过看的时候有几点注意事项:
2、目前书籍、杂志、网页等谈的多是敏捷方法,这和Web开发、企业应用IT的领域有很大的关联,而这部分领域正是由于和网络相关,所以非常火爆,不过这毕竟只是软件领域中的冰山一角,千万不可被其表象所迷惑,而抱怨课本理论。这方面很难一言道尽,有一本书《平衡敏捷和规范》(清华大学出版社)不妨买来收藏,不过要体会其中的价值,可能需要真正积累的许多问题和经验的时候才能有所发现,但先留着免得以后绝版。
3、PMP(项目管理)的知识不放也有空浏览一下,因为在软工中占据很大位置的一块——质量管理,始终是和项目管理纠缠在一块,很难分家。
4、总结一下,多看书,不是要盲从,而是要在将来形成自己的观点。实践中需要具体问题具体对待,最忌生搬硬套。“理论”和“经验”都很重要,象现在很多人都在谈“道”(理论),切不可被其迷惑,“术”也很重要,知道“道”不一定能够帮你解决问题,但知道“道”会使人得到升华和括宽思路,“术”则是真正体会“道”的基础,否则一切都是空谈,就像武侠小说里常说的什么“明白就是明白”之类的鬼话。
系统与程序设计:
1、需要深究,一是这一块也是软工中的一块重头,二是没有自己的开发实践,很难理解开发所碰到的困难和问题。
3、《产生式编程-方法、工具与应用》这本书也值得一读,里面对现今程序设计的发展有一定的论述。尤其是领域工程部分,值得再去查阅其他资料。
4、上面的书可能都是引子,看到有兴趣的话题不放通过书中所列的参考书籍进行进一步的查阅,不过这就和个人很相关了,谁也帮不上忙。
5、没事时,自己要多写写代码编编程序,结合自己的体会验证一下各家所言。
关于学软工的职业道路:
1、直接从事软件开发,成为软件开发主力
2、软件质量管理:QA、EPG、项目运作管理。这一行也很容易转回开发做管理。
3、软件咨询:新兴的行业,不过要有实力和广交朋友才行。
⑤ 软件工程好学吗应怎样准备累不累 我无基础
还不错 看一些软件编程的书了安装一些环境先 累是当然的 要想读好 那个专业都累 不过计算机还好 都是实操课 教室大部分学校都有空调 上到大学 出了英语有用其他都没用 全部都是从零开始的 加油吧 出来就业率也很高
⑥ 《软件品质之完美管理》这本书怎么样
《软件品质之完美管理》作者颜廷吉。
作者简介
颜廷吉,山东临沂人,毕业于北京大学软件与微电子学院,硕士学位。上海颐凡软件科技有限公司创始人兼首席架构师,高级系统工程师,“颐凡Java应用开发平台”软件着作权人,拥有PMP、OCP、LIP-3等各种高级国际技术认证证书,日本国家高度人才。
2007年就职于NTTDATA集团公司,任研发部主任,从事一线软件研发与设计近十年。曾经主导与参与了日本厚生劳动省HelloWork就职劳动项目、Taspo全国香烟自动贩卖项目、饮料自动贩卖机贩卖信息采集项目等大型系统的设计与研发,曾连续多年获得公司社长奖,优秀项目奖等各种奖项。
本书是作者多年从事品质管理经验的总结与精华。从软件品质管理理论、开发中的品质管理、运营中品质管理、品质预防这四大部分进行了详细介绍。同时本书还包含品质管理5项解密,6篇品质管理标准范文,7种品质项目检查表,10种品质管理要领,13种品质管理原则, 18个实战经典案例, 18个温馨提示,40项品质管理技巧以及完美文档品质,完美运营品质,架构师的自我完美修炼等完整品质分析与管理体系内容。其内容翔实、理念新颖、条理清晰、图文并茂、实战性强。
内容简介
本书内容可划分为软件品质理论要点、开发中的品质管理、运营中的品质管理及品质预防四大部分。
第1章介绍了软件品质相关的理论基础与概念。
第2章到第10章主要介绍软件开发中所必备品质管理技能体系。第2章介绍了品质管理要点及大致流程;第3章与第4章介绍了品质注入阶段中具体的定量与定性品质管理技能;第5章与第6章是对品质验证阶段中具体的定量与定性品质管理技能的介绍;第7章重点介绍了软件开发过程中必备的文件种类与文档写作技巧;第8章主要介绍了架构品质管理方面应该考虑的要点;第9章介绍了各种品质管理要领;第10章介绍了品质开发与运营中重要的常用工具等。
第11章,主要内容是介绍软件运营时必备的品质管理技能。
第12章主要介绍架构师自我修炼的必备技巧。
《软件品质之管理》适合软件工程师、架构师、软件产品经理和软件品质管理员提升自身软件品质管理水平使用;还适用于那些有志于成为软件架构师的其他软件从业人员自学使用;也可以作为各大院校相关专业师生参考;各大培训机构也可将本书作为软件工程、软件架构等方面的培训教材。
本书特色
授人以鱼,授之以渔:本书的内容是按照品质管理培训师的标准进行编排的,不仅可以自我提高亦可以作为讲师教材。
案例驱动,脚踏实地:不单独讲理论,而是以案例驱动进行实战解析;不仅是经验与理论总结,更重要的是用最佳项目案例来说明技术应用。特别是各种文档成果物的模板,在实际项目中都可以拿来即用。
图解技术,形象生动:避免了乏味难懂的文字描述,使繁冗复杂的事物一目了然,也是对理论进行深刻透彻理解的形象记忆。
与时俱进,中西结合:本书大量汲取了日本品质管理中的精髓,并结合我们国内的实情进行了优化,日本人的品质管理思想与意识值得我们研究与学习。特别是在文档的写作能力上,本书安排了较大篇幅进行指导,就是针对国内IT人员不善于制作文档的弱点而开出的良方。而且本书安排的图表颇多,也是有意在展示与训练读者——尽可能地在文档里融入图表技术,这样会给读者带来赏心悦目的阅读体验。
⑦ 软件工程这个专业怎么样
中国的软件行业规模不是很大,有些软件企业在软件制作上,也只是采用了一些软件工程的思想,距离大规模的工业化大生产比较还是有一定的差距;原因有管理体制的问题,市场问题,政策问题,也有软件工程理论不全面和不完善的问题。所以软件工程的研究和应用,以及中国软件行业的进一步发展,都需要一定的既有软件工程的理论基础和研究能力,又有一定的实践经验的软件工程科学技术人员来推动。软件工程的前途是光明的。软件服务外包属于智力人才密集型现代服务业。大量着名外包企业落户宁波。主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任程序员、软件测试员、项目经理等工作岗位。软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。相关学者、组织机构都分别给出了定义:Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。IEEE:软件工程是开发、运行、维护和修复软件的系统方法。Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
⑧ 关于软件工程这门课程
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:
Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
IEEE:软件工程是开发、运行、维护和修复软件的系统方法。
Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
软件工程学的内容
软件工程学的主要内容是软件开发技术和软件工程管理.
软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。
软件工程基本原理
着名软件工程专家B.Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。
(1)用分阶段的生存周期计划进行严格的管理。
(2)坚持进行阶段评审。
(3)实行严格的产品控制。
(4)采用现代程序设计技术。
(5)软件工程结果应能清楚地审查。
(6)开发小组的人员应该少而精。
(7)承认不断改进软件工程实践的必要性。
B.Boehm指出,遵循前六条基本原理,能够实现软件的工程化生产;按照第七条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。
软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程必须遵循什么原则
围绕工程设计、工程支持以及工程管理已提出了以下四条基本原则:
(1)选取适宜的开发模型
该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其它因素间是相互制约和影响的,经常需要权衡。因此,必需认识需求定义的易变性,采用适当的开发模型,保证软件产品满足用户的要求。
(2)采用合适的设计方法
在软件设计中,通常需要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
(3)提供高质量的工程支撑
工欲善其事,必先利其器。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
(4)重视软件工程的管理
软件工程的管理直接影响可用资源的有效利用,生产满足目标的软件产品以及提高软件组织的生产能力等问题。因此,仅当软件过程予以有效管理时,才能实现有效的软件工程。
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来,这就是软件工程。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。它们是在七十年代为了对付应用软件日益增长的复杂程度、漫长的开发周期以及用户对软件产品经常不满意的状况而发展起来的。人类解决复杂问题时普遍采用的一个策略就是“各个击破”,也就是对问题进行分解然后再分别解决各个子问题的策略。软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。采用软件工程方法论开发软件的时候,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的物理细节。每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果检查通不过,则必须进行必要的返工,并且返工后还要再经过审查。审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。文档是通信的工具,它们清楚准确地说明了到这个时候为止,关于该项工程已经知道了什么,同时确立了下一步工作的基础。此外,文档也起备忘录的作用,如果文档不完整,那么一定是某些工作忘记做了,在进入生存周期的下一阶段之前,必须补足这些遗漏的细节。在完成生存周期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法——结构分析或结构设计技术。
把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;在软件生存周期的每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结束之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。总之,采用软件工程方法论可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。
目前划分软件生存周期阶段的方法有许多种,软件规模、种类、开发方式、开发环境以及开发时使用的方法论都影响软件生存周期阶段的划分。在划分软件生存周期的阶段时应该遵循的一条基本原则就是使各阶段的任务彼此间尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件开发工程的组织管理。一般说来,软件生存周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分成若干个阶段。下面的论述主要针对应用软件,对系统软件也基本适用。
软件定义时期的任务是确定软件开发工程必须完成的总目标;确定工程的可行性,导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成三个阶段,即问题定义、可行性研究和需求分析。
开发时期具体设计和实现在前一个时期定义的软件,它通常由下述四个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
维护时期的主要任务是使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
下面扼要介绍软件生存周期每个阶段的基本任务和结束标准。
1问题定义
问题定义阶段必须回答的关键问题:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出的结果很可能是毫无意义的。尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。
通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解,并在用户和使用部门负责人的会议上认真讨论这份书面报告,澄清含糊不精的地方,改正理解不正确的地方,最后得出一份双方都满意的文档。
问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。
2可行性研究
这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了回答这个问题,系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。
可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
在问题定义阶段提出的对工程目标和规模的报告通常比较含糊。可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规模和目标。然后分析员更准确地估计系统的成本和效益,对建议的系统进行仔细的成本/效益分析是这个阶段的主要任务之一。
可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据,一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。可行性研究以后的那些阶段将需要投入要多的人力物力。及时中止不值得投资的工程项目,可以避免更大的浪费。
3需求分析
这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。
用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样使用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。因此系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法描述表示系统的逻辑模型。
在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。系统分析员通常都是计算机软件专家,技术专家一般都喜欢很快着手进行具体设计,然而,一旦分析员开始谈论程序设计的细节,就会脱离用户,使他们不能继续提出他们的要求和建议。较件工程使用的结构分析设计的方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提供完整准确的系统逻辑模型,经过用户确认之后才能进入下一个阶段,这就可以有效地防止和克服急于着手进行具体设计的倾向。
4总体设计
这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?”
首先,应该考虑几种可能的解决方案。列如,目标系统的一些主要功能是用计算机自动完成还是用人工完成;如果使用计算机,那么是使用批处理方式还是人机交互方式;信息存储使用传统的文件系统还是数据库……。通常至少应该考虑下述几类可能的方案:
低成本的解决方案。系统只能完成最必要的工作,不能多做一点额处的工作。
中等成本的解决方案。这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些功能和特点。虽然用户没有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些附加的能力在实践中将证明是很有价值的。
高成本的“十全十美”的系统。这样的系统具有用户可能希望有的所有功能和特点。
系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统 (最佳方案),并且制定实现所推荐的系统的详细计划。如果用户接受分析员推荐的系统,则可以着手完成本阶段的另一项主要工作。
上面的工作确定了解决问题的策略以及目标系统需要哪些程序,但是,怎样设计这些程序呢?结构设计的一条基本原理就是程序应该模块化,也就是一个大程序应该由许多规模适中的模块按合理的层次结构组织而成。总体设计阶段的第二项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。通常用层次图或结构图描绘软件的结构。
5详细设计
总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”
这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。
通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计的结果。
6编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。
程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把说细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。
7综合测试
这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
最基本的测试是集成测试和验收测试。所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。所谓验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户积极参加下)对目标系统进行验收。
必要时还可以再通过现场测试或平行运行等方法对目标系统进一步测试检验。
为了使用户能够积极参加验收测试,并且在系统投入生产性运行以后能够正确有效地使用这个系统,通常需要以正式的或非正式的方式对用户进行培训。
通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求也可以决定测试和调试过程什么时候可以结束。
应该用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,做为软件配置的一个组成成分。
8软件维护
维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。
通常有四类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。
虽然没有把维护阶段进一步划分成更小的阶段,但是实际上每一项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,因此实质上是经历了一次压缩和简化了的软件定义和开发的全过程。
都应该经过提出维护要求(或报告问题),分析维护要求,提出维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,因此实质上是经历了一次压缩和简化了的软件定义和开发的全过程。
⑨ 软件质量管理指南的图书前言
软件质量管理是个全组织、多角色共同参与的、复杂的系统过程,好的软件质量是各级软件管理人员孜孜追求的最高梦想。
软件质量管理体系的知识涵盖了软件工程、CMMI软件能力成熟度模型、PMP项目管理以及软件测试技术的理论。其中,软件工程主要介绍了各种生命周期模型,这是软件研发和质量管理的基础,也是CMMI软件能力成熟度模型和PMP项目管理理论中非重点介绍的内容;PMP项目管理理论适用于任何行业的项目管理工作,它详细介绍了制定项目估算、预算的方法,以及制定项目进度计划的各种技术,这些是CMMI软件能力成熟度模型和软件工程的重要补充;CMMI软件能力成熟度模型是当今最流行的一种对软件企业成熟度的评判标准,它所涵盖的内容之广及体系之完整都是前所未有的。CMMI将软件的管理过程拆分为多个PA(过程域),并详细介绍了每个PA所需要完成的工作、流程以及流程中必备的产出物,它是软件质量管理中的核心部分。但CMMI软件能力成熟度模型着重于过程的定义,有些具体的操作方法和技术就必须参考PMP项目管理理论或软件测试理论的相关知识。软件测试一直以来都被很多人误解为等同于软件质量管理,多样的软件测试技术正是CMMI软件能力成熟度模型VER(验证)的重要补充内容。总的来说,软件工程中生命周期模型好比盖房子时打下的地基,CMMI软件能力成熟度模型就是房子的框架结构,PMP项目管理以及软件测试技术的理论就是填充房子的砖石,而盖好的这座房子就是软件质量管理体系。
本书以CMMI软件能力成熟度模型为主线,第1章对软件质量管理体系进行了概述,第2~4章介绍了软件质量管理所必备的常用技术“验证”、“确认”和“同行评审”;第5~8章介绍软件质量管理的基础管理流程“质量保证”、“配置管理”、“度量管理”和“风险管理”的知识;第9~11章介绍软件项目管理相关的“项目集成管理”、“项目计划”和“项目监控”的知识;第12~14章介绍了软件质量管理体系的“需求工程”、“决策分析”和“产品集成”的理论;第15章重点介绍了如何进行持续的质量改进,第16章为广大读者讲解了微软最新的软件项目工具“Team Foundation Server”的基本使用方法。
为了让广大读者更好地理解软件质量管理的理论,本书在每章的结束都针对软件项目研发过程中的常见问题进行案例分析,目的是为了将软件质量管理体系的知识与实际项目进行联系,更好地让软件各级管理人员进行理解和应用。
本书总结了当今软件质量管理所需要的全部知识,其中重点介绍的CMMI软件能力成熟度模型可以为软件公司高层管理人员和过程改进小组(EPG)的工作提供帮助;PMP项目管理的相关技术可以为软件公司的项目管理人员提供日常的项目指导并作为PMP考试的参考资料;每章的案例分析也采取了“信息类项目管理师”的考试形式,希望可以为参加“信息类项目管理师”考试的朋友提供帮助。
这些年来我一直希望可以将总结的软件质量管理的知识和理论与大家分享,本书能够顺利出版首先要感谢51Testing所提供的机会,也要感谢各位编辑的辛勤劳动。同时还要感谢长期以来支持我的朋友和我的妻子蔡觅女士,你们是我成长的最大动力!
作 者
2009年5月28日于苏州
⑩ 推荐一下几本关于软件质量管理的书
电子工业出版社的《软件质量管理实践-软件缺陷预防、清除、管理实用方法》,这本就够了,非常好,作者本身就是做这个的,第一手经验。