Object - Oriented software engineering practical software development using uml and - Chapter 1: Software and software engineering

• Complexity and large numbers of details • Uncertainty about technology • Uncertainty about requirements • Uncertainty about software engineering skills • Constant change • Deterioration of software design • Political risks

ppt28 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1067 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Object - Oriented software engineering practical software development using uml and - Chapter 1: Software and software engineering, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Object-Oriented Software Engineering Practical Software Development using UML and JavaChapter 1: Software and Software Engineering© Lethbridge/Laganière 20051Chapter 1: Software and Software Engineering1.1 The Nature of Software...Software is intangibleHard to understand development effortSoftware is easy to reproduceCost is in its developmentin other engineering products, manufacturing is the costly stageThe industry is labor-intensiveHard to automate© Lethbridge/Laganière 20052Chapter 1: Software and Software EngineeringThe Nature of Software ...Untrained people can hack something togetherQuality problems are hard to noticeSoftware is easy to modifyPeople make changes without fully understanding itSoftware does not ‘wear out’It deteriorates by having its design changed:erroneously, orin ways that were not anticipated, thus making it complex© Lethbridge/Laganière 20053Chapter 1: Software and Software EngineeringThe Nature of SoftwareConclusionsMuch software has poor design and is getting worseDemand for software is high and risingWe are in a perpetual ‘software crisis’We have to learn to ‘engineer’ software© Lethbridge/Laganière 20054Chapter 1: Software and Software EngineeringTypes of Software...CustomFor a specific customerGenericSold on open marketOften calledCOTS (Commercial Off The Shelf)Shrink-wrappedEmbeddedBuilt into hardwareHard to change© Lethbridge/Laganière 20055Chapter 1: Software and Software EngineeringTypes of SoftwareDifferences among custom, generic and embedded software© Lethbridge/Laganière 20056Chapter 1: Software and Software EngineeringTypes of SoftwareReal time softwareE.g. control and monitoring systemsMust react immediatelySafety often a concernData processing softwareUsed to run businessesAccuracy and security of data are keySome software has both aspects© Lethbridge/Laganière 20057Chapter 1: Software and Software Engineering1.2 What is Software Engineering?...The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraintsOther definitions:IEEE: (1) the application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).The Canadian Standards Association: The systematic activities involved in the design, implementation and testing of software to optimize its production and support.© Lethbridge/Laganière 20058Chapter 1: Software and Software EngineeringWhat is Software Engineering?Solving customers’ problemsThis is the goal of software engineeringSometimes the solution is to buy, not buildAdding unnecessary features does not help solve the problemSoftware engineers must communicate effectively to identify and understand the problem© Lethbridge/Laganière 20059Chapter 1: Software and Software EngineeringWhat is Software Engineering?Systematic development and evolutionAn engineering process involves applying well understood techniques in a organized and disciplined wayMany well-accepted practices have been formally standardizede.g. by the IEEE or ISO Most development work is evolution © Lethbridge/Laganière 200510Chapter 1: Software and Software EngineeringWhat is Software Engineering?Large, high quality software systemsSoftware engineering techniques are needed because large systems cannot be completely understood by one personTeamwork and co-ordination are requiredKey challenge: Dividing up the work and ensuring that the parts of the system work properly togetherThe end-product must be of sufficient quality © Lethbridge/Laganière 200511Chapter 1: Software and Software EngineeringWhat is Software Engineering?Cost, time and other constraintsFinite resourcesThe benefit must outweigh the costOthers are competing to do the job cheaper and fasterInaccurate estimates of cost and time have caused many project failures© Lethbridge/Laganière 200512Chapter 1: Software and Software Engineering1.3 Software Engineering and the Engineering ProfessionThe term Software Engineering was coined in 1968People began to realize that the principles of engineering should be applied to software developmentEngineering is a licensed professionIn order to protect the publicEngineers design artifacts following well accepted practices which involve the application of science, mathematics and economicsEthical practice is also a key tenet of the professionIn many countries, much software engineering does not require an engineering licence, but is still engineering© Lethbridge/Laganière 200513Chapter 1: Software and Software EngineeringSoftware Engineering and the Engineering ProfessionEthics in Software Engineering:Software engineers shallAct consistently with public interestAct in the best interests of their clientsDevelop and maintain with the highest standards possibleMaintain integrity and independencePromote an ethical approach in managementAdvance the integrity and reputation of the professionBe fair and supportive to colleaguesParticipate in lifelong learning© Lethbridge/Laganière 200514Chapter 1: Software and Software Engineering1.4 Stakeholders in Software Engineering1. UsersThose who use the software2. CustomersThose who pay for the software3. Software developers4. Development ManagersAll four roles can be fulfilled by the same person© Lethbridge/Laganière 200515Chapter 1: Software and Software Engineering1.5 Software Quality...UsabilityUsers can learn it and fast and get their job done easilyEfficiencyIt doesn’t waste resources such as CPU time and memoryReliabilityIt does what it is required to do without failingMaintainabilityIt can be easily changedReusabilityIts parts can be used in other projects, so reprogramming is not needed© Lethbridge/Laganière 200516Chapter 1: Software and Software EngineeringSoftware Quality and the StakeholdersQUALITY SOFTWAREDeveloper: easy to design; easy to maintain; easy to reuse its partsUser: easy to learn; efficient to use; helps get work doneCustomer: solves problems at an acceptable cost in terms of money paid and resources usedDevelopment manager: sells more and pleases customers while costing less to develop and maintain© Lethbridge/Laganière 200517Chapter 1: Software and Software EngineeringSoftware Quality: Conflicts and ObjectivesThe different qualities can conflictIncreasing efficiency can reduce maintainability or reusabilityIncreasing usability can reduce efficiencySetting objectives for quality is a key engineering activityYou then design to meet the objectivesAvoids ‘over-engineering’ which wastes moneyOptimizing is also sometimes necessaryE.g. obtain the highest possible reliability using a fixed budget© Lethbridge/Laganière 200518Chapter 1: Software and Software EngineeringInternal Quality CriteriaThese:Characterize aspects of the design of the softwareHave an effect on the external quality attributesE.g.The amount of commenting of the code The complexity of the code © Lethbridge/Laganière 200519Chapter 1: Software and Software EngineeringShort Term Vs. Long Term QualityShort term:Does the software meet the customer’s immediate needs? Is it sufficiently efficient for the volume of data we have today?Long term:MaintainabilityCustomer’s future needsScalability: Can the software handle larger volumes of data?© Lethbridge/Laganière 200520Chapter 1: Software and Software Engineering1.6 Software Engineering ProjectsMost projects are evolutionary or maintenance projects, involving work on legacy systemsCorrective projects: fixing defectsAdaptive projects: changing the system in response to changes inOperating systemDatabaseRules and regulationsEnhancement projects: adding new features for usersReengineering or perfective projects: changing the system internally so it is more maintainable© Lethbridge/Laganière 200521Chapter 1: Software and Software EngineeringSoftware Engineering Projects‘Green field’ projectsNew developmentThe minority of projects© Lethbridge/Laganière 200522Chapter 1: Software and Software EngineeringSoftware Engineering ProjectsProjects that involve building on a framework or a set of existing components.A framework is an application that is missing some important details.E.g. Specific rules of this organization.Such projects:Involve plugging together components that are:Already developed.Provide significant functionality.Benefit from reusing reliable software.Provide much of the same freedom to innovate found in green field development.© Lethbridge/Laganière 200523Chapter 1: Software and Software Engineering1.7 Activities Common to Software Projects...Requirements and specificationIncludesDomain analysisDefining the problemRequirements gatheringObtaining input from as many sources as possibleRequirements analysisOrganizing the informationRequirements specificationWriting detailed instructions about how the software should behave© Lethbridge/Laganière 200524Chapter 1: Software and Software EngineeringActivities Common to Software Projects...DesignDeciding how the requirements should be implemented, using the available technologyIncludes:Systems engineering: Deciding what should be in hardware and what in softwareSoftware architecture: Dividing the system into subsystems and deciding how the subsystems will interactDetailed design of the internals of a subsystemUser interface designDesign of databases© Lethbridge/Laganière 200525Chapter 1: Software and Software EngineeringActivities Common to Software ProjectsModelingCreating representations of the domain or the softwareUse case modelingStructural modelingDynamic and behavioural modelingProgrammingQuality assuranceReviews and inspectionsTestingDeploymentManaging the process© Lethbridge/Laganière 200526Chapter 1: Software and Software Engineering1.8 The Nine Themes of the Book1. Understanding the customer and the user2. Basing development on solid principles and reusable technology3. Object orientation4. Visual modeling using UML5. Evaluation of alternatives6. Incorporating quantitative and logical thinking 7. Iterative and agile development8. Communicating effectively using documentation9. Risk management in all SE activities © Lethbridge/Laganière 200527Chapter 1: Software and Software Engineering1.9 Difficulties and Risks in Software Engineering• Complexity and large numbers of details• Uncertainty about technology• Uncertainty about requirements• Uncertainty about software engineering skills• Constant change• Deterioration of software design• Political risks© Lethbridge/Laganière 200528Chapter 1: Software and Software Engineering

Các file đính kèm theo tài liệu này:

  • pptllosengch01e2v4_2134.ppt
Tài liệu liên quan