第一讲 介绍
工程这个词,对应的是科学
工程是可以重复的,而科学通常不强求重复
软件工程:其中遇到的模型,怎么做,方法
一、基本信息
1.模块化的设计 UML diagrams图
2.涵盖软件整个生命周期,和软件开发的整个阶段应该怎么去做。
3.以团队为主的(team-based),需要实际动手操作,需要一系列编程。
4.不会教任何一门特殊的编程语言
5.团队开发一个相对逻辑复杂(编程、业务)的系统,需要多方面(性能和资源的小号如并发量、存储量)的权衡。
二、参考书目
三、介绍
Software is complex=事情由很多部分组成,能够互相关联在一起。
(而complicated 模糊的,即便分析也分析不出来,不能解释。)
防止产生温水煮青蛙的问题:
1.小问题尽量考虑清楚,从而不至于导致大的缺陷
2.负面反馈是一种积累,刚开始看上去问题不大,到后面就会太严重以至于不能解决
3.Design smells,technical debt,software rot
四、软件工程的角色
第一法则:必须能够学习问题的领域(先要知道客户需求)
Customer:需要一个计算机系统去实现一些业务目标,通过用户交互(与环境,或与一个特殊方式)
软工的任务:理解system-to-be如何与环境或user交互,从而能够达成用户需求,并且设计software-to-be
解决问题的策略:分而治之:
1.识别系统上的逻辑组成部分(逻辑划分),其能解决问题的一块
2.掌握问题最快的方式:需要领域专家(谁懂怎么去用,目前是怎么做的)
3.产生:领域问题的模型(或问题域模型)
五、软件工程的蓝图
1.准确的理解软件的问题和解决方案
(1)不幸的是,很多人不是艺术家画不出来,所以我们用一些工具,UML symbols
六、第二法则
第二法则:以人为本
Nurture培养滋养