Our work on Requirements Engineering spans from requirements identification techniques to the evaluation of their specifications. We focus on novel software modularity techniques and the volatile nature of requirements to support evolution, on the role of organisational objectives to express intentional goals with impact on stakeholders’ expectations, and on the quality of requirements and software models in terms of correctness, complexity, completeness and understandability. Results from this research have been published in top conferences (e.g. RE, CAiSE) and journals (e.g. REJ, SQJ, Software: P&E). Our work on Quality Models won a Best Paper Award at CAiSE in 2014. Also, we played a key role in the development of the AOSD and Modularity community since 2002. Our highly cited seminal work on aspect-oriented composition of software properties won the Most Influential Paper Award at the Modularity conference in 2013.Concurrency and communication are pervasive in modern software, but development tools still fail to support them, causing failures in protocol and service compliance or timing errors in resource usage and calling for novel programming abstractions and analysis methods. We introduced “Conversation types”, allowing multiparty interactions to be type-checked for deadlock-freedom and protocol compliance, leading to high impact publications. We have also developed type-based techniques to certify interface contracts, and analyse the behaviour of distributed transactions. Our works on deadlock-free session protocols is considered a seminal work on linear and session types, being the most cited CONCUR paper since 2010. We also developed new techniques to analyse concurrent programs manipulating shared state, based on behavioural types. This research has been developed in collaboration with CMU, INRIA, Imperial College, and Glasgow, and has led to publicly available prototypes, and highly visible publications in top venues such as POPL, ESOP, ECOOP, Inf&Comp, and ACM Surveys.