软件设计与实现(software design implementation and debug)
第一章
第一章精概:
软件=程序+软件工程
程序=数据结构+算法
软件=程序+软件工程
软件企业=软件+商业模式
软件架构(software architecture)
源代码管理(source code control)
配置管理(software configuration management)
质量保证(quality assurance)
软件测试(test)
需求分析(requirement analysis)
程序理解(program comprehension)
软件维护(software maintenance)
服务运营(service operation)
软件的生命周期(software lift cycle slc)
软件项目的管理(project management)
用户体验(user experience)
国际化和本地化(globalization & localization)
软件开发的不同阶段:
1.玩具阶段
2.业余爱好阶段
3.探索阶段
4.成熟的产业阶段
软件的分类方法:
1.系统软件
2.应用软件
3.恶意软件
软件的特殊性:
1.复杂性(complexity)
2.不可见性(invisiblity)
3.易变性(changeablity)
4.服从性(conformity)
5.非连续性(discontinuity)
计算机科学偏理论领域:
• 计算机理论(theoretical computing)
• 信息和编码理论(information and coding theory)
• 算法和数据结构(algorithm and data structure)
• 形式化方法(formal methods)
• 程序设计语言(programming language)
计算机科学偏实践理论:
• 计算机体系结构
• 并行计算机和分布式系统
• 实时系统和嵌入式系统
• 操作系统
• 计算机网络
• 科学计算
• 安全和密码学
• 人工智能
• 计算机图形学
• 计算机视觉
• 多媒体
• 数据库和大规模数据处理
• 万维网
• 自然语言处理和语音
• 人机交互
• 软件工程
好软件的目标:(不断消灭bug)
1.用户满意度
用户在使用时发现了软件的很多问题,影响了 用户使用软件的效率
2.可靠性
某个软件经常会崩溃,某个操作系统会时不时死机,某个网站会时不时登不上
3.软件流程的质量
软件团队和开发流程的问题太多,导致团队成员无法互相协作,按时交付软件
4.可维护性
软件太难维护,修复一个问题,另一个又出来了,如果没有足够的资金和时间来维护软件,甚至建议推倒重写
练习与讨论
提出问题:
1.现实的开发过程中往往会比理论中多出很多问题,比如需要如何能够将需求细化到任务,然后在细化到设计,最终使得能够在规定的时间内有条不紊的完成目标?
2.既有用又完美的软件不可能存在,那么在开发过程中这个“足够好到可以发布”的程度应该怎么判断呢?
3.在两人合作一起写代码,俩人写代码能力不同,行为习惯不同,思维方式不同,出现分歧时应该怎么处理呢?
4.在第三章软件工程师成长的内容中,谈到了软件工程师与普通程序员的对比,如何才能成为一名合格的软件工程师?
5.若用户需求和优化后的软件起冲突时,要按照用户的需求做还是优化的软件?
软件分类:
社交软件:qq ,微信(与人沟通交流,方便获取信息)
学习软件:不背单词,网易有道词典,有道口语,一点英语,百度网盘(主要用来学习英语,练习口语,增长自己的知识)
消费软件:淘宝,京东,唯品会,支付宝,网易考拉,12306,美团,小红书(方便自己购买商品)
娱乐软件:爱奇艺,腾讯视频,快手,抖音,知乎,微博,网易云音乐(主要用来休闲时间放松自己,了解更多课外的知识,拓宽自己的眼界)
办公软件:wps(方便编辑文档)
音频软件:Pics art ,剪映(修剪视频图片)
运动软件:运动世界校园(锻炼身体)
出行软件:高德地图(方便出行)