Software engineering is concerned with the development of significant software systems on time, on budget, with acceptable performance and correct operation. It aims to develop theories, methods and tools for professional software development. Software costs, which often dominate system costs, are a major concern of software engineering as maintenance costs more than development. The software engineering process involves activities like specification, design, validation and evolution which vary depending on the type of system but must be explicitly modeled and managed. Professional responsibilities of software engineers include not just technical concerns but also ethical, social and wider issues.