登陆注册
8724600000003

第3章 软件工程概述(1)

当明确了要去实现一个软件时,就必须知道究竟应该怎样实现这个软件,至少应该弄明白下列问题:

①这个软件值得开发吗?现有的技术水平能实现用户需要的软件吗?

②怎样与客户沟通从而知道客户要求什么?又如何描述已知的要求?

③怎样才能将用户用文字描述的系统转换成最终的软件?

④要用到数据库吗?若要,数据库又怎么设计呢?

⑤使用哪一种开发工具?使用Windows风格的界面,还是Web风格的界面?

⑥与合作伙伴怎样进行分工合作?

⑦软件整个开发过程应该是什么样的?

只有在真正地解决了诸如此类的这些问题后,才能进入开发过程,也只有这样,才有可能实现预期的软件。而这些在软件开发之前和软件开发过程中摆在设计人员面前的问题,就是软件工程需要解决的问题。

本章重点介绍一些软件工程的基本概念,帮助同学们整理出软件工程的总体知识框架,理清学习软件开发的思路。

1.1软件工程的基本概念

当人们第一次听说软件工程(Software Engineering)时,第一个联想到的可能是建筑工程、水利工程等等其他类型的工程。再进一步推理,软件工程应该与建筑工程等有相似之处,因为都含有“工程”二字,但它们必定也有不同之处,因为软件工程突出了“软件”而非其他。所以要理解软件工程,必须先弄明白什么是“软件”(Software)。

1.1.1软件

何谓软件?虽然人们一直把这个名词挂在嘴边,但试图给其下一个全面而严格的定义绝非易事。本书不将笔墨纠缠于概念的面面俱到的学究式阐述上,而是在博采众家之长的基础上稍加筛选,但求以点盖面,起到梳理概念,引导入门的作用。所以,对于软件的定义,只想纠正一个错误——软件就是程序。“软件就是程序”是错误的,软件是程序和实现这些程序所需要的所有文档的集合。

程序仅仅是软件的一部分,软件更为重要的部分是人们刚开始做软件时最不愿意做的文档。这些文档包括可行性分析文档、需求分析文档、设计文档、测试报告、用户手册、培训计划、软件实施方案、项目管理文档等所有为了实现这个软件所需要的文档的集合。

1.1.2软件工程的定义

20世纪70年代,随着计算机应用的日益普及,软件系统日益复杂,日益庞大,这时出现了软件的高成本投入与低质量回报之间的尖锐矛盾,此现象被称为“软件危机”。

为了解决这对日益尖锐的矛盾,人们尝试将传统工业工程上的一些系统分析、设计方法应用于软件开发的过程之中,以期待在预期的时间内以低成本的投入完成较高质量的软件开发。此尝试促成了软件工程的诞生。

IEEE对软件工程给出了如下定义:①The application of a systematic,disciplined,quantifiable approach to the development,operation,and maintenance of software:that is,the application of engineering to software.②The study of approaches as in。

这一定义突出了软件工程作为工程的特点,也突出了软件工程的本质特征——软件的工程化。

1.1.3软件工程的目标

从IEEE给出的软件工程的定义中,可以看出软件工程最终要实现的目标是:在预期的时间内,以较低成本的投入完成较高质量的软件。在目标中,有3个最为重要的因素:时间,成本,质量。可以从以下几个角度来衡量软件的质量。

1.可维护性(Maintainability)

软件的维护是指在软件交付使用的过程中,对软件做出的修正、完善和适应性修改。软件的可维护性就是指软件在维护方面的性能,一般而言包括软件的可读性(Readability);软件的可修改性(Modifiability)和软件的可测试性(Testability)。软件的可读性用来衡量软件是否容易理解。软件的可修改性用来衡量软件是否容易修改。软件的可测试性用来衡量软件是否容易测试。

软件的维护是延长软件生命周期,降低软件开发成本的关键。因此软件的可维护性是一个非常重要的指标,近年在软件投资中的比例也有日益上升的趋势。

2.可靠性(Reliability)

软件的可靠性,通常包括软件的正确性(Correctness)和软件的健壮性(Robustness)两个方面。软件的正确性是指软件系统自身没有错误,能够在预期环境下完成预期功能。软件的健壮性则是从相反的角度进行衡量,描述软件,处理异常情况的能力。软件的正确性和健壮性是同一个问题的两个方面,它们相互补充,共同构成了软件的可靠性。

3.可理解性(Understandability)

软件的可理解性是指软件的简明性和清晰性。这里的简明清晰涉及程序、文档及最终实现的软件系统的界面。

4.性能(Performance)

软件的性能包括运行该软件时所需要的时间和空间;软件的响应时间(ResponseTime)和软件的吞吐率(Throughoutput)。软件系统的响应时间是指从客户发起请求到软件系统对客户的请求作出响应的时间。软件系统的吞吐率是指单位时间内软件系统执行的作业数。

5.可扩展性(Extensibility)

软件的可扩展性是指软件为了适应用户需求的变化从而不断扩展的能力。可扩展的软件系统应该尽可能的模块化,以保证新添加的功能模块对已有的软件系统不会带来负面影响。

同时可扩展的软件系统必须具有较高的可适应性,以方便替换已经存在的模块。

6.可伸缩性(Scalability)

可伸缩性是指软件系统能够适应系统不断发展的能力。可伸缩的系统能够将系统未来的发展考虑在内,可以适应企业不断发展的需要,以及数据量和系统使用量不断增大的情况。

7.安全性(Security)

软件的安全性主要用来描述软件在受到有意或无意的攻击时,或者在出现一些技术故障的情况下,仍然能保持正常运行的能力。

随着软件工程的发展,软件质量的评价越加丰富,内容不断充实。近年来讨论较多的还包括软件的可复用性(Reusability),用以描述软件的可重用能力;软件的互操作性(Interoperability),用以描述子软件系统在大系统环境下的可集成、可嵌入的能力;软件的可移植性(Portability),用以描述软件与其环境之间的相互独立性;软件的多相性(Heterogeneity),用以描述软件在跨平台,多种开发语言,多个开发环境下的构造能力。

1.2软件工程的知识体系结构

现代软件工程作为一门学科,有着极为丰富的内容,它包括软件开发技术和软件工程管理两大部分内容,同时为了实现这两者的自动化,还包括软件自动工具的研究。

1.2.1软件开发技术

按照软件生命周期模型,软件开发技术的研究主要包括软件需求分析、软件设计、软件构造、软件测试与软件维护。

1.软件需求分析(Software Requirements Analysis)

软件需求分析是软件工程中最为重要的活动之一。这一阶段的最主要任务是理解和表达用户的需求,也就是说要明确用户希望软件系统实现的功能,并将需求分析的结果以一定的形式表达出来。

对软件需求的主要研究工作是:软件需求的诱导(Requirements Elicitation)(其中包括需求的捕获(Capture)、发现(Discovery)和获取(Acquisition)),还有需求的分析(Analysis),验证(Validation),以及需求的描述或表达,同时还包括需求变更管理,以及需求工程的过程定义与管理。

2.软件设计(Software Design)

如同建造房屋一样,在施工之前,需要将要建造的房屋用建筑工程的符号表示出来,这一过程就是设计过程。软件设计与之类似,它完成了要构建的软件系统有意义的工程上的表示。设计阶段的主要内容包括软件架构设计、数据设计、接口设计、系统行为及其控制设计。设计过程是需求分析与软件构造的衔接,需求分析阶段产生的分析文档是设计的主要依据。

3.软件构造(Software Construction)

软件构造,实质上就是软件分析的物理实现,换句话说,就是通过编码(coding)和调试(debugging)实现软件系统。显然,编码是软件构造最为重要的内容,但并非唯一内容,现代软件工程的软件构造内容是相当丰富的。例如,设计模式(Design Pattern)的使用,公共运行库(Runtime CommonLibrary)的设计,GUI设计与功能实现的分离,自动化软件创建(Automation Constructing),SQL92.XML等外部标准的使用,等等,这些内容都是软件构造研究的内容。

4.软件测试(Software Testing)

软件测试是软件质量保证的一个重要途径,测试的目的在于发现软件系统中的错误与缺陷。软件的测试可以在不同级别进行,可以是单元测试(Unit Testing),集成测试(Integration Testing),也可以是系统测试(System Testing)。对于测试,一个错误的观点是:测试开始于编码结束之后。事实上,在需求分析结束之后,就应该着手编制测试计划,测试从此时就已经开始进行了。

5.软件维护(Software Maintenance)

当软件经过用户验收测试(Acceptance Testing)之后,软件就进入了维护期。所谓软件维护,就是指软件在提交用户后,为了改正错误,提高软件性能,适应环境的变化而作出的修改。以纠正错误为主要内容的软件维护是修改性维护,以提高性能为主要内容的软件维护是完善性维护,为了适应环境而进行的软件维护就是适应性维护。软件维护对于延长软件生命周期,降低总的软件投资成本,提高投资回报率(Returnof Investment)都有着极为重要的价值。因而近年来逐渐成为软件工程研究的一个热点。特别是对于遗产系统(Legacy System)的再工程(Reengineering),以及反向工程(Reverse Engineering)的研究越加引起人们的关注。

1.2.2软件工程管理

软件工程另一个主要的研究方面是软件工程管理技术。需要特别提出的是:软件工程在20世纪90年代后获得突飞猛进的发展。这与现代管理科学与技术的发展是分不开的。管理科学中很多最新的理念在现代软件工程中得到了充分的实践。例如,全面质量管理(TotalQuality Management),过程管理(Process Management),系统科学中对复杂性、非线性、不确定性的研究,扁平化的组织结构,企业流程再造(Business Process Reengineering),企业资源规划(Enterprise Resource Planning),供应链管理(Supply Chain Management),物流管理(Logistics Management),客户关系管理(Customer Relation Management)等。

1.软件工程管理(Software Engineering Management)

软件工程最终能否得到顺利实施,一个最为关键的因素是管理。而且近几年来,这一因素对软件工程成败的影响程度愈加强烈。

众所周知,管理是企业人、财、物之外的第四类资源。不论是哪种类型的管理,基本上都包含四类主要职能:计划、组织、领导、控制。软件工程管理(Software Engineering Management)类同,包括组织管理(Organization Management)(也就是软件组织自身的管理)和项目管理(Project Management)。

同类推荐
  • 数字博物馆研究与实践:2009

    数字博物馆研究与实践:2009

    本书汇集了“2009年北京数字博物馆研讨会”与会代表提交的60余篇论文和演讲报告、应用案例,分为数字博物馆(科技馆)发展研究探讨、数字博物馆(科技馆)多样性发展模式、数字技术在博物馆(科技馆)展陈中的应用、数字博物馆(科技馆)建设实践、数字博物馆(科技馆)实现技术和数字博物馆调研报告等六个部分。本书内容囊括了对数字博物馆(科技馆)建设宏观层面的全局思考以及微观层面的具体实践。在宏观层面,介绍了数字博物馆(科技馆)在国内外的发展现状与趋势,通过剖析典型案例,探讨数字博物馆(科技馆)建设的意义、目标、作用、建设原则、要素、特征及目前建设工作中存在的现实问题与对策。
  • 高校校园网管理与网上引导工作研究

    高校校园网管理与网上引导工作研究

    在当今的信息化潮流之下,我们不可否认互联网的出现,绝不仅仅是传送手段的变化,更重要的是它代表着一种新的社会形态——网络社会的来临。互联网已经以一种前所未有的方式渗透到现代社会的各个层面和领域,成为现代社会前进和发展的动力和工具,它推动了社会经济、文化政治实现所谓的“数字化转变”。
  • 云计算和现代远程教育

    云计算和现代远程教育

    本书介绍了云计算知识、云计算的特性、云计算技术、云计算中的访问云、云计算中的云存储、云计算在远程教育中的应用等内容。
  • 一本书读懂24种互联网思维

    一本书读懂24种互联网思维

    本书整合的改变世界的24种互联网思维,让我们对互联网新思维的认识变得立体、系统起来;同时深入浅出、通俗易懂地从技术和实践分析互联网新思维与传统思维相比较的优势,医治互联网焦虑症。未来属于既能深刻理解传统商业的本质,同时又具备互联网思维的人。
  • 研究性学习丛书-电脑知识

    研究性学习丛书-电脑知识

    本书对电脑知识有一个全面详细的介绍,会对读者的电脑知识进行提高。
热门推荐
  • 龙骑战机

    龙骑战机

    中国最好看、最热血、最精彩、最激情的现代空战小说,空战流的至强篇章,仅此一家,别无分号!来自异界的龙骑士长剑直指被战斗机主宰的苍穹,化身为构装空中战斗兵器的巨龙振翅翱翔,两个世界的空骑士追寻属于自己的荣耀,共同描绘出30000英尺高空的那份浪漫!苍穹之下,谁与争锋?
  • 兵王空降

    兵王空降

    诙谐幽默的校园生活,用拳头征服世界,遇强则强,遇战则战,兵王空降。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 纪元之风游记

    纪元之风游记

    如果不能自由自在的活着,那跟囚犯有什么区别?我从没想过改变任何人,也没想过拯救任何国家。更不想成为圣人,或是名垂青史的伟人,我只想认认真真做我自己---林风游历人鱼国度留下的话。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 走进影视武侠

    走进影视武侠

    庞观从没想过,人死后竟然会有这么离奇的事情,走进前生看过的影视,体会不一样的武林风貌。武林中都是过客,每个人又都是自己的主角。
  • 医品战婿

    医品战婿

    (2020最火爆女婿爽文!)(百万追更!承诺不断更!)(全本免费阅读)他!身为一代传奇兵王,却因为报恩,而选择回归都市,做了一个上门女婿!三年的入赘生活,人人都以为他软弱可欺,终有一日,他要让那平日里高高在上,看不起他的人,都低下头颅,尊他为王!
  • 盛世狂女,废柴七少爷

    盛世狂女,废柴七少爷

    她是天狗帝国三大世家顾家的废物七少爷,也是现世鼎鼎有名的江洋大盗。废物七少当街对四皇子表白被拒,成为整个帝国的笑柄,更被顾家遗弃,成为最有名的草包。当她重生,当她变成她。一切都不同了。什么,四皇子后悔了,什么,顾家后悔了,对不起,本少不吃回头草!
  • 不死氏

    不死氏

    待我强大,许你天下!2020年最火最爽最热血的玄幻!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!