作坊式的个体编程开发->大批量大规模软件系统的开发
系统化,规范化,可量化
软件开发=软件创作+软件生产
软件工程原则:抽象建模,模块化,软件重用,信息隐藏,关注点分离,分而治之,双向追踪,工具辅助
软件:文档,数据和程序的集合
瀑布模型:适用于需求易于定义,不易变动的软件系统,优点是一目了然,易理解掌握,应用和管理
增量模型:渐进快速交付,并行开发,提高效率
瀑布模型:提供系统性指导,与软件生命周期相一致,需求变化不大,较为明确,可预先定义的应用
原型模型:以原型为媒介指导用户的需求导出和评价,需求获取,导出和确认,需求难以表述清楚,不易导出和获取的应用
增量模型:快速交付和并行开发,软件详细设计,编码和测试的增量式完成,需求变化不大,较为明确,可预先定义的应用
迭代模型:多次迭代,每次仅针对部分明确软件需求,分多次迭代来开发软件,每次仅关注部分需求,需求变动大,难以一次性说清楚的应用
螺旋模型:继承迭代模型和原型模型,引入风险分析,软件计划制定和实施,软件风险管理,基于原型的迭代式开发,开发风险大,需求难以确定的应用
一种轻量级的软件开发方法
极限编程:要有勇气,快速开发并在必要时具有重新进行开发的信心
分布式版本管理思想:工作区,暂存区,本地版本库建立在开发人员自己的计算机之中,远程版本库建立在远程的中心服务器上
一个软件有多个软件开发分支
版本控制:是对计算机程序,文档,数据等的修改和管理,它是软件配置管理的重要组成部分
软件需求是软件的价值所在,是软件开发的基础和前提,是软件验收的标准和依据
类是对一组具有相同特征对象的抽象
消息传递是实现对象间通讯和协作的基本手段
继承:表示类与类之间的一般与特殊的关系
多态,操作的外部接口定义形式相同,但是内部实现方式不一样
聚合可以共享,组合不可共享
软件原型:直观的展示软件需求
软件原型作为需求工程师和用户之间的交流媒介,有助于直观的了解软件需求,激发用户投入到需求讨论和导出之中,因而是一项极为有效的需求获取和分析方法
群体化方法:集思广益
不断反复论证,找到适合软件解决的问题
软件的非功能需求变得越来越重要
后续还需要进一步精化和分析
用例图的构成:执行者,用例,边
描述初步的软件需求:自然语言,UML建模(用例图),软件原型