Yellow means important Ch 1 FSWE By Zahraa A • • • Software costs often dominate computer system (hardware) costs. Software costs more to maintain than it does to develop. Software engineering is concerned with cost-effective software development. Generic products D Software products * Customized products Stand-alone systems that are marketed and sold to any customer who wishes to buy them. • • PC software ( graphics programs) CAD software (software for specific markets such as appointments systems for dentists) The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer. Software that is commissioned by a specific customer to meet their own needs. • E.g. • • embedded control systems air traffic control software traffic monitoring systems The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required. Questions about software engineering MCQ Essential attributes of good software Y Maintainability Dependency and security Efficiency Es · i nowunctional Acceptability Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. All aspects of software production = Not just technical process of development. Also project management and the development of tools, methods etc. to support software production Software process activities A Software specification (defining what the system should do) Software development (implementing the system) Software validation (testing, checking that it does what the customer wants) Software evolution (maintenance) General issues that affect most software 1- Heterogeneity when systems are required to operate across a variety of computer and mobile devices. 2- Quick change of Business and social 3- Security and trust Application types 8 Q Stand-alone applications ⑫ Interactive transaction-based applications • • • Run on a local computer, such as a PC. They include all necessary functionality Do not need to be connected to a network • Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. E.g. web applications such as e-commerce applications. • ⑤ ⑭ Embedded control systems Control and manage hardware devices. Batch processing systems Process large numbers of individual inputs to create corresponding outputs. ⑤ Entertainment systems Designed for personal use and intended to entertain the user. ⑥ Systems for modeling ② Data collection systems Systems that collect data from their environment using a set of sensors and send that data to other systems for processing. ⑧ Systems of systems Systems that are composed of a number of other software systems. and simulation Developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. Software engineering fundamentals Some fundamental principles apply to all types of software system, irrespective of the development techniques used: • Systems should be developed using a managed and understood development process. • Dependability and performance • Understanding and managing the software specification and requirements • Reusing software that has already been developed rather than write new software. Issues of professional responsibility m Confidentiality Competence Intellectual property rights Computer misuse ACM/IEEE Code of Ethics (contains 8 Principles) Yellow means important Ch 2 FSWE By Zahraa A A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. • Software processes descriptions discusses the activities of these processes. • Process descriptions may also include: - Products (the outcomes of a process activity) - Roles (the responsibilities of the people involved in the process) - Pre- and post-conditions (statements that are true before and after a process activity has been enacted or a product produced) " Type of processes software Agile processes Plan-driven processes • • • Based around separate development stages. Output of each stage is planned in advance. Iteration occurs within activities. • Planning is incremental and it is easier to change the process to reflect changing customer requirements. • Specification, development and validation are interleaved E.g. waterfall model • Output from development process are decided through a process of negotiation. • Normal approach is used E.g. Incremental model Software process models / software development life cycle (SDLC) models Q Waterfall model • • • • • • • Plan-driven model. Separate and distinct phases of specification and development. Process activities organized in sequence. Only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Difficult to accommodate changes once the process is underway. Mostly used for large systems developed at several sites. Phases: ②Incremental development • • • Specification, development and validation are interleaved It’s agile ()ﻓﻲ اﻟﺴﻼﯾﺪز ﻣﻜﺘﻮب ﺑﻼن درﯾﻔﻦ ﺑﺮﺿﻮ ﺑﺲ اﻟﺪﻛﺘﻮرة ﺗﻘﻮل ﻛﺬا Benefits: - The cost of accommodating changing customer requirements is reduced. - It is easier to get customer feedback on the development work that has been done - More rapid delivery and deployment of useful software to the customer is possible. it is feasible to deliver and deploy software to customers more quickly and efficiently • Problems: - The process is not visible - System structure tends to degrade as new increments/updates are added. ③ Reuse-oriented software engineering • • • • Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf ) systems May be plan-driven or agile. Stages: Reuse is now the standard approach for building many types of business system Types of software component that may be used in a reuse-oriented process: 1. Web services that are developed according to service standards and which are available for remote invocation. 2. Collections of objects that are developed as a package to be integrated with a component framework such as .NET or J2EE. 3. Stand-alone software systems that are configured for use in a particular environment. - ⑪ Software prototyping: an initial version of a system used to demonstrate concepts and try out design options. Where to use it? • The requirements engineering process to help with requirements elicitation and validation • In design processes to explore options and develop a UI design • In the testing process to run back-to-back tests. Benefits: • Improved system usability. • A closer match to users’ real needs. • Improved design quality. • Improved maintainability. • Reduced development effort. Prototypes should be discarded after development as they are not a good basis for a production system: • It may be impossible for the system to meet non-functional requirements • Prototypes are normally undocumented • The prototype structure is usually degraded through rapid change • The prototype probably will not meet normal organizational quality standards. ⑤ Spiral model: Process is represented as a spiral, each loop in the spiral represents a phase in the process. Risks are explicitly assessed and resolved throughout the process. Spiral model sectors S Usage of spiral model: emphasizing iterative development and risk management. • The model is rarely used as it published for practical software development. Incremental delivery: the software is developed and delivered in small increments. Each increment delivering part of the required functionality. • User requirements are prioritised and the highest priority requirements are included in early increments. Incremental delivery Deploy an increment for end-users to use. - Incremental development Develop the system in increments and evaluate each increment before moving to the next increment. Provides a realistic evaluation of software in practical use. Evaluation done by Difficult to implement for user/customer proxy replacement systems Incremental delivery advantages • High-priority services receive more testing focus • Less risk • Customer value can be delivered with each increment • Early increments act as prototypes, helping gather requirements for later increments. Incremental delivery problems • It's challenging to identify common facilities that are needed by all increments. • The specification is developed in conjunction with the software 1. Process activities specification: The process of establishing what services are required and the constraints on the system’s operation and development. Activities in Requirements engineering process • Feasibility study • Requirements elicitation and analysis (needs of stakeholders) • Requirements specification • Requirements validation 2. Design and implementation: The process of converting the system specification into an executable system. Software design: Design a software structure that realises the specification Implementation: Translate this structure into an executable program Design Activities • Architectural design (identify the overall structure of the system) • Interface design (define the interfaces between system components) • Component design (design how each component will operate) • Database design (design the system data structures and how these are to be represented in a database) 3. Software validation ‘testing’: Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. • Stages: - Development or component testing (Individual components are tested independently) - System testing (Testing of the system as a whole.) - Acceptance testing (Testing with customer data) 4. Software evolution: change existing software systems to meet new requirements. • The software must evolve to remain useful. Rational Unified Process (RUD): A modern generic process derived from the work on the UML and associated process. Normally described from 3 perspectives ▪ A dynamic perspective that shows phases over time; ▪ A static perspective that shows process activities; ▪ A practive perspective that suggests good practice RUP phases: • inception • Elaboration • Construction • Transition RUP iteration : How to reduce the costs of rework? • Change avoidance: where the software process includes activities that can anticipate possible changes before significant rework is required. For example, a prototype system may be developed to show some key features of the system to customers. - • Change tolerance: where the process is designed so that changes can be accommodated at relatively low cost. - Normally involves some form of incremental development. /