软件设计与工程家庭作业帮助
软件设计是为一套或多组问题实现软件解决方案的过程。软件设计的主要组成部分之一是软件需求分析(SRA)。 SRA是软件开发过程的一部分,其中列出了软件工程中使用的规范。
软件设计是将用户需求转化为适当形式的过程,可帮助程序员进行软件编码和实现。
为了评估用户需求,创建了SRS(软件需求规范)文档,而对于编码和实现,需要在软件方面具有更具体和详细的要求。该过程的输出可以直接用于编程语言的实现。
软件设计是SDLC(软件设计生命周期)的第一步,它将集中从问题域转移到解决方案领域。它试图说明如何满足SRS中提到的要求。
软件设计级别
软件设计产生三个层次的结果:
建筑设计 – 建筑设计是系统的最高抽象版本。它将软件识别为具有许多组件相互交互的系统。在这个层次上,设计人员获得了提出的解决方案域的想法。
高级设计 – 高级设计将“单一实体多组件”的架构设计概念打破了对子系统和模块的抽象化视图,并描绘了它们之间的相互作用。高级设计侧重于系统与其所有组件如何以模块的形式实现。它识别每个子系统的模块化结构以及它们之间的关系和相互作用。
详细设计 – 详细设计涉及前两个设计中被视为系统及其子系统的实现部分。它对于模块及其实现更加详细。它定义了每个模块及其接口与其他模块通信的逻辑结构。
模块化
模块化是将软件系统分为多个独立和独立的模块的技术,这些模块预计能够独立执行任务。这些模块可以作为整个软件的基本结构。设计师倾向于设计模块,以便它们可以单独和独立地执行和/或编译。
模块化设计无意中遵循“划分和征服”问题解决策略的规则,这是因为软件的模块化设计附带了许多其他优点。
模块化优势:
较小的组件更容易维护
程序可以根据功能方面进行划分
可以在程序中引入所需的抽象级别
具有高内聚性的组分可以重新使用
可以同时执行
希望从安全方面
并发性
所有软件都要按时执行。通过顺序执行,我们意味着编码指令将一个接一个地执行,这意味着在任何给定时间只有一部分程序被激活。说,一个软件有多个模块,那么在执行任何时候只有一个模块可以被发现是活动的。
在软件设计中,通过将软件分成多个独立的执行单元(如模块)并行执行并发,实现并发。换句话说,并发性为软件提供了能够彼此并行执行多个代码的能力。
程序员和设计人员必须识别那些可以并行执行的模块。
例
字处理器中的拼写检查功能是软件模块,它与文字处理器本身一起运行。
耦合和凝聚力
当软件程序模块化时,其任务根据某些特性分为几个模块。我们知道,模块是为了实现一些任务而放在一起的指令集。尽管如此,它们被认为是单一的实体,但是可以相互指称合作。有一些措施可以衡量模块设计的质量和它们之间的相互作用。这些措施称为耦合和内聚力。
凝聚
凝聚力是定义模块元素内的可靠性程度的度量。凝聚力越大,程序设计越好。
有七种类型的凝聚力,即 –
共同的凝聚力 – 这是计划外和随机的凝聚力,这可能是为了模块化将程序分解成更小的模块的结果。因为它是计划外的,它可能会对程序员造成混乱,一般不被接受。
逻辑内聚 – 逻辑分类元素放在一个模块中时,称为逻辑内聚。
时间凝聚力 – 当模块的元素组织起来使得它们在相似的时间点被处理时,称为时间凝聚力。
程序凝聚力 – 当模块的元素分组在一起时,它们是为了执行一个任务而被顺序执行的,它被称为程序内聚。
沟通凝聚力 – 当模块的元素组合在一起时,它们被顺序地执行并且在相同的数据(信息)上工作,它被称为交际凝聚力。
以整体的方式,这与我对软件工程方法的批评,包括当代的敏捷方法相似。他们主要处理开发新的维护软件,作为一种特殊情况。但如果我的经验是指导,维护是一般情况。在我的职业生涯中,我已经有更多的1.0版本。从瀑布到卢比到敏捷的方法很少,对于增强现有应用程序的典型工作是有效的。您很少能够从头开始设计/设计。
在过去的半个世纪里,有关于计算机科学领域应该被视为工程学科之一的一些争论。某些软件开发,设计和应用专家认为他们应该被称为“软件工程师”。到目前为止,大多数人都将软件工程领域作为一个合法的工程学科,这种趋势有可能随着时间的推移而继续加强。
虽然软件工程与其他工程学科(如化学,电气或机械)相比是一个年轻的领域,但它已经具有令人兴奋的历史,充满了早期成功和失败的宝贵经验。软件工程涵盖了源于计算机科学(如开发过程和方法学,测试和重构)和社会科学(如软件估算指标和技术,风险管理和质量保证)的各种主题。在软件工程的历史和基础上研究软件的人,在一定程度上可以受益匪浅。
典型的软件工程课程可能涉及以下主题的任何组合:
传统软件开发流程和方法(瀑布,UP,RUP等)
现代软件开发流程与方法(XP,SCRUM等)
软件开发生命周期(SDLC)模型
要求聚集
初始(抽象)和详细系统分析
初始(抽象)和详细的系统设计
测试方法(单元,白盒/黑盒,集成,用户感知,接口,测试驱动开发等)
软件维护和重构
软件体系结构与范式(2/3 / N-Tier系统,客户端 – 服务器模型,P2P模型,分布式计算,面向服务架构(SOA),RESTful范例,SOAP范例,WS- *标准,云计算,软件即服务(SaaS),平台即服务(PaaS)等)
项目管理
软件指标和估计技术
风险管理(规划与减缓)
软件质量保证
为了完成在线教育的辅导任务,我们的大学家庭作业帮助和在线辅导中心全天24小时,准备协助需要家庭作业的大学生帮助软件工程和设计的各个方面。我们的软件工程和设计导师可以帮助您的所有项目,无论大小,我们挑战你,以找到更好的在线软件工程和设计辅导任何地方。