Software engineering is important for developing complex systems through a disciplined approach. It aims to ensure software has both functional attributes of what the system does as well as non-functional attributes of how the system works regarding qualities like maintainability, dependability, efficiency, and usability. Some key challenges software engineering faces include dealing with heterogeneous environments and platforms, delivering software in shorter times without compromising quality, and ensuring software can be trusted by users.
Software engineering is important for developing complex systems through a disciplined approach. It aims to ensure software has both functional attributes of what the system does as well as non-functional attributes of how the system works regarding qualities like maintainability, dependability, efficiency, and usability. Some key challenges software engineering faces include dealing with heterogeneous environments and platforms, delivering software in shorter times without compromising quality, and ensuring software can be trusted by users.
Software engineering is important for developing complex systems through a disciplined approach. It aims to ensure software has both functional attributes of what the system does as well as non-functional attributes of how the system works regarding qualities like maintainability, dependability, efficiency, and usability. Some key challenges software engineering faces include dealing with heterogeneous environments and platforms, delivering software in shorter times without compromising quality, and ensuring software can be trusted by users.
Complex systems need a disciplined approach for designing,
developing and managing them. 2
Attributes of good software
Functional attributes (performance; what the system does).
Non-functional attributes (quality; how the system does it).
Product Characteristic Description
Maintainability Evolution qualities such as Testability, extensibility. Dependability Reliability, security, safety. Efficiency Response time, processing time, memory utilization. Usability Easy to learn how to use the system by target users. Efficient to use the system by users to accomplish a task. Satisfying to use by intended users. 3
Challenges facing software engineering
Challenge Why? Software needs to ..
Different computers, different
Heterogeneity platforms, different support systems. Cope with this variability.
Businesses are more responsive
Be delivered in shorter time Delivery supporting software needs to without compromising quality. evolve as rapidly.
Software is a part of many aspects of
Demonstrate that it can be Trust our lives (work, study, leisure). trusted by users. 4 5 6 Configuration management • New versions of software systems are created as they change: – For different machines/OS; – Offering different functionality; – Tailored for particular user requirements. • Configuration management is concerned with managing evolving software systems: – System change is a team activity; – CM aims to control the costs and effort involved in making changes to the software system and associated documentation. Configuration management • Involves the development and application of procedures and standards to manage an evolving software product. • CM may be part of a more general quality management process. • When released to CM, software systems are sometimes called baselines as they are a starting point for further development. Software Metrics