1、Introduction to Software Engineering Usman Farooq sf_,Page 2,Goal(s) of this lecture,To introduce software engineering and its importance. To introduce different software engineering techniques for different kinds of software systems. To introduce Software Process.,Software Engineering,In todays wor
2、ld, the economies of all developed nations are dependent on software. More and more systems are software controlled.,Page 4,Software Engineering,Software engineering is mainly concerned with theories, methods and tools for professional software development. Software engineering is defined as :- “ Th
3、e application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.”,Page 5,Software Engineering,Software Cost Software cost often dominate system costs. The costs of software on a PC are often greater than the hardware cost. Software costs m
4、ore to maintain then it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is mainly concerned with cost effective software development.,FAQs about Software Engineering,What is software? What is software engineering? What is
5、a software process? What is a software process model?,FAQs about Software Engineering,What are the costs of software engineering? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? What are the important challenges facing software engineering?,What is Softwa
6、re?,Software is: Computer programs and associated documentation Instructions (Computer programs) that when executed provide desired features, function, and performance. The are basically two kinds of software products:- Generic Products Bespoke or customized products.,Kind of Software Products,Gener
7、ic products Developed to be sold to a range of different customers. This category of software products is bond to multiple users in the market. The requirements of these software products are usually elicited either by the competitor products or through market surveys. Sometimes developing the innov
8、ating requirements also plays an important role for the success of the software product.,Kind of Software Products,Generic products (Continuous) Examples of such products are software for PCs such as:- Databases, word processors, drawing packages, project management tools etc.,Kind of Software Produ
9、cts,Bespoke Products Develop for a single customer according to their specification. Software products are designed according to the requirements of a customer.,What is Software Engineering?,It is an engineering discipline which is concerned with all aspects of software production. Software engineer
10、s should adopt a systematic and organized approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resource available.,Role of Software Engineer,Software engineers apply theories, methods and tools wherever required. B
11、ut also find out solutions to the problems in case when there are no applicable theories and methods. Software engineers should provide solutions to the problems while keeping in mind both the budget and timing constraints.,Role of Software Engineer,Software engineering is not all about the technica
12、l processes of software development. It also includes activities such as:-Software project management and the development of tools, methods and theories to support software production.,Importance of Software Engineering,Software Engineering is important because of following reason:- In todays world,
13、 individuals and society highly rely on effective software systems. There is a need to develop reliable and trustworthy software systems within time and budget.,What is a Software Process?,A set of activities whose aim/goal is the development or evolution of software. There are four important activi
14、ties that are common to all software processes:- Software specification Software development Software validation Software evolution,Page 17,Software Process Activities,Software Specification In software specification, the customers and the engineers usually describes, what the system should do and i
15、ts development constraints.,Page 18,Software Process Activities,Software Development Production of the software system i.e. where software is designed and programmed.,Page 19,Software Process Activities,Software Validation Checking that the software is what the customer wants or checking the softwar
16、e against the customer requirements.,Page 20,Software Process Activities,Software Evolution Changing the software in response to changing demands.,Page 21,Cost of Software Engineering,Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed
17、 development costs. Costs of the software system usually vary depending upon the type of system being produced and the requirements of system attributes such as performance and system reliability.,Page 22,What is CASE,CASE stands for computer aided software engineering. Software systems which are ai
18、med to provide automated support for software process activities. CASE systems are often used for method support. Upper-CASE Tools to support the early process activities of requirements and design. Lower-CASE Tools to support later activities or backend activities of software lifecycle such as prog
19、ramming, debugging and testing.,Page 23,Attributes of Good Software,The software should deliver the required functionality and performance to the user and should be :- Maintainable Dependable Efficient Acceptable,Page 24,Attributes of Good Software,Maintainability Software should be designed in a wa
20、y so that it can support to meet the changes in customer requirements. Dependability and Security Software must be trust worthy i.e. it should not cause physical or economic damage in the event of system failure. Malicious users should not be able to use the system.,Page 25,Attributes of Good Software,Efficiency Software should not make wasteful use of system resources such as:- Memory Processor cycles Acceptability Software must be usable by the users for which it was developed/designed.,