Professional Documents
Culture Documents
Software Engineering
Software Engineering
Good software should deliver the functionality and performance that the software users need
and should be maintainable, dependable, and usable.
Software specification
software development
software validation
software evolution
Roughly 60% of software costs are development costs, 40% are testing costs. For custom
software, evolution costs often exceed development costs.
Agile software development is a modern and iterative approach to software development that
prioritizes flexibility, collaboration, customer involvement, and incremental delivery of
working software. Agile methodologies, such as Scrum, Kanban, and Agile/Lean, are widely
used in software development projects to respond to changing requirements, improve team
productivity, and deliver high-quality software.
Cross-functional teams: Agile teams are typically composed of members with diverse
skills, such as developers, testers, designers, and business representatives, who work
collaboratively to deliver software.
Continuous integration and testing: Agile teams continuously integrate code changes
and conduct automated testing to ensure that the software is always in a releasable
state and of high quality.
Daily stand-up meetings: Agile teams typically hold short, daily stand-up meetings to
synchronize work, identify and address obstacles, and plan the day's work.
Visual management: Agile teams often use visual management techniques, such as
Kanban boards or task boards, to provide transparency and visibility into the status of
work items and progress.
Requirement engineering
It’s the process of eliciting, documenting, validating, and managing the needs, expectations,
and constraints of stakeholders for a software system or solution. It involves understanding
and defining the desired functionalities, performance, and characteristics of the system to be
developed or enhanced. Requirement engineering is a critical phase in the software
development lifecycle, as it lays the foundation for the successful development of a software
system that meets the needs of its intended users. The process includes activities such as
stakeholder identification, requirements gathering, documentation, prioritization, validation,
and management to ensure that the software system is built to satisfy the identified
requirements and deliver value to stakeholders.
Software engineering ethics