软件工程
Aussie_
这个作者很懒,什么都没留下…
展开
-
软件工程小组作业--网上书店平台项目
一、项目成员二、需求规格说明书三、需求分析四、设计活动五、运行界面1、主界面在主界面上,导航栏有登录和注册两个功能,搜索栏实现模糊搜索。图书展示板块,显示在售图书的简要信息,点击图书图片可以跳转到相应图书的详细信息界面。页脚处可选页,也可直接选择,实现页面跳转。2、注册界面注册时,会检测登陆名是否已注册,密码的二次确认核对,Email格式核对,验证码核对。注册完成之后则直接跳转到登陆界面,进行用户登录。3、登陆界原创 2020-12-28 20:16:28 · 508 阅读 · 0 评论 -
应用架构需要分类思维
模块(Module)、组件(Component)、包(Package),这些概念对于我们技术同学并不陌生,但并不是所有人都能理解其要义。深入理解之后,我才发现,其背后的深意是分类思维。而这种分类也是应用架构的核心所在,通过不同粒度、不同层次的分类,把复杂的软件系统实现控制在可以被理解、被维护的程度。否则,对于动则上100万行代码的软件,人类根本没有办法理解和维护。试想一个极端情况,假如没有这些概念协助我们分类,我们把所有业务逻辑都写在一个类里面,会是什么样的结果呢?我们很多的“非人类”系统,正是因为没有原创 2020-11-30 23:16:52 · 105 阅读 · 0 评论 -
依赖倒转原则--学习笔记
依赖倒置原则定义1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。2、抽象不应该依赖于细节,细节应该依赖于抽象。首先,这个原则听起来很像是“针对接口编程,不针对现实编程”,不是吗?的确很相似,然而这里更强调“抽象”。依赖倒置原则,究竟倒置在哪里?在依赖倒置原则中的倒置指的是和一般OO设计的思考方式完全相反。举个例子,现在你需要实现一个比萨店,你第一件想到的事情是什么?我想到的是一个比萨店,里面有很多具体的比萨,如:芝士比萨、素食比萨、海鲜比萨……比萨店是上层模块,比萨是下层模块,如果把比萨原创 2020-11-27 22:39:32 · 202 阅读 · 0 评论 -
开闭原则--学习笔记
开闭原则 软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的。比如:一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将客户端和服务端分开。公共部分抽象出来。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决办法:当软件需要变化时,尽量通过扩展软原创 2020-11-26 23:51:26 · 160 阅读 · 0 评论 -
接口隔离原则--学习笔记
接口隔离原则(ISP)设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象。设想该模块由一个类实现,我们可以把系统抽象成一个接口。但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的一些子模块,那么系统就会强迫我们实现接口中的所有方法,并且清寒要编写一些哑方法。这样的接口被称为肚胖接口或者被污染的接口,使用这样的接口将会给系统引入一些不当的行为,这些不当的行为可能导致不正确的结果,也可能导入资源浪费。1.定义接口隔离原则(Interface Segregatio原创 2020-11-25 23:16:28 · 129 阅读 · 0 评论 -
里氏替换原则--学习笔记
定义里氏替换原则的定义是:所有引用基类的地方必须能透明化地使用其子类的对象。里氏替换原则针对的问题有一个功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。里氏替换原则的解决方案当使用继承的时候,遵循里氏替换原则。类B继承类A的时候,除了添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。继承包含这样一层含义:父类中原创 2020-11-24 19:27:59 · 362 阅读 · 0 评论 -
单一职责原则--学习笔记
单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式与实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones的著作中的内聚性原则发展出的。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责原创 2020-11-22 22:34:28 · 111 阅读 · 0 评论 -
结构化程序设计--学习笔记
结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易原则结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。结构化程序设计的原则可表示为:程序=(算法)+(数据结构)。算法是一个独立的整体,数据结构(包含数据类型与数据)也是一个独立的整体。两者分开设计,.原创 2020-11-01 18:18:09 · 665 阅读 · 0 评论 -
体系结构框架MVC与MVP的区别
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。...原创 2020-10-20 23:21:02 · 263 阅读 · 0 评论 -
软件工程方法论对我们软件开发的用处
软件工程方法论采用软件工程方法论开发软件的时候,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的物理细节。每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束:如果检查通不原创 2020-10-23 22:45:25 · 416 阅读 · 1 评论 -
形式化方法
形式化方法英文的名称是formal methods。在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。例如,把全称肯定命题,用符号形式化为“SAP”;把联言命题、假言命题分别形式化为:“p∧q、“p→q”。又例如:一个具体的假言联言推理“如果这种金属是纯铝,那原创 2020-10-21 23:24:10 · 495 阅读 · 0 评论 -
Why Software Development Methodologies Suck
围绕软件开发实践和方法论,总有很多教条式的口水仗。阶段式(phase-gate)方法能够有效管理软件开发过程的风险,还是说只是风险管理中的花哨噱 头?TDD真的能够促生出高品质软件?结对编程是代码评审的有效替代抑或只是增加了商议沟通代价?我想说,虽然缺乏证据判断这些论调的谬处,但有两条常用的法则能够帮助我们选择好的实践,同时,提升我们所提供软件的价值:划小开发周期以及提升反馈效率。Michael Feathers给出了以下观点:我认为,我们最终还是得倚重开发者的能力,这才是个更重要的考量因素,而非选择哪原创 2020-10-28 21:42:05 · 151 阅读 · 0 评论 -
《软件工程》这门课程,你是否有这样的疑问
软件工程是不是教会不怎么会写程序的人开发软件呢?Software engineering , of course, presents itself as another worthy cause , but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accep原创 2020-10-27 23:26:14 · 931 阅读 · 0 评论