Shinkai005
2023/02/21阅读:13主题:极简黑
【ITECH】5012 第一节课
【ITECH】5012 第一节课.md
邮件
从邮件中写有用信息
-
第一周任务是 设置环境和github -
查看一下selfstudy材料 -
4个单独的实验室测验,1个小组作业,一个考试 -
尽量复习一遍python
moodle
开发和设计分布式web应用
第一讲-简介部分内容
老师把video分成了两部分
-
老师名字Simon Jumf和Hang dai -
课程基于python的Django框架设计和开发分布式应用 -
用到bootstrap htmlcss必须, 还要使用git和github -
分数占比442 -
40个人coursework;4*15mins lab quizzes -
1.27, 2.3, 3.3, 3.10 将开放24小时 -
groupwork 40% -
设计10% 2.16下午4.30pm -
presentation 5%, project app 25% -
个人考试 20%
-
-
个人考试和实验类似 -
It是被分配组, 如果有疑问直接发邮件. 然后遇到问题也发邮件.
每个老师都会说别给他们发邮件...但是最后都是邮件处理问题..
第一讲-正文(老师讲解)
-
两周在线, 第三周线下
-
期望的是 自学
-
web应用是什么? 实际是一种允许管理信息的系统,并且信息以某种方式分发
-
它管理层可以通过网络共享,查找和呈现信息.以分布式的方式通过网络工作
-
通常情况下,web应用有需要用户,地理上是分开的, 可以在一个位置托管这个webApp,然后分布式的托管在多个地方,让用户访问
-
理想状态下, web应用应该可以让用户及时访问.
-
最初的时候没有web应用的~只有一些静态网页
-
时间变化,出现一些交互甚至电子社区
-
后面这些应用开始转到移动端, 之后会出现一些特定的挑战
-
最初的html页面是手工制作~ 信息不一致
-
事务性意味着需要将数据存储到数据库
-
这也就开始将数据处理从互联网分离出来
-
基于工作流的web应用, 比如预订机票~ 在特定阶段做特定的事情
-
共享信息~ 比如维基百科,很多用户一起合作创建信息
-
移动端的特点是小的, 移动的,非视觉的设备还包括普遍于人群
为什么开发一个web应用很复杂
-
应用程序和网络应用的构建很复杂, 内容, 布局, 排版 -
用户和应用之间构建也很复杂,比如必须: 即时在线访问, 速度要够快;还需要永久可用 -
然后就是设备不同, 需要适配. -
开发是个复杂的过程, 需要不断的更新迭代 -
然后还需要使用一些新技术, 然后还要和老技术混合~一些技术实际上还在测试~ -
虽然一些框架已经开始使用但是并未完全普遍化~
比如flash
-
flash应用也可以算作web应用,但是如今已经消失了 -
研究flash如今已经没有意义,除非你在更新迭代flash版本的应用
在真正开发前做什么
-
构建蓝图(设计) -
需要把软件工程的原理运用到系统架构和信息架构里面
在这节课的剩余部分我们开始讨论如何设计一些东西使用一种更有原则和纪律性
的方式
-
这两个有什么区别,在我们开发web应用程序时候所关注的领域 -
我提到了系统和架构 他是以系统为核心的 -
当你设计系统图的时候你会产生大量web应用需要满足的规范和要求. -
你可能会做序列图来显示信息的流动 -
也可以关心数据库建模, 通过实体关系图来完成 -
还会看一些信息架构, 他更关注用户; (这个类似产品的Axure做的,不需要一点代码)
系统架构师和信息架构师都有很多事情要做~ 目的是为了与开发人员沟通
-
应用程序和组件如何配合在一起~ 这样就可以分离一些工作(团队合作需要~ 自己的话就不需要了.) -
某个组件负责什么? 谁来编码, 如何和其他组件连接.具体说明如何拼接组件~(纯纯软工...孙老师牛逼..) -
设计的图标还可以用来和客户沟通~ 展示如何交互, app的雏形(不一定完全按照) -
(有的人说自己工作不画图,因为项目太小了~ 换个公司,慢慢会丧失画图能力的)
图表很重要
-
通常 数据结构级别, 算法级别, 对象级, 组件级, 应用级别的图表~都不是同一个图表会有很多 -
应用越复杂, 团队中的图表就需要越详细~
非分层架构是什么样子的?
-
通常是一个单片程序就可以做所有的事情 -
需要支持用户界面, 以及用户界面管理~ 以及用户界面背后的算法和业务逻辑~ -
还需要操作信息~以及数据存储~
分层架构呢?
-
好处是什么? 可以多人开发~并行开发更快(其实看架构水平和文档规范...) -
而且可以把同样的数据层用在不同的处理层~ -
有时候他们可以很好的相互作用~但是有的时候还可以分开使用 -
所以层级之间需要明确的接口 -
应用层如何与数据层对话? 这通常是由网络协议和数据库连接软件处理的
信息检索系统的存在意义
-
比如有两层架构~ 一层用来数据管理一层用来处理别的 -
因为数据管理和其他的经常可以连接~ 所以分开有意义,(可以复用) -
你需要处理大量数据, 需要访问共享的数据存储库~就需要存储检索修改和安全~ -
这个时候就会出现~ 专业的数据库系统和信息检索系统. 不需要我们自己去做这些专门的事情了(专业的事情专业的人去做; 开发者就专注于应用层就行了) -
编写高效访问大量数据的代码太难了~ 这个时候要 分离关注点
所以使用数据库系统来处理数据. -
然后在应用层使用客户端应用和数据库交互.
这块真的牛....关注点分离是个很哲学的词汇...怪不得计算机很多词汇很帅, 全靠这些理论学者
静态页面(静态web应用)通常使用2层架构(双层架构)
-
超链接的html文件~ 每个html文件描述网站的其中一个页面~然后通过超文本将页面链接在一起. -
用户点击链接/进入url, 会发送一个请求到web服务器~ 确定下一个要加载的页面 -
web静态内容的客户端就是一种浏览器~发送url请求到web服务器,然后得到一个html响应
最初html文件包含如何正确的呈现所有信息
-
所以他包括内容和风格 -
现在如果页面很多~ 想要修改统一的样式就很麻烦~ -
(很麻烦通常意味着复杂和昂贵)所以解决办法是关注点分离
-
-
(懒得写了) 分离出了css和html两个文件
双架构缺陷
-
使用双层架构只能区分客户端进程~ 但是如何控制应用程序 逻辑 和用户界面, 然后直接区分服务器进程,提供准确数据 -
这样就不会加大客户端压力~(服务器一般比客户端牛~) -
我们有专门处理应用程序逻辑的用户界面进程的表示过程; 数据源流程, 从数据库获取数据; 控制业务逻辑的流程
如果你有一个盒子
-
这个盒子里的东西有的想要隐藏有的想要公开
这里可能有人有疑问要隐藏我为什么还要扔到网上
是因为权限~ 或者业务
-
这里就开始引出不同的组件如何组合在一起的 -
你可能有一个网络服务器, 一些日志文件~ 与应用程序服务器媒体服务器通讯~ 与静态媒体服务器通讯;还可能有其他的静态信息传入 -
这些可以在一个机器上拥有,但是也可以在不同的机器上~ 分布托管
为了实现这个(因为前文是我们自己想的思路, 浏览器不认啊~ )
-
这个时候就需要让客户和浏览器达成协议~需要让浏览器有外观和内容之间的关注点分离(会解析css和html)
负载均衡
-
主要有两种方式一种是通过域名服务器在解析url时候,他的根通过一个ip地址即路由发送到适当的机器 -
另一种是使用负载平衡服务器, 将这些请求分配给负载较小的可用机器.这是一种通知负载

分层架构好处?
-
因为关注点分离的缘故只需要关注特定图层 -
封装了特定的复杂性~ 使每层没那么复杂(...只是看起来...) -
封装的东西可以cv到更多机器上~ 有一个扩展性(复用性)
系统架构设计
-
分为自上而下和自下而上设计
-
高层次开始会有目标范围和责任
-
而且可以把一些决定推迟比如: 使用什么数据库? 可以先放一放到之后遇到了在决定
-
可以提高维护和重用
-
自下而上就是先开发一个组件,然后将组件结合在一起.
-
一层一层的实现子系统~讲这些子系统链接起来直到拥有一个完整的顶级系统.
个人开发更多自下而上
公司大项目一般是自上而下
全是软工内容啊..
这一部分是数据流语言(教画图)
...
关系数据库~ ER图部分
信息架构
-
信息架构与技术无关
-
更多的是如何安排信息~ 事物外观以及人们如何与之互动
-
ux设计.让开发人员更专注技术细节~ 信息架构师更多与客户打交道
-
更多是实用技术创造来满足客户的解决方案以及商业战略(这个
技术创造
用的是真好...) -
北极熊书讲的大多就是这个~信息架构师的圣经
-
信息架构师具有和系统架构师类似的图表~ 只是关注点不同~视角不同
-
可以罗列两边的需求矩阵~ 决定优先考虑哪些事情
-
URL通常是可推断的(骗子....我们学校官网那个....就奇葩)
-
不要有太多嵌套(你是不知道学校官网能嵌套多少层)
-
尽量使用静态URL(...行吧)
线框图~ (产品做的玩意) 低保真高保真原型
...就这吧 终于结束了
- END -作者介绍
Shinkai005
公众号:深海笔记Shinkai