关于软件系统的一些问题总结:
一个软件都有哪些部分?
首先,我们说软件的时候意味着什么,一个软件是解决某一类的问题的,也就是软件解决是一个有确定范围的问题域的;
那么不同的问题,解法是不一样的,涉及的方面和技术也不一样,对涉及的方面和采用的技术的深度也是不一样的;
我们不说软件解决的问题,我们现在要说下软件涉及到的方面:
一:先说说存储
1.存储:包括内存,非内存(磁盘等等,表现形式在操作系统上抽象有文件形式等);
2.存储的转移:存储从一台机器到另外的一台机器,如何转移,为什么要转移;
3.交叉存储:内容有一部分存储在内存,有一部分存储在非内存,为什么这么做,怎么实现,策略是什么,效果怎样?
二:说说存储的内容
1.数据量:小数据量怎么存储,大数据量怎么存储?
2.编解码:数据如何编解码,为什么要编解码?
3.大数据量:涉及到备份(备份是一大块,备份的方式,备份的思路等等),恢复,分片(数据分布倾斜的问题),一致性,事务性等等
三:说说计算
1.单机计算:单核,多核,多进程,多线程,并行,并发,为什么要这么做,这么做真的一定效果好吗?或者说怎么做才能更合理,更有效?
2.多机计算:分布式,非分布式,有什么区别?怎么实现?
四:说说网络
网络环境:牵涉局域网,互联网,网络协议(公用协议,私有(自定义)协议),网络问题的诊断,基于网络不可靠的设计思想和理念,网络模型(分布式,P2P,集中式等等)
总结:软件就是将问题进行拆分,映射到计算机的计算,存储,网络,然后这三者之间进行协作,形成一个具备解决问题的系统;