Transcript Document
Software Engineering I Lecture 1 Introduction Zaheer Ahmed Introduction • • • • • • – BS(Computer Science) NCBA&E, Pakistan MS(Information Engineering) Jonkoping University, sweden Lecturer Punjab University New Campus (Lahore) Lecturer NCBA&E Lecturer Lahore Garrison University Lecturer CIIT Vehari Campus (Present) Software Engineer Course Outline Introduction to Computer-based System Engineering; Project Management; Software Specification; Requirements Engineering, System Modeling; Requirements Specifications; Software Course Outline Prototyping; Software Design: Architectural Design, ObjectOriented Design, Function-Oriented Design, User Interface Design; Quality Assurance; Processes & Configuration Management; Course Outline • Reusability, • Patterns; • Assignments and projects on various stages and deliverables of SDLC. Objective • To study various software development models and phases of software development life cycle. The concepts of project management, change control, process management, software development and testing are introduced through hands-on Team Projects. Assessment & Evaluation • • • • • Assignments (Projects) Quizzes First Sessional Second Sessional Final Exam • Total: 10% 15% 10% 15% 50% 100 Course Literature • Recommended Books • Software Engineering by Ian Somerville • Software Engineering by R.S. Pressman • Software Engineering James F. Peters, Witold Pedrycz Introduction • The term software (SW) is very generic and can be define by many ways. • Set of all program that are available to the computer. The program can be defined as set of instructions group to gather in a logical manner to accomplish of perform some task. • Set of instruction which and when executed to perform the desired task • It is a structure that holds data/information in order to enable the program to manipulate it. The data is raw facts about people, objective and organizations whereas information is the process data in the form of output from the computer. MAIN ATTRIBUTE OF SW • The main attribute of the SW are as follow. – – – – – Hardware based Requirement based Complexity Size Cost – – – – – What kind of MIS What should be the main functionalities? Who are the users? What kind of interface? What reports it should generate? • The SW is always developed after gathering the requirements. It is not possible to developed the SW without having requirements for example: if I asked you to developed MIS SW. Immediately you will ask many question such as. Main Behaviors if SW • The software main behaviors are as follow. – The SW does not wear out – Exhibits coupling and cohesion – Always response to users – Is an information transformer – Is developed or engineered not manufactured The main advantages of Modular Approach • Divide and conquer approach to solve the problem • More experienced programmers can be assigned more complex modules to develop as compared to fresh developers. • A large project become easier to monitor, control and manage • Help to reuse the code • Each modules can be assigned a separate task. • Avoid repetition of code • Increase performance and efficiency of programmer. • Each of debugging the code. • The SW always response to users in term of error or correct processing. The software always transform the data (input) to information (output). The registration form or the course enrollment form are the data or raw facts. It is possible to display such form to voice chancellor (VC) of university in term of report if he inquires that? • How many student have registered or enrolled • What are their names? • What are their previous educational background? • What are their addresses? • What are the guardian name? Steps to develop a software program • There are seven steps to developed a SW program – Problem definition – Outline the logic – Algorithm development – Algorithm testing – Coding – Execute the SW – Maintain the SW Introduction to Software Engineering Software Engineering is the set of processes and tools to develo software. Software Engineering is the combination of all the too techniques, and processes that used in software production. Th Software Engineering encompasses all those things that are use software production like: • • • • • • • Programming Language Programming Language Design Software Design Techniques Tools Testing Maintenance Development etc. Software Engineering - IEEE 1. The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. 2. The study of approaches as in 1. Software Engineering ‘all aspects of software production’ - Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production. -Sommerville A software engineer is challenged to produce high-quality software with finite amount of resources and to a predicted schedule and budget. Cost Law of diminishing returns Benefit Making the engineering decision! Software Engineering Software Engineering is not just about producing software, but about producing software in a COST-EFFECTIVE manner. The Balancing Act! Potentially conflicting requirements Cost vs. Efficiency Cost vs. Reliability Efficiency vs. User-interface Challenge is to balance these requirements. Software Development Loop Problem Definition Technical Development Status Quo Solution Integration The name of the game is continuous change and evolution in all dimensions! Well-Engineered Software Provides the required functionality Reliable User-friendly Cost-effective Efficient Maintainable Breakdown of Effort Cost - Software Cost Estimation by Capers Jones No. Activity 1 Requirements 2 Prototyping 3 Architecture 4 Project Plans 5 Initial Design 6 Detailed Design 7 Design Reviews 8 Coding 9 Reuse acquisition 10 Package Purchase 11 Code Inspection 12 Independent V&V Effort 3.84% 4.50% 2.25% 1.33% 3.84% 4.50% 3.02% 13.50% 1.13% 1.69% 4.50% 5.42% 13 14 15 16 17 18 19 20 21 22 23 24 25 Configuration Mgt. Integration User Documentation Unit Testing Function Testing Integration Testing System Testing Beta Testing Acceptance Testing Independent Testing Quality Assurance Installation and Training Project Management 0.41% 2.71% 9.67% 4.50% 4.50% 3.84% 3.38% 3.02% 1.94% 3.38% 4.50% 1.94% 6.75% Effort Breakdown • • • • • • • • Project Management Requirements Design Coding SQA SCM Integration Misc. 8.08% 14.43% 11.36% 13.50% 30.64% 13.02% 6.54% ~3% Software Engineering Practices • • • • • Software Software Software Software Software product realization project management process management quality assurance configuration management Management project planning and management configuration management quality assurance installation and training etc. Construction Requirements Design Coding Testing Maintenance etc. A Software Engineering Framework Method Task Set Process Quality Focus T O O L S Common Process Framework Framework Activities Task Sets TASKS MILESONES, DELIVERABLES SQA POINTS Umbrella Activities The Process • A software process is a road map that helps you create a timely, high quality result. • It is the way we produce software • Provides stability and control • Work Product – Programs, documents, and data produced as a consequence of the software engineering activities Process Maturity • SEI – Software Engineering Institute • 5 maturity levels • Capability Maturity Model (CMM) CMM Maturity Levels OPTIMIZED – Process Improvement MANAGED – Process Measurement DEFINED – Process Definition REPEATABLE – Project Management INITIAL – Ad hoc Process Key Process Areas (KPAs) • Goals • Abilities • Commitments • Activities • Methods for monitoring implementation • Methods for verifying implementation Level 2 KPAs • Software Configuration Management • Software Quality Assurance • Software subcontract Management Level 2 KPAs - Continued • Software project tracking and oversight • Software project planning • Requirement management Level 3 KPAs • • • • Peer reviews Inter-group coordination Software product Engineering Integrated software management Level 3 KPAs - Continued • Training program • Organization process management • Organization process focus Level 4 KPAs • Software quality management • Quantitative process management Level 5 KPAs • Process change management • Technology change management • Defect prevention Software Lifecycle Models • The way you organize your activities • Lifecycle model is a series of steps through which the product progresses Software Engineering Phases 1. Vision 2. Definition 2. Development 3. Maintenance Vision – – – – focus focus focus focus Definition on on on on why what how change Development Maintenance