一、前言
经过年的工程实践软件系统开发的流程演变有很多种,但是最基本的还是瀑布模型。但是由于近几年演变了很多种模型,现在很多公司的研发流程并不遵循瀑布模型。主要原因是无法满足市场竞争的需求。比如在哪某个节日需要敏捷上线活动等这样的场景。没法走完瀑布模型功能就要上线等。但是不管怎样,瀑布模型还是最经典的软件开发设计上线流程。
二、瀑布模型
以下是瀑布模型的主要阶段:
- 需求分析:这是项目的起始阶段,主要目标是收集和分析用户的需求,并生成需求规格说明书。
- 设计:在需求明确后,进入设计阶段。设计师会制定系统架构,确定系统各部分的交互方式,并生成设计文档。
- 编码:在设计阶段完成后,开发人员根据设计文档开始编写代码。
- 测试:编码完成后,测试团队会对系统进行测试,包括单元测试、集成测试和系统测试等,以确保软件的质量。
- 维护:在软件发布后,可能还需要进行维护,包括修复错误、更新功能和优化性能等。
瀑布模型的主要优点包括:
- 易于管理:每个阶段都有明确的目标和输出,便于项目管理。
- 文档完备:各阶段都有详细的文档记录,方便后期维护。
三、软件的设计7个基本原则
- 单一职责原则(Single Responsibility Principle, SRP):
- 一个类应该只有一个引起变化的原因。
- 意味着一个类应该只有一个职责,当这个职责发生变化时,只需要修改这个类。
- 开放封闭原则(Open-Closed Principle, OCP):
- 软件实体(类、模块、函数等)应该是可扩展的,但是不可修改的。
- 当需求变化时,通过扩展现有代码而不是修改现有代码来满足新的需求。
- 里氏替换原则(Liskov Substitution Principle, LSP):
- 子类型必须能够替换掉它们的父类型。
- 也就是说,程序中的对象应该能够使用其父类型来替换,而不会产生错误或异常。
- 接口隔离原则(Interface Segregation Principle, ISP):
- 使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
- 这意味着应该细化接口,避免客户端依赖不需要的接口方法。
- 依赖倒置原则(Dependency Inversion Principle, DIP):
- 要依赖于抽象,不要依赖于具体。
- 高层模块不应该依赖于低层模块,它们都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
- 迪米特法则(Law of Demeter, LoD):
- 一个软件实体应当尽可能少地与其他实体发生相互作用。
- 也就是说,一个对象应该对其他对象保持最少的了解,降低类之间的耦合度。
- 组合优于继承原则(Favor Composition over Inheritance):
- 尽量使用对象组合,而不是通过继承来达到复用的目的。
- 组合通常使得系统更加灵活,因为它允许在运行时改变对象的行为,而继承则是一种静态关系,在编译时就确定了。
四、软件架构与设计
1、Web软件架构
Web软件架构主要关注如何组织和设计系统的各个组件,以便它们能够协同工作并实现所需的功能。常见的Web架构模式包括C/S(客户端/服务器)和B/S(浏览器/服务器)两种。C/S架构中,服务器通常采用高性能的计算机设备,而客户端需要安装专用的客户端软件。B/S架构则更为灵活,客户端只需安装一个浏览器,即可通过浏览器与Web服务器进行数据交互。
此外,MVC(模型-视图-控制器)是一种在Web开发中广泛使用的软件设计典范和模式。MVC将业务逻辑、数据和界面显示分离,使得在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。在MVC架构中,模型负责处理数据和业务逻辑,视图负责与用户进行交互并展示数据,控制器则负责接收视图传输的数据或向视图传输数据,并调用模型处理数据。
2、Web软件设计原则
在设计Web软件时,需要遵循一系列原则以确保系统的成功实施和高效运行。这些原则包括:
- 实用性原则:每个系统都应具备实用性,能够解决用户的实际问题。
- 可靠性原则:系统应可靠运行,出现异常时应有人性化的异常信息帮助用户理解原因或采取适当的应对方案。
- 可维护性和可管理性原则:Web系统应有一个完善的管理机制,以确保系统的可维护性和可管理性。
- 安全性原则:Web应用应采取严格的安全措施,如使用五层安全体系来确保网络层、系统、用户、用户程序和数据的安全性。
3、组件与交互
在Web软件设计中,组件和交互的设计至关重要。基于组件和事件驱动的架构是一种常见的Web设计方法,它将程序分成多个组件,每个组件都可以触发事件并调用特定的事件处理器来处理。这种设计方式使得开发人员能够更高效地组织和管理代码,并降低代码的耦合度。
此外,Web页面和文件也是Web软件设计中的重要组成部分。通过合理地组织和设计Web页面和文件结构,可以提高网站的可访问性和用户体验。
五、比了解的重点场景知识