120 likes | 137 Views
CEN 5011 Advanced Software Engineering. Introduction. Instructor: Masoud Sadjadi http://www.cs.fiu.edu/~sadjadi/Teaching/ sadjadi@cs.fiu.edu. Acknowledgements. Dr. Peter Clarke Dr. Betty Cheng Dr. Bernd Bruegge Dr. Allen Dutoit. Agenda. Introduction to Software Engineering.
E N D
CEN 5011 Advanced Software Engineering Introduction Instructor: Masoud Sadjadi http://www.cs.fiu.edu/~sadjadi/Teaching/ sadjadi@cs.fiu.edu
Acknowledgements • Dr. Peter Clarke • Dr. Betty Cheng • Dr. Bernd Bruegge • Dr. Allen Dutoit
Agenda • Introduction to Software Engineering
What is Software Engineering? (1) • Systematic approach for developing software • “Methods and techniques to develop and maintain quality software to solve problems.” [Pfleeger, 1990] • “Study of the principles and methodologies for developing and maintaining software systems.” [Zelkowitz, 1978] • “Software engineering is an engineering discipline which is concerned with all aspects of software production.” [Sommerville]
What is Software Engineering? (2) • “Practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them.” [Boehm, 1976] • “Deals with establishment of sound engineering principles and methods in order to economically obtain software that is reliable and works on real machines.” [Bauer, 1972]
Questions Addressed by SE • How do we ensure the quality of the software that we produce? • How do we meet growing demand and still maintain budget control? • How do we avoid disastrous time delays?
Why apply SE to Systems? • Provide an understandable process for system development. • Develop systems and software that are maintainable and easily changed. • Develop robust software and system. • Allow the process of creating computing-based systems to be repeatable and manageable.
How can we apply SE? • Modeling • Problem-solving • Knowledge acquisition • Rationale-driven
1. Modeling • “A model is an abstract representation of a system that enables us to answer questions about the system.” • Why use a model? • Systems are too large, too small, too complicated, or too expensive, to experience firsthand. • Models allow • Visualization • Comprehension
2. Problem Solving • Formulate the problem • Analyze the problem • Search for solutions • Decide on the appropriate solution • Specify the solution
3. Knowledge Acquisition • Domain specific knowledge. • New knowledge can affect the development process. • Knowledge acquisition is nonlinear – affects several of the software development models. • Risk assessment is important.
4. Rationale Management • Assumptions made about systems change constantly. • Application domain models stabilize, solution domain models are in constant flux. • Changes to the solution models due to: • design and implementation faults • new technology • Need to understand the context in which each design decision was made.