第一章
软件是软件工程的研究对象,也是软件工程的产品形态与客观存在
工程是理论和知识应用与理论科学,其目的是经济科学的解决实际问题。
一.软件的定义
软件=程序+数据+文档
程序是计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
数据是使得程序能够适当的操作信息的数据结构。
文档是描述程序的研制过程,方法和使用的图文资料。
二.软件的本质特性
软件具有复杂性,一致性,可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。
复杂性是指软件本身是十分复杂的,如Linux内核有630个函数,存在1814个函数调用。
一致性是指
1.软件不能独立存在,需要依附于一定的环境(如硬件,网络以及其他软件)
2.软件必须遵从人为惯例并适应已有的技术和系统。
3软件需要随接口的不同而改变,随时间的推移而变化,而这些变化是不同人设计的结果。
可变性是指
1.人们总是认为软件是容易修改的,但忽视了修改所带来的副作用。
2.不断的修改最终导致软件的退化,从而结束其生命周期。
不可见性是指
1.软件是一种“看不见,摸不着”的逻辑实体,不是具有空间的形体特征。
2.开发人员可以直接看到程序代码,但是源代码并不是软件本身。
3.软件是以机器代码的形式运行,但是开发人员无法看到源代码是如何执行的。
三.软件开发面临的挑战
四.什么是软件工程
软件工程是,(1)将系统性,规范化,可定量的方法应用于软件的开发,运行和维护,即工程化应用到软件上,(2)对(1)中所述方法的研究。
五.软件工程的三个基本要素
六.软件工程过程
软件开发过程是一系列的软件开发活动
七.软件工程方法
八.软件工程工具
九.软件开发的基本策略
(1)软件复用,是指利用将已有的软件制品,直接组装或者合理修改成新的软件系统,从而提高开发效率和产品质量,降低维护成本。
(2)分而治之,是指通过对问题的研究分析,将一个复杂问题分解成可以理解并能够处理的若干小问题,然后再逐个解决。
(3)逐步演进,软件更像一个活着的植物,其生长是一个逐步有序的过程。软件开发应该遵循软件的客观规律,不断进行迭代式增量开发,最终交付符合客户价值的产品。
(4)优化折中,软件工程师应当把优化当作一种责任,不断的改进和提升软件质量,但是优化不是一个多目标的最优决策,在不可能使所有目标都得到优化时,需要进行折中实现整体最优。
十.软件工程学科发展
十一.什么是好的软件
高质量的软件产品:
(1)做了用户想要它做的事情
(2)正确有效地使用计算机资源
(3)易于用户学习和使用
(4)设计良好,代码良好且易于测试和维护
十二.产品质量维度
分为性能,特色,可靠性,符合性,耐久性,可服务性,审美和感知
ISO9126设计模型
十三.业内人士谈软件工程
标准的设计模式
统一思想
科学的管理方法
基本素质:
1.极强的代码阅读、理解和书写代码的能力
2.极强的责任心和敬畏心
3.有职业道德,对代码品质和秘密的保证
4.与他人的协同能力
第二章
一.软件工程编程
软件编程时一个复杂迭代的过程,不仅仅是编写代码,应该包括代码审查,单元测试,代码优化,集成调试等一系列工作。