您在设计要编写的软件时遵循的工作流程是什么? [英] What is the workflow you follow to design the software you're about to write?

查看:24
本文介绍了您在设计要编写的软件时遵循的工作流程是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开始开发一个相当复杂的软件.这是一个个人项目,但我还是为此付出了很多努力.现在,我习惯于从事其他人的解决方案/设计或以非常可控的方式发展的项目.

I've started working on a fairly complicated software. It is for a personal project, but nonetheless I'm putting a lot of effort into it. Now, I'm used to work on other people's solutions / designs or on projects that grow in a very controllable way.

这一次,我开始两次编写基础代码,但很快发现自己陷入了困境.所以我休息了一下,决定在编写一行代码之前写下完整的解决方案.我所做的(按顺序)是:

This time, I started twice to code the basics and I rapidly found myself stuck. So i took a rest and decided to write down the complete solution before coding a single line. What I've done (in order) is:

  1. 以 CLI 命令的形式编写用例(这是一个命令行应用程序)
  2. 写一些帮助
  3. 为各个部分设计类、数据文件的结构和功能工作流.

现在,我在这整个部分的速度非常慢.我已经建立了一个个人 wiki 并用它来编写那些规范,但我清楚地感觉到我缺乏经验和清晰的方法.

Now, I'm going really slow in this whole part. I've set up a personal wiki and I'm using it to write those specifications, but i clearly feel my lack of experience and a clear methodology.

我知道软件设计是一个非常复杂的主题,并且已经有很多关于它的书籍,但我希望您能分享您的经验/建议/方法论.

I'm aware that software design is a very complex subject and that a pletora of books have been written about it, but I'd love you to share your experience / advices / methodology.

在处理个人中型项目时,您在开始编码之前会指定什么?怎么样?

When working on personal, middle-sized projects, what do you specify before starting to code? How?

提前致谢

推荐答案

在从事个人中型项目时,您在开始编码之前会指定什么?

When working on personal, middle-sized projects, what do you specify before starting to code?

我指定了功能规范:

  • 我担心这可能太容易了,如果我刚开始编码(这是如何"),忘记为什么"和什么"我想编码(对于相当复杂"的软件,几个月来或可能需要数年的时间来开发).
  • 我还想或多或少地了解我将要开发的范围":为了大致评估(到一个数量级):
    • 会有多大
    • 我能不能完成它
    • 是否值得入手
    • 可以先开发哪个子集

    为了风险管理,我将补充说,我想开发的一些内容暗示使用了一些我不熟悉的软件;为了尽量减少与此相关的风险,我还做了一些一次性原型设计.

    For the sake of risk management I'll add that some of what I wanted to develop implied using some software that I wasn't familiar with; to minimize the risk associated with that, I also did a little throw-away prototyping.

    怎么样?

    我用笔在纸上概述了一个功能规范.我写的有些是高层次的(一个业务级的愿景"文档),有些是低层次的,更像是设计(一些 UI 细节).有时我会停下来思考如何组织它,但后来又继续推理,认为每个页面对每个主题或多或少都具有凝聚力,我以后可以对如何组织页面感到困惑(可能很像你的维基).

    I outlined a functional specification, using pen a paper. Some of what I wrote was high-level (a business-level "vision" document), and some was lower-level, more like design (some of the UI details). Sometimes I stopped and puzzled about how to organize it, but then went on, reasoning that each page is more-or-less cohesive about each topic, and that I can puzzle later about how to organize the pages (much like your wiki, perhaps).

    我事先指定也未指定软件架构:

    • 我从一个基本架构(一些小组件)开始开发,然后添加代码;并且,当我添加代码时,如果任何组件变得太大和太复杂,那么我会将其细分为几个较小的组件......这是一个进化过程......正如它在SystemanticsA工作的复杂系统总是从工作的简单系统演变而来.
    • 我没有记录架构;或者更确切地说,架构的唯一文档是代码本身:例如,源代码在源目录、命名空间和 DLL 中的排列方式.

    对于现在的架构,我确实有理论依据,但我没有记录这些原因:

    I do have a theoretical justification for the architecture as it is now, but I haven't documented these reasons:

    • 我是唯一的开发者
    • 实际架构由代码记录
    • 架构的原因在我的脑海中,并且可以通过源代码中的命名约定和各种组件的依赖关系[重新]发现

    如果(仅当)我不是唯一的开发人员,那么我可能认为值得记录架构及其基本原理.

    If (only if) I weren't the sole developer, then I might think it worth documenting the architecture and its rationale.

    我上面所说的关于软件架构的内容也适用于软件处理的数据.

    What I said above about the architecture of the software is also true of the data which the software processes.

    至于测试,我写了一点然后测试;或者编写一个测试,然后编写将通过该测试的功能.我不是在做大爆炸集成",即几个月的写作没有任何测试.

    As for testing, I code a bit and then test it; or write a test and then code the functionality which will pass that test. I'm not doing "big bang integration", i.e. months of writing without any testing.

    我的过程中(或缺少的东西)最大的弱点之一是预先估计工作量,然后根据估计值跟踪实施......这是这种个人' 项目流程与我为其他人做的商业项目的付费项目.不过,我怀疑这是否好:如果估算是商业上的最佳实践,那么也许我应该"在个人项目中也这样做.

    One of the biggest weaknesses in (or thing missing from) my process is estimating effort in advance, and then tracking implementation against the estimate ... this is one of the differences between this 'personal' project process versus a paid project that I'd do for someone else commercially. I doubt whether this is good though: if estimation is a best practice commercially, then perhaps I 'should' be doing it too on a personal project.

    这篇关于您在设计要编写的软件时遵循的工作流程是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆