软件工程开发。
第一章软件工程基本观念。
1.1软件工程的目标与常用模型。
软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。对开发人员而言,如果非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。
软件工程的主要环节如图1所示,软件开发过程一般包括可行性与需求分析、系统设计、程序设计、测试和维护。
图1软件工程环节。
常见的软件工程模型有:线性模型,渐增式模型,螺旋模型,快速原型模型,形式化描述模型等等。虽然线性模型比较简单,太理想化,但是每一个非线性的模型都能转化为一系列简单的线性模式,因此在其他模式中需要灵活运用线性模式。
1.2软件开发的基本策略。
1.2.1复用。
在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中。我们将具有一定集成度并可以重复使用的软件组成单元称为软构件。
软件复用可以表述为:直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。这样可以提高生产率和质量。
图2应用软构件产生应用软件。
1.2.2分而治之。
我们可以把复杂的问题分解成n个简单的问题,再逐个寻求解决方法。但是最终的目的是要保证单个的简单问题可以通过程序实现,组装后能够使原本复杂的问题得到合理解决。
1.2.3优化——折衷。
优化是用以优化软件的各个质量因素,但不能面面俱到,应折衷,其目标就是协调各个质量因素,实现整体质量最优。而不能盲目得拆东墙,补西墙。
第二章软件开发过程各个环节介绍。
2.1可行性分析与需求分析。
2.1.1可行性分析要求。
可行性分析是从经济、技术、市场与政策及人员方面分析这个项目做还是不做。
2.1.2需求分析要求。
当确定做之后,我们就要与客户交流,进行需求分析,但由于客户表达不清、需求自身经常变动或分析人员理解有误,都会导致需求分析困难。因此,有必要通过请教行家或者分析同类型产品,来做进一步的分析。
2.2系统设计。
2.2.1体系结构设计。
体系结构就如同人体中的骨架,是软件系统中最本质的东西。其中层次结构和客户机/服务器结构是两种非常通用的软件体系结构。每个系统均有一个体系结构,我们在没有必要地情况下不可以修改。
2.2.2模块设计。
模块设计过程不仅要考虑本身提供什么样的功能,还要考虑该模块与其他模块如何交流。常用以下三个特征进行模块优劣的评价:“信息隐藏”、“内聚与耦合”和“封闭—开放性”。
模块的信息隐藏可以通过接口设计来实现,执行模块的功能或与模块交流信息必须且只须通过调用公有接口来实现。
内聚是模块内部各成分之间的关联度,而耦合是模块间的依赖程度,在模块设计时应做到强内聚,弱耦合。
2.2.3数据结构与算法设计。
在算法设计时我们主要要从时间和空间的角度考虑软件的效率。时间与空间的优化也应该采取折中的方式。
2.2.4用户界面设计。
人机界面设计应从合适性、风格和广义美上着手。做到吸引眼球和谐,才能吸引客户。
2.3程序设计。
本节主要讲述了编程的一些小注意事项,需养成良好的编程规范。1、命名约定。
1)宏定义用大写字母加下划线表示,如max_length;
2)函数用大写字母开头的单词组合而成,如setname, getname;(3)指针变量加前缀p,如*pnode;(4)bool变量加前缀b,如bflag;(5)int变量加前缀i,如iwidth;(6)float变量加前缀f,如fwidth;(7)double变量加前缀d,如dwidth;(8)字符串变量加前缀str,如strname;(9)枚举变量加前缀e,如edrawmode;
10)类的成员变量加前缀m_,如m_strname, m_iwidth;
2、使用断言:使用assert函数可以追踪断点,检查程序是否有出错。
3、new、delete与指针:在c中是malloc与free,在申请内存后,要记得释放。要防止指针指向已释放的内存。
4、使用const:const可定义有类型的常量,可确保此常量不被改变。5、不要将bool值true和false对应于1和0进行编程。
2.4测试与改错。
2.4.1测试。
测试的目的在于发现尽可能多的错误,而不是为了说明程序中没有错误。测试可分为α测试和β测试。α测试是公司内部人员进行的测试,其中开发人员要做白盒测试,就是已知各模块的结构进行单步调试,而测试小组要做黑盒测试,主要是看模块接口是否正确,输出结果是否正确。
β测试是请用户过来试用,发现在试用**现的一些问题,提交测试报告。
2.4.2改错。
在发现错误之后需要及时大胆得修改,但是修改之后还要重新测试,以免引入新的错误。
2.5维护与再生。
2.5.1维护。
软件维护划分为主要的三类:纠错性维护、适应性维护和完善性维护。
1)纠错性维护。由于前期的测试不可能找出所有潜在的错误,用户在使用软件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护。
2)适应性维护。由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护。
3)完善性维护。在软件的正常使用过程中,用户还会不断提出新的需求。为了满足用户新的需求而增加软件功能的活动称为完善性维护。
2.5.2再生。
再生工程主要出于如下愿望:(1)在商业上要提高产品的竞争力;(2)在技术上要提高产品的质量。再生工程与维护的共同之处是没有抛弃原有的软件。
再生工程主要有三种类型:重构、逆向工程和前向工程。重构是再原程序上修改,不改变体系结构。
而逆向工程是从其他同类产品中提取有用信息,再加以修改。前向工程也称预防性维护,则会根据需求对软件进行预防功能的完善,减少未知错误发生。
第三章小结。
看完《软件工程思想》之后的一些感受。
1、在软件编程的时候不要过分依赖一些开发书籍,要在尊重原程序的基础上,添加自己的。
想法,而不是生搬硬套。
2、需求分析很重要,要先明确需求,然后要在设计的时候一边编程一边根据需求的改变而。
改变,越早修改,代价越小。
3、编程的时候越简洁越好,这样便于后人阅读理解修改,不要过多得使用编程中鲜为人知。
的技巧,适当添加解释性的注释。
4、在编程中,错误无大小,要正视自己的不足,吸取经验教训,及时改正。
5、做项目的是团队而非个人,在整个团队中,每个人都必须将自己的工作认真完成好,引。
用一个公式:成功=意愿*方法*行动,如果每个人每一步只及格的话,最后就只完成了21.6%,而团队里面每个人相乘,所做的工作就更少了,因此每个人都必须付出100%的激情与努力。
6、将自己经常犯的编程错误记录下来,制成**贴在计算机旁边。
10款流程图软件
pert chart expert pertchartexpert 是一个非常强大易用的制作网路图和流程图的专业工具!在某些方面比ms project有过之而无不及。cadecade是一款小巧,功能强大的流程图和网络拓扑图等各种专业的业务流程图制软件!并提供各种图形模板库。diagram desig...
软件开发计划 V1
软件开发计划模板。前言。本计划的制定是为了xx项目进行管理提供依据,是项目进行跟踪与监控的基础。目录。第一章概述 1 1.1 项目概述 1 1.2 术语定义 1 第二章项目人员 2 第三章提交客户的工作产品 3 第四章项目策划 4 4.1 软件生命周期模型定义 4 4.2 项目定义软件过程 4 4....
软件开发合同范本 详细
xx公司综合办公系统开发服务协议。甲方 委托人 xx公司。乙方 受托人 xx公司。协议签订地址。经充分沟通和友好协商,甲方委托乙方开发xx公司综合办公系统 以下简称综合办公系统 并由乙方为甲方提供该系统的实施和使用中的相关技术支持服务。为了规范双方在此项目上的权利和义务,在 中华人民共和国合同法 的...
软件开发工程师职位要求
各位同学大家好!上周二我们进行了第一次的就业班会,主要是通过大家的自我介绍,使老师可以对大家有一个初步的认识,对大家的性格 语言表达 技术能力等有基本的了解。后期进行推荐工作时将更有针对性。通过与大家的沟通,感觉同学们都很优秀,希望我们一起努力可以在找工作上也表现优秀o o 作为大家的就业老师想与大...
标准的软件开发过程
测试计划初稿 这里所说的测试,主要是指整个程序系统的组装测试和确认测试。本文件的编制是为了提供一个对该软件的测试计划,包括对每项测试活动的内容 进度安排 设计考虑 测试数据的整理方法及评价准则。4.实现阶段。模块开发卷宗 开始编写 模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一组密...
软件开发项目奖金发放制度
软件开发项目奖金计算及发放制度。试用稿 第一条综述。为调动公司软件研发人员的工作积极性,提高软件的开发质量和开发效率,促进研发人员深入市场,及时跟踪软件产品的使用情况,在公司现有绩效考评制度基础上制定此制度。第二条管理办法。公司软件项目实行目标管理。第三条执行范围。1 本制度适用于从事软件项目开发的...
房地产开发拿地流程图
土地获得流程。办事处 前期部 投资发展部全国房地产市场研究。设计部。财务部。总经理公司综合实力与状况。董事长。被拓展城市房地产市场基础研究。拓展城市土地信息及时收集。制定土地拓展战略。公司现金流 公司发展战略。城市整体状况研究房产市场基础研究土地市场基础研究。地块信息初步筛选。进入城市确定。土地拓展...
外贸流程图
业务流程。一 汇付流程图。1 电汇业务流程。汇款人填写电汇申请书,并交付汇款款项和相关费用给汇出行,取得电汇回执。汇出行根据电汇申请书的内容,以电讯方式向汇入行发出支付委托书。汇入行收到支付委托书后核对密押,确认其真实性后,通知收款人取款并向收款人解付汇款。汇入行将付讫借记通知书寄汇出行,通知解付完...