标签:服务 之间 部门 asc 依赖关系 算法 不能 参数 软件架构
初读邹欣老师的《构建之法》,却发现并没有像其它大多数软件工程教材一样偏重理论知识,而是大量引用实例,将实践与理论相结合,一改原本的空洞、乏味,反而更多的是趣味性。
通过对于第一章的自我学习,总结了一些知识点:
1.软件=程序+软件工程
程序=数据结构+算法
程序,就是指的源程序,是可执行代码。软件构建,构建成机器能懂的可执行代码,要有合理的软件架构,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,链接参数等等。
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程的核心部分:项目管理、源代码管理、软件需求分析、软件设计、软件构建管理、软件测试和软件维护(服务运营)等。
软件企业=软件+商业模式
程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。
2.软件开发的不同阶段
玩具阶段:写程序联系数据结构/算法
业余爱好阶段:用JavaScript等写写网站
探索阶段:专研新技术,应用新技术在软件行业创新
成熟的产业阶段:开发软件/操作系统
3.软件的特殊性(软件开发难题)
复杂性:软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。
不可见性:软件工程师能够直接看见源代码,但是源代码不是软件本身。商业软件出现了错误,工程师可以看到程序在出错的一瞬间留下的一些痕迹(错误代号、大致的目标代码位置、错误信息),但是几乎无法完整重现到底程序出现了什么问题。
易变性:软件看上去很容易修改,修改软件比修改硬件容易多了。人们自然地期待软件能在下面出现的两种情况下“改变”,一个是让软件做新的事情;另一个让软件适应新的硬件。但是与此同时,正确地修改软件是一件很困难的事情。
服从性:软件不能独立存在,它总是要运行在硬件上面,它要服从系统中其他组成部门的要求,它还要服从用户的要求,行业系统的要求。
非连续性:人们能够比较容易地理解连续的系统:增加输入,就能看到相应输出的增加。但是许多软件系统却没有这样的特性,有时输入上很小的变化,会引起输出上极大的变化。
4.软件工程的目标:用户满意度高、可靠性强、软件流程的质量好、可维护性强
标签:服务 之间 部门 asc 依赖关系 算法 不能 参数 软件架构
原文地址:http://www.cnblogs.com/FvU1093-softwareEngineering/p/6684434.html