软件工程思想1

上传人:2315****3hhg 文档编号:166513244 上传时间:2022-11-01 格式:DOCX 页数:16 大小:42.26KB
收藏 版权申诉 举报 下载
软件工程思想1_第1页
第1页 / 共16页
软件工程思想1_第2页
第2页 / 共16页
软件工程思想1_第3页
第3页 / 共16页
资源描述:

《软件工程思想1》由会员分享,可在线阅读,更多相关《软件工程思想1(16页珍藏版)》请在装配图网上搜索。

1、第一章 软件工程基本观念本章讲述软软件工程程的基本本观念,是是关于软软件工程程宏观上上的探讨讨。如果果你是软软件公司司的老板板,用不不着在第第一线工工作,那那么看这这一章就就够了。但但你一定定要让员员工们相相信不停停地工作作是人生生最大的的快乐,并并且让他他们把本本书看完完。1.1节讲讲述软件件工程的的目标和和常用的的软件工工程模型型。1.2节讲讲述软件件开发的的基本策策略:“复用”、“分而治治之”、“优化折衷”,有助助于指导导实践者者选择方方法和产产生新方方法。11.3节例例举一些些不正确确的观念念,取材材于早期期软件人人员比较较幼稚的的想法,初初学者可可以引以以为戒。11.4节探探讨一些些

2、有争议议的观念念。看完本章章,要树树立这样样的信念念:软件件开发过过程中的的坎坎坷坷坷,仿仿佛只是是人脸的的凹凸不不平,用用热水毛毛巾一把把就可抹抹平。让让我们高高举程序序主义、软软件工程程思想的的伟大旗旗帜,紧紧密团结结在以MMicrrosooft为为核心的的软件公公司周围围,沿着着比尔盖茨的的生财之之道,不不分白天天黑夜地地编程,把把建设有有中国特特色的软软件产业业的伟大大事业全全面推向向21世世纪。1.1软件件工程的的目标与与常用模模型软件工程的的目标是是提高软软件的质质量与生生产率,最最终实现现软件的的工业化化生产。质质量是软软件需求求方最关关心的问问题,用用户即使使不图物物美价廉廉,

3、也要要求个货货真价实实。生产产率是软软件供应应方最关关心的问问题,老老板和员员工都想想用更少少的时间间挣更多多的钱。质质量与生生产率之之间有着着内在的的联系,高高生产率率必须以以质量合合格为前前提。如如果质量量不合格格,对供供需双方方都是坏坏事情。从从短期效效益看,追追求高质质量会延延长软件件开发时时间并且且增大费费用,似似乎降低低了生产产率。从从长期效效益看,高高质量将将保证软软件开发发的全过过程更加加规范流流畅,大大大降低低了软件件的维护护代价,实实质上是是提高了了生产率率,同时时可获得得很好的的信誉。质质量与生生产率之之间不存存在根本本的对立立,好的的软件工工程方法法可以同同时提高高质量

4、与与生产率率。软件供需双双方的代代表能在在餐桌上上谈笑风风生,归归功于第第一线开开发人员员的辛勤勤工作。质质量与生生产率的的提高就就指望程程序员与与程序经经理。对对开发人人员而言言,如果果非得在在质量与与生产率率之间分分个主次次不可,那那么应该该是质量量第一,生生产率第第二。这这是因为为:(11)质量量直接体体现在软软件的每每段程序序中,高高质量自自然是开开发人员员的技术术追求,也也是职业业道德的的要求。(22)高质质量对所所有的用用户都有有价值,而而高生产产率只对对开发方方有意义义。(33)如果果一开始始就追求求高生产产率,容容易使人人急功近近利,留留下隐患患。宁可可进度慢慢些,也也要保证证

5、每个环环节的质质量,以以图长远远利益。软件的质量量因素很很多,如如正确性性,性能能、可靠靠性、容容错性、易易用性、灵灵活性、可可扩充性性、可理理解性、可可维护性性等等。有有些因素素相互重重叠,有有些则相相抵触,真真要提高高质量可可不容易易啊!软件工程的的主要环环节有:人员管管理、项项目管理理、可行行性与需需求分析析、系统统设计、程程序设计计、测试试、维护护等,如如图1.1所示示。人员管理项目管理维护测试程序设计系统设计可行性与需求分析图1.1软软件工程程的主要要环节软件工程模模型建议议用一定定的流程程将各个个环节连连接起来来,并可可用规范范的方式式操作全全过程,如如同工厂厂的生产产线。常常见的

6、软软件工程程模型有有:线性性模型(图图1.2),渐渐增式模模型(图图1.3),螺螺旋模型型,快速速原型模模型,形形式化描描述模型型等等 Preessmmam119999,Soommeerviillee 19992。维护测试程序设计系统设计可行性与需求分析图1.2 软件件工程的的线性模模型时间维护测试程序设计系统设计可行性与需求分析维护测试程序设计系统设计可行性与需求分析进度图1.3软软件工程程的渐增增式模型型最早出现的的软件工工程模型型是线性性模型(又又称瀑布布模型)。线线性模型型太理想想化,太太单纯,已已不再适适合现代代的软件件开发模模式,几几乎被业业界抛弃弃。偶而而被人提提起,都都属于被被

7、贬对象象,未被被留一丝丝惋惜。但但我们应应该认识识到,“线性”是人们们最容易易掌握并并能熟练练应用的的思想方方法。当当人们碰碰到一个个复杂的的“非线性性”问题时时,总是是千方百百计地将将其分解解或转化化为一系系列简单单的线性性问题,然然后逐个个解决。一一个软件件系统的的整体可可能是复复杂的,而而单个子子程序总总是简单单的,可可以用线线性的方方式来实实现,否否则干活活就太累累了。线线性是一一种简洁洁,简洁洁就是美美。当我我们领会会了线性性的精神神,就不不要再呆呆板地套套用线性性模型的的外表,而而应该用用活它。例例如渐增增式模型型实质就就是分段段的线性性模型,如如图1.3所示示。螺旋旋模型则则是接

8、连连的弯曲曲了的线线性模型型。在其其它模型型中都能能够找到到线性模模型的影影子。套用固定的的模型不不是程序序员的聪聪明之举举。比如如“程序设设计”与“测试”之间的的关系,习习惯上总总以为程程序设计计在先,测测试在后后,如图图1.4(aa)所示示。而对对于一些些复杂的的程序,将将测试分分为同步步测试与与总测试试更有效效,如图图1.4(bb)所示示。程序设计总测试程序设计测 试同步测试(a)(bb)图1.4 (a)程序序设计在在先测试试在后(b)测试试分为同同步测试试与总测测试不论是什么么软件工工程模型型,总是是少不了了图1.1中的的各个环环节。本本书擗开开具体的的软件工工程模型型,顺序序讲述人人

9、员管理理、项目目管理、可可行性与与需求分分析、系系统设计计、程序序设计、测测试,以以及维护护与再生生工程。其其中程序序设计部部分以CC+/C语言为为例。1.2软件件开发的的基本策策略人们都有自自己的世世界观和和方法论论,能自自然而然然地运用用于生活活和工作作中。同同样,程程序员脑脑子里的的软件工工程观念念会无形形地支配配其怎么么去做事事情。软软件工程程三十年年的发展展,已经经积累了了相当多多的方法法,但这这些方法法不是严严密的理理论。实实践人员员不应该该教条地地套用方方法,更更重要的的是学会会“选择合合适的方方法”和“产生新新方法”。有谋谋略才会会有好的的战术。几几千年前前,我们们的祖先先就在

10、打打闹之际际写下了了很多心心得体会会,被现现代人很很好地运运用于工工业和商商业。本本节讲述述软件开开发中的的三种基基本策略略:“复用”、“分而治治之”、“优化折衷”。1.2.11 复用用复用就是指指“利用现现成的东东西”,文人人称之为为“拿来主主义”。被复复用的对对象可以以是有形形的物体体,也可可以是无无形的成成果。复复用不是是人类懒懒惰的表表现而是是智慧的的表现。因因为人类类总是在在继承了了前人的的成果,不不断加以以利用、改改进或创创新后才才会进步步。所以以当我们们欢度国国庆时,要要搞清楚楚祖国远远不止550岁,我我们今天天享用到到的财富富还有上上下五千千年人民民的贡献献。进步步只是应应该的

11、,不不进步则则就可耻耻了。复用的内涵涵包括了了提高质质量与生生产率两两者。由由经验可可知,在在一个新新系统中中,大部部分的内内容是成成熟的,只只有小部部分内容容是创新新的。一一般地可可以相信信成熟的的东西总总是比较较可靠的的(即具具有高质质量),而而大量成成熟的工工作可以以通过复复用来快快速实现现(即具具有高生生产率)。勤勤劳并且且聪明的的人们应应该把大大部分的的时间用用在小比比例的创创新工作作上,而而把小部部分的时时间用在在大比例例的成熟熟工作中中,这样样才能把把工作做做得又快快又好。把复用的思思想用于于软件开开发,称称为软件件复用。据据统计,世世上已有有10000亿多多行程序序,无数数功能

12、被被重写了了成千上上万次,真真是浪费费哪。面面向对象象(Obbjecct OOrieenteed)学学者的口口头禅就就是“请不要要再发明明相同的的车轮子子了” 。将具有一定定集成度度并可以以重复使使用的软软件组成成单元称称为软构构件(SSofttwarre CCompponeent)。软件件复用可可以表述述为:构构造新的的软件系系统可以以不必每每次从零零做起,直直接使用用已有的的软构件件,即可可组装(或或加以合合理修改改)成新新的系统统。复用用方法合合理化并并简化了了软件开开发过程程,减少少了总的的开发工工作量与与维护代代价,既既降低了了软件的的成本又又提高了了生产率率。另一一方面,由由于软构

13、构件是经经过反复复使用验验证的,自自身具有有较高的的质量。因因此由软软构件组组成的新新系统也也具有较较高的质质量。利利用软构构件生产产应用软软件的过过程如图图1.55所示。软件复用不不仅要使使自己拿拿来方便便,还要要让别人人拿去方方便,是是“拿来拿拿去主义义”。面向向对象方方法,MMicrrosooft公公司的CCOM规规范 Roggersson 19999,都能能很好地地用于实实现大规规模的软软件复用用。查询软构件库用构件建造新软件定义所需构件集合应用软件系统分解提取构件存在创建新构件构件不存在在图1.5 利用用软构件件生产应应用软件件的过程程1.2.22分而治治之分而治之是是指把一一个复杂

14、杂的问题题分解成成若干个个简单的的问题,然然后逐个个解决。这这种朴素素的思想想来源于于人们生生活与工工作的经经验,完完全适合合于技术术领域。软软件人员员在执行行分而治治之的时时候,应应该着重重考虑:复杂问问题分解解后,每每个问题题能否用用程序实实现?所所有程序序最终能能否集成成为一个个软件系系统并有有效解决决原始的的复杂问问题?软件系统复杂问题解决原始问问题程序1子问题1分解集成程序2子问题2程序n子问题n图1.6 软件领领域的分分而治之之策略图1.6表表示了软软件领域域的分而而治之策策略。诸诸如软件件的体系系结构设设计、模模块化设设计都是是分而治治之的具具体表现现。软件件的分而而治之不不可以

15、“硬分硬硬治”。不像像为了吃吃一个西西瓜或是是一只鸡鸡,挥刀刀斩成nn块,再再把每块块塞进嘴嘴里粉碎碎搅拌,然然后交由由胃肠来来消化吸吸收,象象征复杂杂问题的的西瓜或或是鸡也也就此消消失了。1.2.33优化折衷软件的优化化是指优优化软件件的各个个质量因因素,如如提高运运行速度度,提高高对内存存资源的的利用率率,使用用户界面面更加友友好,使使三维图图形的真真实感更更强等等等。想做做好优化化工作,首首先要让让开发人人员都有有正确的的认识:优化工工作不是是可有可可无的事事情,而而是必须须要做的的事情。当当优化工工作成为为一种责责任时,程程序员才才会不断断改进软软件中的的算法,数数据结构构和程序序组织

16、,从从而提高高软件质质量。著名的3DD游戏软软件Quuakee,能够够在PCC机上实实时地绘绘制高度度真实感感的复杂杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。就假设我们们经过思思想教育育后,精精神抖擞擞,随时时准

17、备为为优化工工作干上上六天七七夜。但但愿意做做并不意意味着就就能把事事情做好好。优化化工作的的复杂之之处是很很多目标标存在千千丝万缕缕的关系系,可谓谓数不清清理还乱乱。当不不能够使使所有的的目标都都得到优优化时,就就需要“折衷”策略。软件中的折折衷策略略是指通通过协调调各个质质量因素素,实现现整体质质量的最最优。就就象党支支部副书书记扮演演和事佬佬的角色色:“为了使使整个组组织具有有最好的的战斗力力,我们们要重用用几个人人,照顾顾一些人人,在万万不得已已的情况况下委屈屈一批人人”。软件折衷的的重要原原则是不不能使某某一方损损失关键键的职能能,更不不可以象象“舍鱼而而取熊掌掌”那样抛抛弃一方方。

18、例如如3D动动画软件件的瓶颈颈通常是是速度,但但如果为为了提高高速度而而在程序序中取消消光照明明计算,那那么场景景就会丧丧失真实实感,33D动画画也就不不再有意意义了(如如果人类类全是色色盲,计计算机图图形学将将变得异异常简单单)。人都有惰性性,如果果允许滥滥用折衷衷的话,那那么一当当碰到困困难,人人们就会会用拆东东墙补西西墙的方方式去折折衷,不不再下苦苦功去做做有意义义的优化化。所以以我们有有必要为为折衷制制定严正正的立场场:在保保证其它它因素不不差的前前提下,使使某些因因素变得得更好。下面让我们们用“优化折衷”的策略略解决“鱼和熊熊掌不可可得兼”的难题题。问题提出:假设鱼鱼每千克克10元元

19、,熊掌掌每千克克一万元元。有个个倔脾气气的人只只有200元钱,非非得要吃吃上一公公斤美妙妙的“熊掌烧烧鱼”,怎么么办?解决方案:化9元元9角99分钱买买9999克鱼肉肉,化110元钱钱买1克克熊掌肉肉,可做做一道“熊掌戏戏鱼”菜。剩剩下的那那一分钱钱还可建建立奖励励基金。1.3 一些不不正确的的观念本节例举并并分析一一些不正正确的软软件工程程观念,可可帮助初初学者少少犯相似似的错误误。观念之一:我们拥拥有一套套讲述如如何开发发软件的的书籍,书书中充满满了标准准与示例例,可以以帮助我我们解决决软件开开发中遇遇到的任任何问题题。客观情况:好的参参考书无无疑能指指导我们们的工作作。充分分利用书书籍中

20、的的方法、技技术和技技巧,可可以有效效地解决决软件开开发中大大量常见见的问题题。但实实践者并并不能因因此依赖赖于书籍籍,这是是因为:(1)现现实的工工作中,由由于条件件千差万万别,即即使是相相当成熟熟的软件件工程规规范,常常常也无无法套用用。(22)软件件技术日日新月异异,没有有哪一种种软件标标准能长长盛不衰衰。祖传传秘方在在某些领领域很吃吃香,而而在软件件领域则则意味着着落后。观念之二:我们拥拥有最好好的开发发工具、最最好的计计算机,一一定能做做出优秀秀的软件件。客观情况:良好的的开发环环境只是是产出成成果的必必要条件件,而不不是充分分条件。如如果拥有有好环境境的是一一群庸人人,难保保他们不

21、不干出南南辕北辙辙的事情情。观念之三:如果我我们落后后于计划划,可以以增加更更多的程程序员来来解决。客观情况:软件开开发不同同于传统统的农业业生产,人人多不见见得力量量大。如如果给落落后于计计划的项项目增添添新手,可可能会更更加延误误项目。因因为:(11)新手手会产生生很多新新的错误误,使项项目混乱乱。(22)老手手向新手手解释工工作以及及交流思思想都要要花费时时间,使使实际开开发时间间更少。所所以科学学的项目目计划很很重要,不不在乎计计划能提提前多少少,重在在恰如其其分。如如果用“大跃进进”的方式式奔向共共产主义义,只会会产生倒倒退的后后果。观念之四:既然需需求分析析很困难难,不管管三七二二

22、十一先先把软件件做了再再说,反反正软件件是灵活活的,随随时可以以修改。客观情况:对需求求把握得得越准确确,软件件的修修修补补就就越少。有有些需求求在一开开始时很很难确定定,在开开发过程程中要不不断地加加以改正正。软件件修改越越早代价价越少,修修改越晚晚代价越越大,就就跟治病病一样道道理。1.4 一一些有争争议的观观念本节探讨一一些有争争议的观观念,目目的不在在于得出出“正确”或“错误”的评断断,而在在于争议议会激发发更多理理性的思思考。争议之一:如果软软件运行行较慢,是是换一台台更快的的计算机机,还是是设计一一种更快快的算法法?作者观点:如果开开发软件件的目的的是为了了学习或或是研究究,那么么

23、应该设设计一种种更快的的算法。如如果该软软件已经经用于商商业,则则需谨慎慎考虑:若换一一台更快快的计算算机能解解决问题题,则是是最快的的解决方方案。改改进算法法虽然可可以从根根本上提提高软件件的运行行速度,但但可能引引入错误误以及延延误进程程。技术术狂毫无无疑问会会选择后后者,因因为他们们觉得放放弃任何何可以优优化的机机会就等等于犯罪罪。类似的争议议还有:是买现现成的程程序,还还是彻底底自己开开发?技技术人员员和商业业人士常常常会有有不同的的选择。争议之二:有最好好的软件件工程方方法,最最好的编编程语言言吗?作者观点:在软件件领域永永远没有有最好的的,只有有更好的的。能解解决问题题的都是是好方

24、法法或是好好语言。程程序员在在最初学学习Baasicc、Foortrran、 Passcall、C、CC+等等语言时时会感觉觉一个比比一个好好,不免免有喜新新厌旧之之举。而而如今的的Vissuall Baasic、DDelpphi、VVisuual C+、Jaava等等语言各各有所长长,真的的难分优优劣。开开发人员员应该根根据客观观条件,选选择自己己熟悉的的方法和和语言,才才能保证证合格的的质量与与生产率率。程序设计是是自由与与快乐的的事情,不不要发誓誓忠于某某某主义义而自寻寻烦恼。争议之三:编程时时是否应应该多使使用技巧巧?作者观点:就软件件开发而而言,技技巧的优优点在于于能另辟辟蹊径地地解

25、决一一些问题题,缺点点是技巧巧并不为为人熟知知。若在在程序中中用太多多的技巧巧,可能能会留下下隐患,别别人也难难以理解解程序。鉴鉴于一个个局部的的优点对对整个系系统而言言是微不不足道的的,而一一个错误误则可能能是致命命的。作作者建议议用自然然的方式式编程,少少用技巧巧。狼三则的的故事告告诉我们们“失败的的技巧通通常是技技俩”。当我我们在编编程时无无法判断断是用了了技巧还还是用了了技俩,那那就少用用。卖卖油翁的的故事又又告诉我我们“熟能生生巧”,表明明技巧是是自然而而然产生生的,而而不是卖卖弄出来来的。卖卖油翁的的绝技是是可到中中央电视视台表演演的,而而他老人人家却谦谦虚地说说:“没啥没没啥,用

26、用熟了而而已”。争议之四:软件中中的错误误是否可可按严重重程度分分等级?作者观点:在定量量分析时时,可以以将错误误分等级级,以便便于管理理。微软软的一些些开发小小组将错错误分成成四个等等级 Cussumaano 19996,如如表1.1所示示。一级严重:错误导导致软件件崩溃。二级严重:错误导导致一个个特性不不能运行行并且没没有替代代方案。三级严重:错误导导致一个个特性不不能运行行但有替替代方案案。四级严重:错误是是表面化化的或是是微小的的。表1.1 错误误的四个个等级上述分类是是非常技技术性的的,并不不是普适适的。假假设某个个财务软软件有两两个错误误:错误误A使该该软件死死掉,错错误B导导致工

27、资资计算错错误。按按表1.1分类类,错误误A属一一级严重重,错误误B属二二级严重重。但事事实上BB要比AA严重。工工资算多多了或者者算少了了,将会会使老板板或员工工遭受经经济损失失。而错错误A只只使操作作员感到到厌烦,并并没有造造成经济济损失。另另一个示示例是操操作手册册写错,按按表1.1分类类则属四四级严重重,但这这种错误误可能导导致机毁毁人亡。开发人员应应该意识识到:所所有的错错误都是是严重的的,不存存在微不不足道的的错误。这这样才能能少犯错错误。1.5 小小 结软件工程学学科发展展到今天天,已经经有了很很多方法法和规范范,学之之不尽。本本章只在在宏观上上讨论了了软件工工程的一一些思想想,更具具体的内内容将在在后面的的章节论论述。无无论是什什么好方方法,贵贵在理解解与灵活活运用,而而不可当当成灵丹丹妙药,不不象“吃了脑脑黄金或或脑白金金,就能能使一亿亿人先聪聪明起来来”。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!