220 likes | 399 Views
軟體工程概論與實際應用. 薛念林 逢甲大學資工系. 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?.
E N D
軟體工程概論與實際應用 薛念林 逢甲大學資工系
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? • 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.
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.
Software engineering- activities Process mgmt. Project mgmt. Quality mgmt. Configuration mgmt. Software Development Skill
Software engineering- methodology Model Process Methodology Standard Framework Approach Tool Design Pattern Method Heuristics Principle Theory Guideline Practices Myth Discipline Success experience Fail experience
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
Principle • Open closed principle • Anticipation of Change • Design with abstraction • Perform continuous validation • Independent test team • Principle of least surprise • KISS
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
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, …
Patterns Observer pattern
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
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 • …
Software process • The “algorithm” of developing software • Process models • Waterfall; • Iterative development; • Scrum • Spiral • etc.
Agile programming • Discipline • Customer involved • People not process • Test driven programming • Pair programming • Embrace change • Maintain simplicity • Refactoring • Daily meeting • …
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