欢迎来到天天文库
浏览记录
ID:33582831
大小:1.82 MB
页数:49页
时间:2019-02-27
《1-1 软件工程概论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件工程软件工程第一章软件工程概论1-1软件工程概论初佃辉2014年11月20日1-1软件工程概论主要内容1软件的基本概念2软件工程产生的历史根源3软件工程的基本概念软件工程1软件1-1软件工程概论一个例子移山公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。二柱立马就想到写一个小程序来做这件事。这个事情可以用很多语言或者工具来实现:–C/C++,C#,UnixShell,Emacs,Javascript,Perl,Python,…程序员用自己最擅长的工具,很短的时间就可以搞定。from《现代软
2、件工程讲义》1-1软件工程概论一个例子老师看了作业之后,对二柱赞许有加。别的老师闻讯,问二柱能否扩大他的影响力,编个软件给二年级到四年级都用,多了一些小小的要求:–题目避免重复–可定制(数量/打印方式)–可以控制下列参数:•是否有乘除法、是否有括号•数值范围、加减有无负数•除法有无余数、是否支持分数(真分数,假分数,…)•是否支持小数(精确到多少位)、打印中每行的间隔可调整小同学兴高采烈地拿着需求回来了,跟老爸说:“老师明天就想要!”from《现代软件工程讲义》1-1软件工程概论一个例子假设二柱熬夜做出了这个软件的一个初始版本
3、,交给老师了。过几天老师又问,能否把这个程序放到学校的网站去,再多一点点要求,支持二元一次方程,能开根号,并且让所有人可以通过网页订制各种类型的四则运算作业。给自己儿子用的:小程序规模越来越大,需求越来越复杂;给全校学生用的:软件难度越来越大,所需的时间越来越长,放在网站上的:服务出错的概率也越来越大。from《现代软件工程讲义》1-1软件工程概论什么是“软件”?软件(Software):一组对象或项目所形成的一个“配置”,由程序、文档和数据等部分构成。–程序(program):可被计算机硬件理解并执行的一组指令,提供期望
4、的功能和性能;–数据(datastructure):程序能正常操纵信息的数据结构;–文档(document):与程序开发、维护和使用有关的图文材料程序(Program)=软件(Software)?独唱-->小合唱-->合唱-->万人大合唱
5、
6、
7、简单程序较复杂程序软件1-1软件工程概论软件的四大特征复杂性(complexity)–软件要解决的现实问题通常很复杂,数据、状态、逻辑关系的可能组合导致了软件本身的复杂性;–软件无法以“制造”的方式被生产,只能采用手工开发方式,这是一种人为、抽象化的智能活动(智力密集型),与人的水平密切相
8、关,人类思维的不确定性导致了开发过程的复杂性;不可见性(invisibility)–尚未完成的软件是看不见的,无法像产品一样充分呈现其结构,使得人们在沟通上面临极大的困难,难以精确的刻画和度量。1-1软件工程概论软件的四大特征易变性(changeability)–软件所应用的环境由人群、法规、硬件设备、应用领域等因素汇集而成,而这些因素皆会频繁快速的变化。一致性(conformity)–各子系统的接口必须协同一致,而随着时间和环境的演变,要维持这样的一致性通常十分困难。1-1软件工程概论软件为何需要不断的变化?“变化”是永恒
9、的主题:–软件必须不断的变化以适应新的计算环境或新技术的发故展;故修改夭折实际–障软件必须通过不断的功能增强以磨损障实现新的业务需求;–率软件必须通过扩展以与其他软件系统进行率互操作;–软件必须被不断的重构以使其生命周期得以延续;理想时间时间时间硬件故障曲线软件故障曲线软件不会磨损和老化,但维护困难1-1软件工程概论软件为何需要不断的变化?遗留系统(Legacysystem):仍在使用中的软件系统,可满足客户需求,但很难以“优雅的”方式对其进行演变以适应新需求或新环境;60%的软件维护费用用于向遗留系统增加新功能,17%用来修正
10、遗留系统中的bug。1-1软件工程概论软件为何无法被“制造”?土木工程师:–当一个土木工程师去修建一座跨河大桥来连接河两边的道路时,工程师会非常清楚的知道道路跨河的精确地理坐标位置。行驶的车辆在数年里也不会发生重大的改变。桥梁工程师只需要按照之前已经被上千次的验证过的建筑工艺把河两边的路连接到一起。软件工程师:–对于软件系统,因为技术或业务发生了变化,在建设过程中(所有需求和设计完成后),需求需要做重大修改的情况并不罕见。如果把这种情况放到修桥的事情上,相当于当桥的地基打好后,再把桥的搭建位置移动。1-1软件工程概论软件为何无法
11、被“制造”?软件工程领域的很多“奇特”现象:–程序员的“夜猫子”习惯;–结对编程;–持续交付;–…1-1软件工程概论软件的分类系统软件从存在形式上:–操作系统–嵌入式软件/单机软件/分–编译器布式软件–数据库/DBMS–移动终端
此文档下载收益归作者所有