复杂软件系统的挑战
1. 实现用户的功能
2. 简单灵活的界面
3. 不同用户使用系统会出现不同的界面(不同的权限)
4. 一个系统被多个团队开发,如何集成开发的模块(必须要有一个标准的开发流程)
5. 代码的可扩展性(系统不断的完善,不断的添加功能)
6. 可能需要团队在不同的地方开发
7. 测试覆盖率比较难
可能产生的危机
1. 超出预算
2. 需要重做
3. 没有按期交付产品
4. 用户的功能没有能实现
解决复杂系统的问题的方法:将复杂系统分成更小的组件(To divide the system into smaller components)
1. 算法的方法或者结构的方法(Algorithmic Approach or Structured Approach)
In algorithmic design approach,modules are divided into sub-modules till a basic unit is reached.This is the approach learnt in Structured Programming course .
2. 数据驱动的方法(Data-Driven Approach)
In the Data-Driven Approach,a set of inputs are processed to given a set of outputs.This is useful in information based systems like database systems .
3. 面向对象的方法(Objected Oriented Approach)
In the Object Oriented design approach ,the focus is on the objects that compose the problem domain,their behavior and communication between the objects.