资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章 软件工程基本观念本章讲述软件工工程的基本观观念,是关于于软件工程宏宏观上的探讨讨。如果你是是软件公司的的老板,用不不着在第一线线工作,那么么看这一章就就够了。但你你一定要让员员工们相信不不停地工作是是人生最大的的快乐,并且且让他们把本本书看完。1.1节讲述软软件工程的目目标和常用的的软件工程模模型。1.2节讲述软软件开发的基基本策略:“复用”、“分而治之”、“优化折衷”,有助于指指导实践者选选择方法和产产生新方法。11.3节例举一一些不正确的的观念,取材材于早期软件件人员比较幼幼稚的想法,初初学者可以引引以为戒。11.4节探讨一一些有争议的的观念。看完本章,要要树立这样的的信念:软件件开发过程中中的坎坎坷坷坷,仿佛只是是人脸的凹凸凸不平,用热热水毛巾一把把就可抹平。让让我们高举程程序主义、软软件工程思想想的伟大旗帜帜,紧密团结结在以Miccrosofft为核心的的软件公司周周围,沿着比比尔盖茨的生财财之道,不分分白天黑夜地地编程,把建建设有中国特特色的软件产产业的伟大事事业全面推向向21世纪。1.1 软件工工程的目标与与常用模型软件工程的目标标是提高软件件的质量与生生产率,最终终实现软件的的工业化生产产。质量是软软件需求方最最关心的问题题,用户即使使不图物美价价廉,也要求求个货真价实实。生产率是是软件供应方方最关心的问问题,老板和和员工都想用用更少的时间间挣更多的钱钱。质量与生生产率之间有有着内在的联联系,高生产产率必须以质质量合格为前前提。如果质质量不合格,对对供需双方都都是坏事情。从从短期效益看看,追求高质质量会延长软软件开发时间间并且增大费费用,似乎降降低了生产率率。从长期效效益看,高质质量将保证软软件开发的全全过程更加规规范流畅,大大大降低了软软件的维护代代价,实质上上是提高了生生产率,同时时可获得很好好的信誉。质质量与生产率率之间不存在在根本的对立立,好的软件件工程方法可可以同时提高高质量与生产产率。软件供需双方的的代表能在餐餐桌上谈笑风风生,归功于于第一线开发发人员的辛勤勤工作。质量量与生产率的的提高就指望望程序员与程程序经理。对对开发人员而而言,如果非非得在质量与与生产率之间间分个主次不不可,那么应应该是质量第第一,生产率率第二。这是是因为:(11)质量直接接体现在软件件的每段程序序中,高质量量自然是开发发人员的技术术追求,也是是职业道德的的要求。(22)高质量对对所有的用户户都有价值,而而高生产率只只对开发方有有意义。(33)如果一开开始就追求高高生产率,容容易使人急功功近利,留下下隐患。宁可可进度慢些,也也要保证每个个环节的质量量,以图长远远利益。软件的质量因素素很多,如正正确性,性能能、可靠性、容容错性、易用用性、灵活性性、可扩充性性、可理解性性、可维护性性等等。有些些因素相互重重叠,有些则则相抵触,真真要提高质量量可不容易啊啊!软件工程的主要要环节有:人人员管理、项项目管理、可可行性与需求求分析、系统统设计、程序序设计、测试试、维护等,如如图1.1所示。人员管理项目管理维护测试程序设计系统设计可行性与需求分析图1.1 软软件工程的主主要环节软件工程模型建建议用一定的的流程将各个个环节连接起起来,并可用用规范的方式式操作全过程程,如同工厂厂的生产线。常常见的软件工工程模型有:线性模型(图图1.2),渐增增式模型(图图1.3),螺旋旋模型,快速速原型模型,形形式化描述模模型等等 Presssmam 1999, Sommeerville 1992。维护测试程序设计系统设计可行性与需求分析图1.2 软软件工程的线线性模型 时时间维护测试程序设计系统设计可行性与需求分析维护测试程序设计系统设计可行性与需求分析 进度度 图1.3 软软件工程的渐渐增式模型最早出现的软件件工程模型是是线性模型(又又称瀑布模型型)。线性模模型太理想化化,太单纯,已已不再适合现现代的软件开开发模式,几几乎被业界抛抛弃。偶而被被人提起,都都属于被贬对对象,未被留留一丝惋惜。但但我们应该认认识到,“线性”是人们最容容易掌握并能能熟练应用的的思想方法。当当人们碰到一一个复杂的“非线性”问题时,总总是千方百计计地将其分解解或转化为一一系列简单的的线性问题,然然后逐个解决决。一个软件件系统的整体体可能是复杂杂的,而单个个子程序总是是简单的,可可以用线性的的方式来实现现,否则干活活就太累了。线线性是一种简简洁,简洁就就是美。当我我们领会了线线性的精神,就就不要再呆板板地套用线性性模型的外表表,而应该用用活它。例如如渐增式模型型实质就是分分段的线性模模型,如图11.3所示。螺螺旋模型则是是接连的弯曲曲了的线性模模型。在其它它模型中都能能够找到线性性模型的影子子。套用固定的模型型不是程序员员的聪明之举举。比如“程序设计”与“测试”之间的关系系,习惯上总总以为程序设设计在先,测测试在后,如如图1.4(a)所所示。而对于于一些复杂的的程序,将测测试分为同步步测试与总测测试更有效,如如图1.4(b)所所示。程序设计总测试程序设计测 试同步测试(a) (b)图1.4 (aa)程序设计计在先测试在在后 (b)测试分为为同步测试与与总测试不论是什么软件件工程模型,总总是少不了图图1.1中的各个个环节。本书书擗开具体的的软件工程模模型,顺序讲讲述人员管理理、项目管理理、可行性与与需求分析、系系统设计、程程序设计、测测试,以及维维护与再生工工程。其中程程序设计部分分以C+/C语言为例。1.2 软件开开发的基本策策略人们都有自己的的世界观和方方法论,能自自然而然地运运用于生活和和工作中。同同样,程序员员脑子里的软软件工程观念念会无形地支支配其怎么去去做事情。软软件工程三十十年的发展,已已经积累了相相当多的方法法,但这些方方法不是严密密的理论。实实践人员不应应该教条地套套用方法,更更重要的是学学会“选择合适的的方法”和“产生新方法法”。有谋略才才会有好的战战术。几千年年前,我们的的祖先就在打打闹之际写下下了很多心得得体会,被现现代人很好地地运用于工业业和商业。本本节讲述软件件开发中的三三种基本策略略:“复用”、“分而治之”、“优化折衷”。1.2.1 复复用复用就是指“利利用现成的东东西”,文人称之之为“拿来主义”。被复用的的对象可以是是有形的物体体,也可以是是无形的成果果。复用不是是人类懒惰的的表现而是智智慧的表现。因因为人类总是是在继承了前前人的成果,不不断加以利用用、改进或创创新后才会进进步。所以当当我们欢度国国庆时,要搞搞清楚祖国远远不止50岁岁,我们今天天享用到的财财富还有上下下五千年人民民的贡献。进进步只是应该该的,不进步步则就可耻了了。复用的内涵包括括了提高质量量与生产率两两者。由经验验可知,在一一个新系统中中,大部分的的内容是成熟熟的,只有小小部分内容是是创新的。一一般地可以相相信成熟的东东西总是比较较可靠的(即即具有高质量量),而大量量成熟的工作作可以通过复复用来快速实实现(即具有有高生产率)。勤勤劳并且聪明明的人们应该该把大部分的的时间用在小小比例的创新新工作上,而而把小部分的的时间用在大大比例的成熟熟工作中,这这样才能把工工作做得又快快又好。把复用的思想用用于软件开发发,称为软件件复用。据统统计,世上已已有10000亿多行程序序,无数功能能被重写了成成千上万次,真真是浪费哪。面面向对象(OObjectt Orieented)学学者的口头禅禅就是“请不要再发发明相同的车车轮子了” 。将具有一定集成成度并可以重重复使用的软软件组成单元元称为软构件件(Softtware Compoonent)。软件复用用可以表述为为:构造新的的软件系统可可以不必每次次从零做起,直直接使用已有有的软构件,即即可组装(或或加以合理修修改)成新的的系统。复用用方法合理化化并简化了软软件开发过程程,减少了总总的开发工作作量与维护代代价,既降低低了软件的成成本又提高了了生产率。另另一方面,由由于软构件是是经过反复使使用验证的,自自身具有较高高的质量。因因此由软构件件组成的新系系统也具有较较高的质量。利利用软构件生生产应用软件件的过程如图图1.5所示。软件复用不仅要要使自己拿来来方便,还要要让别人拿去去方便,是“拿来拿去主主义”。面向对象象方法,Miicrosofft公司的CCOM规范 Rogeerson 19999,都能很很好地用于实实现大规模的的软件复用。查询软构件库用构件建造新软件定义所需构件集合应用软件系统分解提取构件 存在 创建新构件 构构件不存在图1.5 利利用软构件生生产应用软件件的过程1.2.2 分分而治之分而治之是指把把一个复杂的的问题分解成成若干个简单单的问题,然然后逐个解决决。这种朴素素的思想来源源于人们生活活与工作的经经验,完全适适合于技术领领域。软件人人员在执行分分而治之的时时候,应该着着重考虑:复复杂问题分解解后,每个问问题能否用程程序实现?所所有程序最终终能否集成为为一个软件系系统并有效解解决原始的复复杂问题?软件系统复杂问题 解决原始始问题程序1子问题1 分解 集成程序2子问题2程序n子问题n图1.6 软件件领域的分而而治之策略图1.6表示了了软件领域的的分而治之策策略。诸如软软件的体系结结构设计、模模块化设计都都是分而治之之的具体表现现。软件的分分而治之不可可以“硬分硬治”。不像为了了吃一个西瓜瓜或是一只鸡鸡,挥刀斩成成n块,再把每每块塞进嘴里里粉碎搅拌,然然后交由胃肠肠来消化吸收收,象征复杂杂问题的西瓜瓜或是鸡也就就此消失了。1.2.3 优优化折衷软件的优化是指指优化软件的的各个质量因因素,如提高高运行速度,提提高对内存资资源的利用率率,使用户界界面更加友好好,使三维图图形的真实感感更强等等。想想做好优化工工作,首先要要让开发人员员都有正确的的认识:优化化工作不是可可有可无的事事情,而是必必须要做的事事情。当优化化工作成为一一种责任时,程程序员才会不不断改进软件件中的算法,数数据结构和程程序组织,从从而提高软件件质量。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号