بنك األسئلة لإلجابة قبل االختبار الفصلي True (√) or False (X) Software engineering is about managing all the sources of complexity to produce effective software Engineering is the application of scientific principles and methods to the construction of useful structures & machines Software is malleable Software construction is human-intensive Software is intangible and generally invisible Software problems are unprecedentedly complex Software directly depends upon the hardware Software solutions require unusual rigor Software “state” means behaviors can depend on history. Software has discontinuous operational nature Cite three goals of software engineering Software engineers should: adopt a systematic and organised approach to all aspects of software development. Understand and communicate processes for improved software development within their organization Be effective team members and/or leaders. Can be very technical or more managerial depending on organizational need. Use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available What is the difference between software engineering and computer science? What is the difference between software engineering and system engineering? Software programming (SP) or Software engineering (SE) Single developer “Toy” applications Short lifespan Single or few stakeholders One-of-a-kind systems Built from scratch Minimal maintenance Teams of developers with multiple roles Complex systems Indefinite lifespan Numerous stakeholders System families Reuse to amortize costs Maintenance accounts for 60%-80% of overall development costs Give the difference between Product vs. Process Qualities Tri Software Development Stages Requirements Analysis & Specification Conceptual/System/Architectural Design Detailed/Program Design Implementation/Coding Unit & Integration Testing System Testing/Validation System Delivery/Deployment Maintenance Cite at least three Software Lifecycle Models. Models those cited. When we choose the evolutionary development Tri the Process stages of Component-based software engineering Component analysis; Requirements modification; System design with reuse; Development and integration. Cite the definition of : Extreme programming Software specification Software design Implementation Cite at least four Design process activities : Give the difference between Architecture vs. Design Analysis (A) or Testing (T) – Static – “Science” – Formal verification – Informal reviews and walkthroughs – Dynamic – “Engineering” – White box vs. black box – Structural vs. behavioral – Issues of test adequacy Cite the different Testing stages Cite the Difficulties of Maintenance & Evolution of SE للحفظ Definition of Critical Attributes: • Maintainability - possible to evolve software to meet changing needs • Dependability - includes range of characteristics: reliability, security and safety; should not cause physical or economic damage in the event of system failure • Efficiency - should not make wasteful use of system resources such as memory and process cycles • Usability - should have appropriate user interface and adequate documentation External qualities are visible to the user • reliability, usability, efficiency (maybe), robustness, scalability Internal qualities are the concern of developers • they help developers achieve external qualities • verifiability, maintainability, extensibility, evolvability, adaptability, portability, testability, reusability Process Attributes: • Understandability - To what extent is the process explicitly defined and how easy is it to understand? • Visibility - Do the process activities culminate in clear results so that the progress of the process is externally visible? • Supportability - To what extent can the process activities be supported by CASE tools? • Acceptability - acceptable and usable by engineers? • Reliability - Is the process designed in such a way that process errors are avoided or trapped before they result in product errors? • Robustness - Can the process continue in spite of unexpected problems? • Maintainability - Can the process evolve to reflect changing organizational requirements or identified process improvements? • Rapidity - How fast can the process of delivering a system from given specification be completed?