140 likes | 592 Views
11425 Software Engineering. Introduction to Software Engineering February 14, 2012. Sommerville , I., Software Engineering, Pearson, 9 th Ed., 2010. Essential Attributes of Good Software. Maintainability Software should be able to evolve for changes Dependability and security
E N D
11425 Software Engineering Introduction to Software Engineering February 14, 2012 Sommerville, I., Software Engineering, Pearson, 9th Ed., 2010.
Essential Attributes of Good Software • Maintainability • Software should be able to evolve for changes • Dependability and security • Reliability, security, and safety • Efficiency • Responsiveness, processing time, memory utilization • Acceptability • Understandable, usable, and compatible
Computer Science • Computer science is concerned with the theories and methods that underline computers and software systems, whereas software engineering is concerned with the practical problems of producing software • Computer science is often most applicable to relatively small programs. Elegant theories of computer science cannot always be applied to large, complex problems that require a software solution.
System Engineering • System engineering is concerned with hardware development, policy and process design and system deployment, as well as software engineering • System engineers are involved in specifying the system, defining its overall architecture, and then integrating the different parts to create the finished system
Software Engineering Diversity • There are no universal software engineering methods and techniques that are suitable for all systems and all companies • The most significant factor in determining which software engineering methods and techniques are most important is the type of application that is being developed
Challenges of Building Most Software • Heterogeneity • Develop techniques for building dependable software that is flexible enough to cope with different types of computes and mobile devices • Business and social change • Software applications should be able to change rapidly as business and society are changing quickly • Security and trust • This is especially true for remote software systems through a web page or web service interface
Software Engineering Diversity • There are many different types of applications including (1/2): • Stand-alone applications (photo editing, CAD) • Interactive transaction-based applications (cloud) • Embedded control systems (anti-lock braking system) • Batch processing systems (salary payment systems)
Software Engineering Diversity • There are many different types of applications including (2/2): • Entertainment systems (games) • Systems for modeling and simulation (physical scenario) • Data collection systems (sensor based systems) • Systems of systems • The boundaries between these system types are blurred
Software Engineering for All Systems • There are software engineering fundamentals that apply to all types of software systems: • They should be developed using a managed and understood development process (process) • Dependability and performance are important for all types of systems(dependability) • Understanding and managing the software specification and requirements are important (requirements and management) • Make as effective use as possible of existing resources (reuse)
Software Engineering Ethics (ACM/IEEE) • Public • Client and employer • Product • Judgment • Management • Profession • Colleagues • Self
Discuss • Discuss whether professional software engineers should be certified in the same way as doctors or lawyers.