代码之前的工作比较多,也比较广,需要的不仅仅是开发技能,还包括行业知识,分析能力,设计能力。以及更深远的商业预见能力,预见系统之上的商业前景,是否值得我们开发这么一个系统,以及系统的大方向,服务的客户群,需要达到的目标,盈利的点。
一旦上面的商业目标确定之后,就需要行业专家以及架构师的介入。这两者会配合工作,行业专家的主要职责是构建满足商业目标的业务模型,将商业目标分解为很多小的业务模型,梳理其中的业务流程。
架构师的主要职责是建立业务模型对应的软、硬件系统模型,验证业务模型的可行性,确定业务流程可以用系统来表达。其中哪些可以用系统实现,哪些需要人工辅助来实现,又或者哪些可能不合理,需要修改业务模型或者流程。
同时架构师还需要根据现有人员的知识结构进行技术选型。包括:使用那种平台?哪种语言?什么工具?模块如何划分?如何分层?层或者是模块之间如何交互?交互的标准是什么?需要那些基础类库?这些前期的工作,可以由架构师团队来做,或者是在架构师的指导下由高级程序员完成。
这时候开发人员也不是没有事情可做,应该在高级程序员的带领下,熟悉架构师确定的技术平台,以及语言特性。或者是进行一些技术的探索,对后面肯定会用到的技术难点进行一些积累,事先解决一些可能遇到的技术问题,做一些技术积累。也可以叫做热身。
架构师将系统划分为很多的子系统,做一些横向的划分。确定子系统之间的交互格式。
之后架构师会将架构的结果,技术选型方案交给CTO或者是高层去确定一下,确定使用哪种技术。CTO和高层根据成本来最终决定使用哪种技术方案。不过一般架构师给出的技术方案都会被通过,因为也是根据公司目前的技术掌握情况制定的方案,所以通过的可能性还是很大的。
待技术方案确定之后,架构师会将包括:系统架构图,划分好的子系统,确定好的子系统交互方式,基础类库这些东西交给不同的项目组。由项目组的leader带领项目组的高级程序员对于分配的模块进行分析,提出自己的异议。一般来说没有太大的异议,主要是因为拿到的模块已经分析的比较透彻了。一般就是一些理解上面的异议,也就是概念问题,理解概念有助于加快开发的进度,和进行开发进度的估算。
估算进度之后,上报项目经理开发进度,项目经理根据上报情况,衡量一些其他因素,经过几次的反复,最终确定一个开发的进度安排。
leader会根据人员和任务的情况,将任务分解为小任务,分配到合适的开发者手中。然后大家开始做详细设计,一边理解业务和模型,一边进行详细设计。整理用例,写用例的实现,也就是详细设计。leader会和高级程序员审核设计是否合理,以及用到技术是否合理。等这些都确定之后,形成文档之后,才进行开发。
当然了,如果应用TDD的话。就需要先写一些测试用例,还要进行测试用例的设计。
今天说到这里,不知道大家有什么意见,欢迎大家一起讨论。
分享到:
相关推荐
熟练使用STL可以提高代码效率,减少重复工作。 **7. GUI编程** 在VC中,使用MFC创建图形用户界面(GUI)是常见的任务。理解控件的属性和方法,以及如何响应用户交互,对于开发用户友好的应用程序至关重要。 **8. ...
总结来说,Mybatis-Plus代码生成器是Mybatis-Plus框架中的一个强大工具,它能够帮助开发者快速生成与数据库表相关的Java代码,从而减少重复劳动,提高开发效率。结合自定义模板功能,可以更好地适应各种项目需求,是...
U-Boot在项目开发中具有显著的优势,主要体现在它可以大大缩短项目的开发周期并减少工程师的工作量,特别是当涉及到不同硬件平台的引导加载需求时。 ##### 1.2 U-Boot在系统中的地位 在一个典型的嵌入式Linux系统...
2. **安装依赖**:在编译安装Kurento Media Server之前,需要先安装一系列依赖包。 ```bash echo "deb http://ubuntu.kurento.org trusty-dev kms6" | sudo tee /etc/apt/sources.list.d/kurento-dev.list wget ...
Vue CLI 3 是一个强大...总结起来,配置 ESLint 为 Vue CLI 3 项目提供了强大的代码检查能力,帮助开发者遵循统一的编码规范,减少潜在的错误,提升代码可读性和维护性。记得根据项目需求自定义规则,以达到最佳效果。
总结来说,本阶段主要涉及了JSP页面的动态化改造、代码复用、Servlet的优化、表单回显与错误处理等关键知识点,这些是构建一个功能完善的Web应用所必需的基础技术。通过这些优化,项目代码变得更加简洁高效,也更...
### 基于ASP.NET MVC 3的企业应用项目总结 #### 一、项目背景与概况 本项目是一次采用ASP.NET MVC 3框架构建的企业级应用程序的开发经历。项目历时约三个月,期间不仅实现了功能需求,还克服了诸多技术挑战。作为...
Lc.exe是ComponentOne Suite的一部分,用于处理License文件和资源文件的编译工作。出现这个错误可能是因为License文件损坏、配置不正确或其他技术问题引起的。 #### 解决方案 **1. 删除licenses.licx文件** - ...
总结来说,这个项目涵盖了ASP.Net Web应用程序开发的核心部分,包括自定义类加载、数据访问层的设计与实现、接口的使用以及通用业务逻辑的封装。通过这个项目,学习者可以提升.NET框架的使用技能,理解面向接口编程...
总结来说,"我之前工作的源代码"是一个丰富的学习资源,涵盖了从网页设计到服务器开发,再到数据库管理、版本控制、自动化部署和测试等多个层面的IT知识。通过深入研究这个压缩包,开发者不仅可以了解不同技术的实际...
总结,Java项目中的代码走查是提高软件质量的重要手段。通过使用“代码走查报告模板”,团队可以更有效地进行代码审查,及时发现和修复问题,同时促进团队合作和知识共享。在实际操作中,要注重规范化、客观性和沟通...
**正文** cpp-check是一款强大的静态代码分析工具,主要用于C++编程语言。它的主要目标是帮助开发者在编译之前发现潜在的...通过集成到日常开发工作流,开发者可以持续优化代码,减少bug,提高软件的稳定性和可靠性。
在本项目中,由于之前的课程中我们改变了DOM节点的获取和加载方式,博客首页的原有功能不再正常工作。因此,我们需要对这些更改进行调整,确保博客前端能够正确运行。 2. **设置代码**: - **ready方法封装**:...
在了解MBG之前,首先我们需要知道MyBatis本身是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 MBG的核心组件包括: 1. 配置文件:XML...
在实际开发过程中,通过 MP 提供的代码生成器可以极大地减少重复性工作,提高开发效率。本文将详细介绍如何在 MyBatis-Plus 3.5.1 版本中集成代码生成器,并实现自定义模板。 #### 二、代码生成器基础 在开始之前...
总结起来,vim-go是Vim编辑器的一个强大扩展,为Go开发者提供了一站式的开发环境,集成了代码编辑、测试、调试等多种功能,极大地提高了Go语言开发的效率。对于喜欢Vim的Go程序员来说,这是一个不可或缺的工具。
13. TDD(测试驱动开发):这是一种软件开发方法,它要求开发者在编写实际代码之前先编写测试代码。TDD可以提高代码质量,确保软件行为符合预期。 14. 文档和注释:高质量的代码应当拥有良好的文档和注释,以帮助...
总结来说,这个项目提供了一个学习和实践Java面向对象设计的机会,涵盖了类设计、对象交互、模块化编程等多个重要概念。对于想要提升Java编程技能和理解面向对象设计的人来说,这是一个很好的参考资料。同时,它也...
- **背景**:在重构这两个模块之前,团队面临着诸多挑战,如业务复杂度高、系统维护困难等。 - **过程**: - 通过与领域专家的密切合作,明确了业务需求和核心领域概念。 - 进行了细致的领域建模工作,识别出了...
- **定义**:测试驱动开发是一种软件开发方法论,强调在编写功能代码之前先编写测试代码。这种做法有助于提高代码质量和可维护性。 - **步骤**: - **写测试**:首先编写针对所需功能的测试案例。 - **运行测试**...