Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
127 KB
Nội dung
Introduction to Software Engineering Outline • • • • • • • • Nature of software projects Engineering approaches Software Process A process step Characteristics of a good process Waterfall model for development Other models Project planning Software systems • Ubiquitous, used in variety of applications - Business, engineering, scientific applications • Simple to complex, internal to public, single function to enterprise-wide, one location to distributed, batch or real time, informational to mission-critical,… Challenge in large projects • Developing large/complex software application is very challenging - Effort intensive - High cost - Long development time - Changing needs for users - High risk of failure, user acceptance, performance, maintainability • Quite different from one-time programs where author and user are same! Successful software system • Software development projects have not always been successful • When we consider a software application successful? - Development completed - It is useful - It is usable, and - It is used • Cost-effectiveness, maintainability implied Reasons for failure • • • • • Schedule Slippage Cost over-runs Does not solve user’s problem Poor quality of software Poor maintainability Reasons for failure… • Ad hoc software development results in such problems - No planning of development work (e.g no milestones defined) - Deliverables to user not identified - Poor understanding of user requirements - No control or review - Technical incompetence of developers - Poor understanding of cost and effort by both developer and user Engineering: other disciplines • Large projects common and successfully - Building bridges, dams - Power plants - Aircrafts, missiles,… • “engineering” a solution: - To design, develop (build, fabricate) an artifact that meets specifications efficiently, costeffectively and ensuring quality - Using scientific principles Engineering • Requires well-defined approach: repeatable, predictable • Large projects requires managing the project itself - Manage people, money (cost), equipment, schedule - Scale makes big difference: compare building a hut, 2-storeyed house, or 50-storeyed apartment building • Quality extremely important: relates to failures, efficiency, usability,… - People willing to pay for quality! Large Projects • Involve different types of people - Large building: architect, civil engineer, electrical engineer, workers (masons, carpenters), • Continuous supervision for quality assurance - On site supervisors (check cement/steel quality, ensuring proper mix of sand & cement,…) Shortcomings of Waterfall model • Requirements may not be clearly known, especially for applications not having existing (manual) counterpart - Railway reservation: manual system existed, so SRS can be defined - Knowledge management for central bank -new Shortcomings • Requirements change with time during project life cycle itself - Users may find solutions of little use - Better to develop in parts in smaller increments; this is common for packages, system software • Considered documentation-heavy: so much documentation may not be required for all types of projects Prototyping Model • When customer or developer is not sure - Of requirements (inputs, outputs) - Of algorithms, efficiency, human-machine interaction • A throwaway prototype built from currently known user needs • Working or even ‘paper’ prototype Prototyping… • Quick design focuses on aspects visible to user; features clearly understood need not be implemented • Prototype is tuned to satisfy customer needs - Many interactions may be required to incorporate changes and new requirements • Final product follows usual define-design build-test life cycle Prototyping Requirements gathering ‘Quick’ design Build prototype Evaluate & refine Engineer product Limitations of Prototyping • Customer may want prototype itself! • Developer may continue with implementation choices made during prototyping - may not give required quality, performance… • Good tools need to be acquired for quick development • May increase project cost Interactive Development • Useful for product development where developers define scope, features to serve many customers • Early version with limited feature important to establish market and get customer feedback • Initial version may follow any method • A list of features for future versions maintained Spiral Model • Activities are organized in a spiral having many cycles • Four quadrants in each cycle Determine objectives, alternatives, constraints Plan next step Evaluate alternatives, Identify and handle risks Develop the software Spiral Model… • Prototyping, simulations, benchmarking may be done to resolve uncertainties/risks • Development step depends on remaining risks; e.g., - Do prototype for user interface risks - Use basic waterfall model when user interface and performance issues are understood but only development risk remains • Risk driven: allows us mix of specificationoriented, prototype-oriented, simulation based or any other approach Project Management Process • Runs in parallel to development process • Project planning, monitoring and control are the basic goals • Project plan indicates how project will be executed successfully - Without plan, there is no management - Without measurement, not much planning possible - Plan allows progress to be measured - Plan produced before development begins and constantly updated Project Planning • Prepare cost/effort estimation - Based on project complexity, scope, productivity levels, other historical data - Many models available • Select development process, define milestones and prepare schedule - Know how effort is distributed over phases from historical data • Decide project staffing • Make quality control plans: define reviews, inspections, testing strategies to detect/remove defects Project Monitoring and Control • Plan defines various activities: many ways to represent: Gantt chart, time bar chart, PERT/CPM project activity network - Show activities, expected durations, resources allocated - Critical paths can be identified Project monitoring • Each development step gives information for tracking progress for identifying delays, bottlenecks, etc - Allows corrective action; add more resources, reduce scope, renegotiate cost/schedule, etc Summary • What is engineering, and importance of applying engineering approach in software development • Types of software processes • Stepwise process definition • Waterfall, prototype, iterative, spiral models • Project management Process • Project Planning References Lecture Series on Software Engineering by Prof.N.L Sarda, Prof Umesh Bellur,Prof.R.K.Joshi and Prof.Shashi Kelkar, Department of Computer Science & Engineering ,IIT Bombay P Jalote A Concise Introduction to Software Engineering Springer, 2008 ... even ‘paper’ prototype Prototyping… • Quick design focuses on aspects visible to user; features clearly understood need not be implemented • Prototype is tuned to satisfy customer needs - Many... • Ubiquitous, used in variety of applications - Business, engineering, scientific applications • Simple to complex, internal to public, single function to enterprise-wide, one location to distributed,... Prototyping • Customer may want prototype itself! • Developer may continue with implementation choices made during prototyping - may not give required quality, performance… • Good tools need to