In the process of development in a software system, software maintenance plays an important role to reduce cost and effort. As software release new version, maintenance becomes harder since the complexity is increasing. The first step of carrying out maintenance activities is understands the software events. Most of events are revealed in the history. We discovery these events for more understanding in events witch is occurred now. We provide an abstract and concrete architecture of software history. In abstract, the manager understands the events happened before. In concrete, the developer observes how each entity evolve. We concern the events and cohesions among software entities. Multiple sequence alignment gathers software features to blow up the position of these events. In the end of thesis, a case study is demonstrated to prove that maintenance is achieved by focus on software events.