软件系统开发设计的基本流程

news2024/11/24 20:13:28

一、前言

  经过年的工程实践软件系统开发的流程演变有很多种,但是最基本的还是瀑布模型。但是由于近几年演变了很多种模型,现在很多公司的研发流程并不遵循瀑布模型。主要原因是无法满足市场竞争的需求。比如在哪某个节日需要敏捷上线活动等这样的场景。没法走完瀑布模型功能就要上线等。但是不管怎样,瀑布模型还是最经典的软件开发设计上线流程。

二、瀑布模型 

以下是瀑布模型的主要阶段:

  1. 需求分析:这是项目的起始阶段,主要目标是收集和分析用户的需求,并生成需求规格说明书。
  2. 设计:在需求明确后,进入设计阶段。设计师会制定系统架构,确定系统各部分的交互方式,并生成设计文档。
  3. 编码:在设计阶段完成后,开发人员根据设计文档开始编写代码。
  4. 测试:编码完成后,测试团队会对系统进行测试,包括单元测试、集成测试和系统测试等,以确保软件的质量。
  5. 维护:在软件发布后,可能还需要进行维护,包括修复错误、更新功能和优化性能等。

瀑布模型的主要优点包括:

  • 易于管理:每个阶段都有明确的目标和输出,便于项目管理。
  • 文档完备:各阶段都有详细的文档记录,方便后期维护。

三、软件的设计7个基本原则

  1. 单一职责原则(Single Responsibility Principle, SRP)
    • 一个类应该只有一个引起变化的原因。
    • 意味着一个类应该只有一个职责,当这个职责发生变化时,只需要修改这个类。
  2. 开放封闭原则(Open-Closed Principle, OCP)
    • 软件实体(类、模块、函数等)应该是可扩展的,但是不可修改的。
    • 当需求变化时,通过扩展现有代码而不是修改现有代码来满足新的需求。
  3. 里氏替换原则(Liskov Substitution Principle, LSP)
    • 子类型必须能够替换掉它们的父类型。
    • 也就是说,程序中的对象应该能够使用其父类型来替换,而不会产生错误或异常。
  4. 接口隔离原则(Interface Segregation Principle, ISP)
    • 使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
    • 这意味着应该细化接口,避免客户端依赖不需要的接口方法。
  5. 依赖倒置原则(Dependency Inversion Principle, DIP)
    • 要依赖于抽象,不要依赖于具体。
    • 高层模块不应该依赖于低层模块,它们都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
  6. 迪米特法则(Law of Demeter, LoD)
    • 一个软件实体应当尽可能少地与其他实体发生相互作用。
    • 也就是说,一个对象应该对其他对象保持最少的了解,降低类之间的耦合度。
  7. 组合优于继承原则(Favor Composition over Inheritance)
    • 尽量使用对象组合,而不是通过继承来达到复用的目的。
    • 组合通常使得系统更加灵活,因为它允许在运行时改变对象的行为,而继承则是一种静态关系,在编译时就确定了。

四、软件架构与设计

1、Web软件架构

Web软件架构主要关注如何组织和设计系统的各个组件,以便它们能够协同工作并实现所需的功能。常见的Web架构模式包括C/S(客户端/服务器)和B/S(浏览器/服务器)两种。C/S架构中,服务器通常采用高性能的计算机设备,而客户端需要安装专用的客户端软件。B/S架构则更为灵活,客户端只需安装一个浏览器,即可通过浏览器与Web服务器进行数据交互。

此外,MVC(模型-视图-控制器)是一种在Web开发中广泛使用的软件设计典范和模式。MVC将业务逻辑、数据和界面显示分离,使得在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。在MVC架构中,模型负责处理数据和业务逻辑,视图负责与用户进行交互并展示数据,控制器则负责接收视图传输的数据或向视图传输数据,并调用模型处理数据。

2、Web软件设计原则

在设计Web软件时,需要遵循一系列原则以确保系统的成功实施和高效运行。这些原则包括:

  1. 实用性原则:每个系统都应具备实用性,能够解决用户的实际问题。
  2. 可靠性原则:系统应可靠运行,出现异常时应有人性化的异常信息帮助用户理解原因或采取适当的应对方案。
  3. 可维护性和可管理性原则:Web系统应有一个完善的管理机制,以确保系统的可维护性和可管理性。
  4. 安全性原则:Web应用应采取严格的安全措施,如使用五层安全体系来确保网络层、系统、用户、用户程序和数据的安全性。

3、组件与交互

在Web软件设计中,组件和交互的设计至关重要。基于组件和事件驱动的架构是一种常见的Web设计方法,它将程序分成多个组件,每个组件都可以触发事件并调用特定的事件处理器来处理。这种设计方式使得开发人员能够更高效地组织和管理代码,并降低代码的耦合度。

此外,Web页面和文件也是Web软件设计中的重要组成部分。通过合理地组织和设计Web页面和文件结构,可以提高网站的可访问性和用户体验。

五、比了解的重点场景知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1531354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python网络爬虫实战教学——urllib的使用(1)

文章目录 专栏导读1、前言2、urllib的使用3、发送请求3.1 urlopen3.2 request 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》,本专栏针对…

支付宝小程序一次性订阅requestSubscribeMessage授权和操作详解

一、授权 — requestSubscribeMessage my.requestSubscribeMessage({entityIds: [xxxx],success: (res) > {console.log("success回调", res)},fail: res > {console.log(fail回调, res)} })success 回调函数 behavior String 用户订阅操作结果 — subscribe …

【译】矢量数据库 101 - 什么是矢量数据库?

原文地址:Vector Database 101 - What is a Vector Database? 1. 简介 大家好——欢迎回到 Milvus 教程。在上一教程中,我们快速浏览了每天产生的日益增长的数据量。然后,我们介绍了如何将这些数据分成结构化/半结构化数据和非结构化数据&…

【python】Matplotlib库安装教程

1.你要有python(如果没装可以看这篇文章文章安装) python及pycharm安装教程(2024超详细) 2.更新pip(此步可跳过) win R ;输入cmd(就是打开命令提示符) 打开后&#x…

【Linux】传输层协议:TCP/UDP

目录 netstat pidof UDP协议 TCP协议 TCP协议段格式 TCP协议的相关机制 确认应答(ACK)机制 超时重传机制 连接管理机制 服务端状态转换 客户端状态转化 流量控制 流量控制常见问题: 滑动窗口 拥塞控制 延迟应答 面向字节流…

electron-builder 打包问题,下载慢解决方案

目录 问题说明设置下载源 ?解决方案思路下载Electron下载winCodeSign下载nsis下载nsis-resources 总结 问题说明 项目使用了Electron,在第一次打包时会遇见下载慢,导致打包进度几乎停滞不前,甚至可能直接报错 其实这是因为Electr…

UML学习体会

1. 水在前面 本来写作的水平就很一般,平时写的也少。最近看到一些文章说学习最好的方式是输出,刚好又重温了一遍UML方面的基础,所以想记录点学习心得。而且说实话这玩意平时基本不怎么用(偶尔倒是看看别人的成果)&…

智能客服知识库如何搭建比较方便?教程奉上!

随着科技的进步,人工智能已深入到我们日常生活的各个角落。在客服行业里,智能客服知识库的出现,不仅极大地减轻了客服人员的工作负担,还提升了用户的服务体验。那么,怎样才能建立一个方便和实用的智能客服知识库呢&…

Acwing.167 木棒(回溯)

题目 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序,帮助乔治计算木棒…

【马斯克开源GROK-1模型】意味着什么?

目录 1.激动人心的消息 Grok-1 根据 Apache License 2.0 开放源代码 题外话-介绍JAX框架 2.grok-1模型参数介绍 3.推理grok-1模型需要多大显存? 4.grok-1开源意味着什么? 5.最后,让我们一同期待开源grok-1模型的训练代码!…

电脑内存取证

目录 电脑内存文件与volatility工具获取电脑用户名获取程序最后一次运行的时间总结 电脑内存文件与volatility工具 这个文件就是内存文件 提取内存信息,我们一般采用volatility工具进行提取,具体如何安装和使用,直接去网上搜索就可以了 获取…

力扣Lc18--- 168. Excel表列名称(java版)-2024年3月19日

1.题目描述 2.知识点 因为是输入字符 然后显示数字。 就类似2进制10代表2&#xff0c;110代表4&#xff0c;用某进制次幂的方式返回最后的数字结果。 3.代码实现 class Solution {public int titleToNumber(String columnTitle) {int sum0;for(int i0;i<columnTitle.len…

大数据架构技术选型

OLAP数据库选型对比&#xff1a; AnalyticDB(阿里&#xff09;、Hologres&#xff08;阿里&#xff09;、Doris、StarRocks、ClickHouse、Hbase AnalyticDB MySQL 技术架构 Adb是融合数据库、大数据技术于一体的云原生企业级数据仓库服务、支持高吞吐的数据实时增删改查低延时…

企业合规视角下的恒大地产财务造假案深度剖析

当幕布被拉开&#xff0c;真相暴露在聚光灯下&#xff0c;近日中国房地产市场的巨头恒大地产因财务造假被中国证监会严厉处罚&#xff0c;引起了公众和市场的强烈震动。这份重量级的罚单&#xff0c;不仅以41.75亿元的天价罚款单给恒大地产记下了沉重的一笔&#xff0c;更是将包…

数据仓库相关概述

数据仓库概述 数据仓库概念 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据&#xff0c;借助数据仓库的分析能力&#xff0c;企业可从数据中获得宝贵的信息进而改进决策。同时&#xff0c;随着时间的推移&#xff0c;数据仓…

IDEA Git恢复DropCommit删除的提交

刚刚Dorp commit了&#xff0c;本地代码也被删除了&#xff0c;如何恢复呢&#xff0c; 从项目中登录git&#xff0c;找到刚刚的commit代码&#xff0c;如下所示&#xff1a;输入命令git reflog 复制代码&#xff0c;到idea中&#xff0c;打开GIt&#xff0c;找到RESET HEAD, …

【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!

代码和示例数据下载 前言 在这篇文章中&#xff0c;我们将会可视化 《七版方剂学》 的药材的关系&#xff0c;我们将使用Python制作节点和边的数据&#xff0c;然后在Gephi中绘制出方剂的网络图。 Gephi是一个专门用于构建网络图的工具&#xff0c;只要你能提供节点和边的数…

Android StateLayout状态页

文章目录 Android StateLayout状态页概述源码使用源码下载 Android StateLayout状态页 概述 StateLayout&#xff08;状态页&#xff09;包含&#xff1a;加载中页面&#xff0c;错误页面&#xff0c;空页面&#xff0c;内含状态默认页面&#xff0c;支持自定义页面。 源码 …

如何在SpringCloud2023中快速集成注册中心

你好&#xff0c;这里是codetrend专栏“SpringCloud2023实战”。欢迎点击关注查看往期文章。 注册中心在前文提到有很多选型&#xff0c;在这里以Spring Cloud Zookeeper为例说明注册中心的集成和使用。 选择Spring Cloud Zookeeper作为注册中心原因如下&#xff1a; 依赖更少…

水电能源智能化监控系统

水电能源智能化监控系统是利用现代信息技术&#xff0c;对水电站的运行状态、设备性能、环境参数等进行实时监测和管理的一种智能化系统。随着我国水电能源事业的快速发展&#xff0c;水电能源智能化监控系统在水电能源行业中的应用越来越广泛&#xff0c;为我国水电能源事业的…