1 / 22

軟體工程概論與實際應用

軟體工程概論與實際應用. 薛念林 逢甲大學資工系. Outline. What is software What is software engineering My suggestion. What is software?. Computer programs and associated documentation such as requirements, design models and user manuals . What is software engineering?.

duc
Download Presentation

軟體工程概論與實際應用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 軟體工程概論與實際應用 薛念林 逢甲大學資工系

  2. Outline • What is software • What is software engineering • My suggestion

  3. What is software? • Computer programs and associated documentation such as requirements, design models and user manuals.

  4. What is software engineering? • An engineering discipline that is concerned with all aspects of software production. • Adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.

  5. Why do software fail?

  6. Software engineering- life cycle • Specification • what the system should do and its development constraints • Development • production of the software system • Validation • checking that the software is what the customer wants • Evolution • changing the software in response to changing demands.

  7. Software engineering- activities Process mgmt. Project mgmt. Quality mgmt. Configuration mgmt. Software Development Skill

  8. Software engineering- methodology Model Process Methodology Standard Framework Approach Tool Design Pattern Method Heuristics Principle Theory Guideline Practices Myth Discipline Success experience Fail experience

  9. Myth • If we get behind schedule, we can add more programmers and catch up • Software is easy to change • If we decide to outsource the software project to a third party, I can just relax and let that firm build it

  10. Principle • Open closed principle • Anticipation of Change • Design with abstraction • Perform continuous validation • Independent test team • Principle of least surprise • KISS

  11. Heuristics/Guidelines • Nielsen’s Usability Heuristics • Visibility of System Status • Match Between System and the Real World • User Control and Freedom • Consistency and Standards • Error Prevention • Recognition Rather Than Recall • Flexibility and Efficiency of Use • Aesthetic and Minimalist Design • Help Users Recognize, Diagnose, and Recover from Errors • Help and Documentation

  12. Methods • Requirement analysis • Scenario based, business process analysis, goal-driven approach • Design • Structural design, object oriented design, aspect oriented design • Testing • Black box testing: Equivalence partition testing, all-pair testing, decision table testing, … • white box testing: Test coverage, mutation testing, …

  13. Patterns Observer pattern

  14. Models • UML model language • Static model: class diagram, component diagram, deployment diagram, etc. • Dynamic model: activity diagram, use case diagram, state transition diagram • Interaction diagram: use case diagram, sequence diagram, etc. • Other model approaches: • SysML, Business process model notation (BPMN), IDEF, etc

  15. Tool • Version control tool • CVS, SVN, Mercurial, Git • Analysis and design modeling tool • Rational Rose, StarUML, Borland Together, Eclipse UML 2 • Testing tool • JMeter, Rational Robot, HP QuickTest • Bug/Issue tracking tool • Bugzilla, CodeBeamer, HP Quality Center • …

  16. Software process • The “algorithm” of developing software • Process models • Waterfall; • Iterative development; • Scrum • Spiral • etc.

  17. Waterfall process model

  18. Iterative process model

  19. Agile programming • Discipline • Customer involved • People not process • Test driven programming • Pair programming • Embrace change • Maintain simplicity • Refactoring • Daily meeting • …

  20. Good software

  21. My suggestion • Communication and documentation • Learn modeling • Do more analysis • Learn design pattern, design your framework • Do review • Using version control system • Software quality • Keep learning Software Engineering

  22. Thanks for your listening.

More Related