软件工程导论期末复习.docx

上传人:b****3 文档编号:5489794 上传时间:2022-12-17 格式:DOCX 页数:18 大小:1MB
下载 相关 举报
软件工程导论期末复习.docx_第1页
第1页 / 共18页
软件工程导论期末复习.docx_第2页
第2页 / 共18页
软件工程导论期末复习.docx_第3页
第3页 / 共18页
软件工程导论期末复习.docx_第4页
第4页 / 共18页
软件工程导论期末复习.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

软件工程导论期末复习.docx

《软件工程导论期末复习.docx》由会员分享,可在线阅读,更多相关《软件工程导论期末复习.docx(18页珍藏版)》请在冰豆网上搜索。

软件工程导论期末复习.docx

软件工程导论期末复习

 

软件工程概述部分

FAQsaboutsoftwareengineering

●WhatisSoftware?

Computerprogramsandassociateddocumentationsuchasrequirements,designmodelsandusermanuals(指南).

Softwareproductsmaybedevelopedforaparticularcustomerormaybedevelopedforageneralmarket.

Genericproducts–通用软件产品

Bespoke(custom)products–制定软件产品

Characteristics1:

Softwareisdevelopedorengineered;Butitisnotmanufacturedintheclassicalsense.

(Thatmeanswecancopyyourproductwhenyoufinishthephaseofbuildingup.)

Characteristic2:

Softwaredoesn’t“wearout”

●WhatisSoftwareEngineering?

Softwareengineeringisanengineeringdiscipline(工程学科)thatisconcernedwithallaspectsofsoftwareproduction.

Softwareengineersshouldadoptasystematicandorganised(系统的,有组织的)approachtotheirworkanduseappropriatetoolsandtechniquesdependingontheproblemtobesolved,thedevelopmentconstraintsandtheresourcesavailable.

resources:

People(mostimportant)

Tools

Method

Process

●WhatisthedifferencebetweenSE(softwareengineering)andCS(computerscience)?

Computerscienceisconcernedwiththeoryandfundamentals;softwareengineeringisconcernedwiththepracticalitiesofdevelopinganddelivering(交付)usefulsoftware.

●Whatisthedifferencebetweensoftwareengineeringandsystemengineering?

systemengineeringisconcernedwithallaspectsofcomputer-basedsystemsdevelopment,includinghardwaresoftwareandprocessengineering(处理工程).softwareengineeringisapartofthisprocess.

●Whatissoftwareprocess?

Asetofactivitieswhosegoalisthedevelopmentorevolutionofsoftware.

Genericactivitiesinallsoftwareprocessesare:

Specification(描述)-whatthesystemshoulddoanditsdevelopmentconstraints

Development(开发)-productionofthesoftwaresystem

Validation(有效性验证)-checkingthatthesoftwareiswhatthecustomerwants

Evolution(进化)-changingthesoftwareinresponsetochangingdemands.

●Whatissoftwareprocessmodel?

Asimplifiedrepresentation(表示形式)ofasoftwareprocess,presentedfromaspecificperspective.

softwareprocessmodel:

Workflowperspective-sequenceofactivities;

Data-flowperspective-informationflow;

Role/actionperspective-whodoeswhat.

软件过程部分

●Genericprocessmodels

ØWaterfall;(瀑布型)

——Separateanddistinctphasesofspecificationanddevelopment.(使用单独的过程阶段表现)

问题:

1.Inflexible(Onephasehastobecompletebeforemovingontothenextphase.)

2.Transferofrisks(风险转移)

适用:

mostlyusedforlargesystemsengineeringprojectswhereasystemisdevelopedatseveralsites

ØEvolutionarydevelopment;(进化式)

——Specification,developmentandvalidationareinterleaved(交替,先快速开发再不断修改).

Exploratorydevelopment(探索式):

toworkwithcustomers

Throw-awayprototyping(抛弃式):

startwithpoorlyunderstoodrequirementstoclarifywhatisreallyneeded

问题:

1Lackofprocessvisibility(过程不可见)

2Systemsareoftenpoorlystructured

适用:

Forsmallormedium-sizeinteractivesystems

ØComponent-basedsoftwareengineering.(基于组件CBSE)

——Thesystemisassembledfromexistingcomponents.(集成已存在的可复用的组件)

软件复用reuse:

peopleworkingontheprojectknowofdesignsorcodewhichissimilartothatrequired.

●Processiteration软件迭代:

(Iterationcanbeappliedtoanyofthegenericprocessmodels.)

两个过程模型专门为过程反复设计的

Two(related)approaches:

ØIncrementaldelivery(增量式开发);

——thedevelopmentanddeliveryisbrokendownintoincrements(增量)

Thehighestpriorityrequirementsareincludedinearlyincrements

Oncethedevelopmentofanincrementisfinished,correspondingsystemfunctionalityisavailable

ØSpiraldevelopment(螺旋式开发).

——Eachloop(循环)inthespiralrepresentsaphaseintheprocess.

Risksareexplicitlyassessedandresolvedthroughouttheprocess.

 

●Fourfundamentalprocessactivities:

•Softwarespecification

•Softwaredesignandimplementation

•Softwarevalidation

•Softwareevolution

ØSoftwarespecification(描述)

ØSoftwaredesignandimplementation(设计和实现)

ØSoftwarevalidation(有效性验证)

Verificationandvalidation(V&V)V&Vmustbeappliedateachstageinthesoftwareprocess.

Hastwoprincipalobjectives:

Thediscoveryofdefectsinasystem;

Theassessmentofwhetherornotthesystemisusefulanduseableinanoperationalsituation

Verification:

"Arewebuildingtheproductright”.——Thesoftwareshouldconformtoitsspecification.

Validation:

"Arewebuildingtherightproduct”.——Thesoftwareshoulddowhattheuserreallyrequires.

ØSoftwareevolution(进化)

软件项目管理部分

●Softwareprojectmanagement

Concernedwithactivitiesinvolvedinensuringthatsoftwareisdeliveredontimeandonscheduleandinaccordancewiththerequirementsoftheorganisationsdevelopingandprocuringthesoftware.

●MilestonesVs.Deliverables

Milestonesaretheend-pointofaprocessactivity.(里程碑)

Deliverablesareprojectresultsdeliveredtocustomers.(可交付的文档)

软件过程被分解为一系列想关的基本活动,每个基本活动都有相应的输出结果。

里程碑不是要交给客户的东西。

而可交付的文档是要交付给客户的项目成果,要在项目的描述、设计等阶段结束时交付。

例如需求过程:

可交付的文档是:

需求描述

●CriticalPath

Longestofallpathsthroughtheproject

●WBS

软件需求部分

●SoftwareRequirementVs.SoftwareRequirementEngineering

Requirement:

Itmayrangefromahigh-levelabstractstatementofaserviceorofasystemconstrainttoadetailedmathematicalfunctionalspecification.Descriptionofsystemservicesandconstraintstoadetailmathematicalfunction.

Requirementsengineering:

Theprocessofestablishingtheservicesthatthecustomerrequiresfromasystemandtheconstraintsunderwhichitoperatesandisdeveloped.

Therequirementsthemselvesarethedescriptionsofthesystemservicesandconstraintsthataregeneratedduringtherequirementsengineeringprocess.

●软件需求类型

用户需求(userrequirement)

Statementsinnaturallanguageplusdiagramsoftheservicesthesystemprovidesanditsoperationalconstraints.Writtenforcustomers.

系统需求(systemrequirement)

Astructureddocumentsettingoutdetaileddescriptionsofthesystem’sfunctions,servicesandoperationalconstraints.Defineswhatshouldbeimplementedsomaybepartofacontractbetweenclientandcontractor.

系统需求包括:

功能性需求(Functionalrequirements)

Statementsofservicesthesystemshouldprovide,howthesystemshouldreacttoparticularinputsandhowthesystemshouldbehaveinparticularsituations.

Functionaluserrequirementsmaybehigh-levelstatementsofwhatthesystemshoulddo

Functionalsystemrequirementsshoulddescribethesystemservicesindetail.

非功能性需求(non-functionalrequirements)

constraintsontheservicesorfunctionsofferedbythesystemsuchastimingconstraints,constraintsonthedevelopmentprocess,standards,etc.

需求工程过程(从可行性分析到需求文档,这部分包括很多细致的内容,请参考教材和ppt)

Requirementsengineeringprocess:

Feasibilitystudies

•Afeasibilitystudydecideswhetherornottheproposedsystemisworthwhile.

•Ashortfocusedstudythatchecks

◦Ifthesystemcontributestoorganisationalobjectives;

◦Ifthesystemcanbeengineeredusingcurrenttechnologyandwithinbudget;

◦Ifthesystemcanbeintegratedwithothersystemsthatareused.

Elicitationandanalysis

•Sometimescalledrequirementselicitationorrequirementsdiscovery.

•Involvestechnicalstaffworkingwithcustomerstofindoutabouttheapplicationdomain,theservicesthatthesystemshouldprovideandthesystem’soperationalconstraints.

•Mayinvolveend-users,managers,engineersinvolvedinmaintenance,domainexperts,tradeunions,etc.Thesearecalledstakeholders.

Requirementsvalidation

•Concernedwithdemonstratingthattherequirementsdefinethesystemthatthecustomerreallywants.

•Requirementserrorcostsarehighsovalidationisveryimportant

◦Fixingarequirementserrorafterdeliverymaycostupto100timesthecostoffixinganimplementationerror.

Requirementsmanagement

•Requirementsmanagementistheprocessofmanagingchangingrequirementsduringtherequirementsengineeringprocessandsystemdevelopment.

•Requirementsareinevitablyincompleteandinconsistent

◦Newrequirementsemergeduringtheprocessasbusinessneedschangeandabetterunderstandingofthesystemisdeveloped;

◦Differentviewpointshavedifferentrequirementsandtheseareoftencontradictory.

ReviewQuestionsforyou!

●WhatisSoftwareRequirement?

●Whodoesit?

●Whyisitimportant?

●Whatarethesteps?

●Whatistheworkproducts(artifacts)?

●HowdoIensurethatI’vedoneitright?

●WhataretheCASEforourrequirementanalysis?

软件体系架构设计部分

●SoftwareArchitectureVs.ArchitectureStyle

Thedesignprocessforidentifyingthesub-systemsmakingupasystemandtheframeworkforsub-systemcontrolandcommunicationisarchitecturaldesign.

Theoutputofthisdesignprocessisadescriptionofthesoftwarearchitecture.

 

软件设计部分

SoftwareDesign:

Designiswhatvirtuallyeveryengineerwantstodo.Itistheplacewherecreativelyrules-customersrequirements,businessneeds,andtechnicalconsiderationsallcometogetherintheformulationofaproductorsystem.

DesignPrinciples:

•Abstraction抽象

抽象是控制复杂性的基本策略。

“抽象”要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。

•Modularity模块性

•InformationHiding信息隐藏

•FunctionalIndependence功能独立

 

Coupling耦合——单元模块之间

Onemoduleisreferencedbyothermodules

Datatransportedfromonemoduletotheothers

耦合度是对软件结构中模块间关联程度的一种度量。

耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。

与内聚度正好相反,在设计软件时应追求尽可能松散耦合的系统。

因为对这类系统中任一模块的设计、测试和维护相对独立。

由于模块间联系较少,错误在模块间传播的可能性也随之变小。

模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。

耦合度也可以分为七级

Lowercoupling

No-directCoupling

无联系耦合:

如果两模块中任一个都不依赖于对方能独立工作,则称这两模块为(nodirectcoupling),这类耦合度最低。

DataCoupling

StampCoupling:

特征耦合:

介于数据耦合和控制耦合之间的一种耦合

印记耦合:

将数据结构作为参数进行传递

ControlCoupling:

控制耦合:

传递标志

如果两模块间通过参数交换信息,此时若传递的信息中含有控制信息,则耦合度上升为控制耦合。

控制耦合通常会增加系统的复杂性,有时适当分解模块可消除控制耦合。

Externalcoupling

外部耦合:

一些模块都与一个外部环境相关,则这

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1